{"version":3,"file":"main.43d5704bd4f3e080.js","mappings":"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sCACC,wEACDC,sCAAuC,mDACvCC,sCAAuC,mDACvCC,sCAAuC,mDACvCC,sCAAuC,mDACvCC,sCAAuC,mDACvCC,sCAAuC,mDACvCC,sCAAuC,mDACvCC,sCAAuC,mDACvCC,sCACC,oEACDC,sCACC,oEACDC,sCAAuC,8BACvCC,sCAAuC,8BACvCC,sCAAuC,8BACvCC,sCAAuC,8BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,2BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC,0BACvCC,sCAAuC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,CACpDC,8BAA+B,CAC9BvqL,aAAc,wBACdm/G,YAAa,yDACb8uB,YAAa,GAAG87C,qBAChB77C,YAAa,QACb33C,UACA1vF,QAED2jL,uBAAwB,CACvBxqL,aAAc,YACdm/G,YAAa,+CACb8uB,YAAa,GAAG87C,uBAChB77C,YAAa,QACb33C,UACA1vF,QAED4jL,6BAA8B,CAC7BzqL,aAAc,gBACdm/G,YAAa,qCACb8uB,YAAa,GAAG87C,2BAChB77C,YAAa,QACb33C,UACA1vF,QAED6jL,mBAAoB,CACnB1qL,aAAc,WACdm/G,YAAa,gCACb8uB,YAAa,GAAG87C,sBAChB77C,YAAa,QACb33C,UACA1vF,QAED8jL,yBAA0B,CACzB3qL,aAAc,oBACdm/G,YAAa,8CACb8uB,YAAa,GAAG87C,sBAChB77C,YAAa,QACb33C,UACA1vF,QAED+jL,sBAAuB,CACtB5qL,aAAc,uBACdm/G,YAAa,iDACb8uB,YAAa,GAAG87C,yBAChB77C,YAAa,QACb33C,UACA1vF,QAEDgkL,wBAAyB,CACxB7qL,aAAc,wBACdm/G,YAAa,yCACb8uB,YAAa,GAAG87C,qBAChB77C,YAAa,QACb33C,UACA1vF,QAEDikL,6BAA8B,CAC7B9qL,aAAc,mBACdm/G,YAAa,iEACb8uB,YAAa,GAAG87C,wBAChB77C,YAAa,QACb33C,UACA1vF,QAEDkkL,mCAAoC,CACnC/qL,aAAc,mEACdm/G,YACC,gIACD8uB,YAAa,GAAG87C,6BAChB77C,YAAa,UACb33C,UACA1vF,QAEDmkL,kBAAmB,CAClBhrL,aAAc,wBACdm/G,YAAa,4CACb8uB,YAAa,GAAG87C,qBAChB77C,YAAa,SACb33C,UACA1vF,QAEDokL,6BAA8B,CAC7BjrL,aAAc,4EACdm/G,YAAa,2EACb8uB,YAAa,GAAG87C,6BAChB77C,YAAa,UACb33C,UACA1vF,QAEDqkL,iCAAkC,CACjClrL,aACC,qGACDm/G,YAAa,8EACb8uB,YAAa,GAAG87C,iCAChB77C,YAAa,UACb33C,UACA1vF,QAEDskL,+BAAgC,CAC/BnrL,aAAc,gCACdm/G,YAAa,mEACb8u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AAC+hO,QAEX,CAAEziO,QAASkmO,MAAkBllO,SAAUowH,IAE/C,iEc9PO,MCuBD7vH,GAAU,CACf+rD,KACA40C,MACAR,MACAykI,KACAv7C,KACAw7C,MACAC,MACA94K,MACAs9H,MACAC,MACAw7C,MACAC,MACA57B,MACA67B,MACAC,MACAC,MACAvkI,MACAikG,MACAugC,KACAniC,KACAoiC,KACAC,MACAC,KACAC,MACAC,MACAnb,GACAob,KACAC,MACAC,MACAC,KACApB,IAGK1kO,GAAY,CACjB,CAAEtB,QAAS2oM,MAAoB3nM,SAAU,0BACzC,CAAEhB,QAASuiO,MAAaliO,SAAUiiO,GAAgB5hO,KAAM,CAAC+hO,QACzD,CAAEziO,QAASkmO,MAAkBllO,SD5DqB,CAClD6uH,MAAO,CACN61G,UAAW,cAEZ/uO,QAAS,CACR+uO,UAAW,aACXE,eAAgB,UAChBC,cAAe,aACfC,mBAAoB,iBCqDrB,CAAE9lO,QAASyiO,MAAiBzhO,SAAUoyN,IACtC,CACCpzN,QAASqnO,MACTrmO,SAAU,IACN,IAAIsmO,MACPC,mBAAmB,EACnBp9G,aAAa,EACb8gF,WAAW,EACX3kF,WAAY,yBAGd,CACCtmH,QAASwnO,MACTxmO,SAAU,CACTymO,UAAW,IACXp/K,SAAU,UAGZ,CACCroD,QAAS0nO,MACT1mO,SAAU,CACT2mO,gBAAiB,YAGnB,CACC3nO,QAAS4nO,MACT5mO,SAAU,CACT6mO,oBAAqB,UAWjB,IAAMn0M,GAAW,MAAlB,MAAOA,sDAAW,mCAAXA,IAAW,wCAFvBpyB,GAASC,QAAA,CAFTA,GAvEA+rD,KACA40C,MACAR,MACAykI,KACAv7C,KACAw7C,MACAC,MACA94K,MACAs9H,MACAC,MACAw7C,MACAC,MACA57B,MACA67B,MACAC,MACAC,MACAvkI,MACAikG,MACAugC,KACAniC,KACAoiC,KACAC,MACAC,KACAC,MACAC,MACAnb,GACAob,KACAC,MACAC,MACAC,KACApB,KAAgB,SA6CJtyM,EAAW,uYCjHlB,MAAOxG,EACL,qBAAOC,IAAkB26M,IAC/B,OAAO,IAAIC,KA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","names":["environment","production","beta","local","storeDomain","apiUrl","graphQLUrl","logging","cpUrl","spUrl","recaptcha","siteKey","invalidTimingValue","exp","ɵRuntimeError","ngDevMode","optimizeGroupPlayer","players","length","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","Map","postStyles","errors","normalizedKeyframes","previousOffset","previousKeyframe","forEach","kf","offset","get","isSameOffset","normalizedKeyframe","val","prop","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","set","push","animationFailed","listenOnPlayer","player","eventName","event","callback","onStart","copyAnimationEvent","onDone","onDestroy","e","phaseName","makeAnimationEvent","element","triggerName","fromState","toState","totalTime","disabled","data","_data","getOrSetDefaultValue","map","key","defaultValue","value","parseTimelineCommand","command","separatorPos","indexOf","substring","slice","documentElement","document","getParentElement","parent","parentNode","host","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","selector","multi","Array","from","querySelectorAll","elem","querySelector","NoopAnimationDriver","validateStyleProperty","getBodyNode","body","style","result","containsVendorPrefix","charAt","toUpperCase","query","computeStyle","animate","duration","delay","easing","previousPlayers","scrubberAccessRequested","static","__ngFactoryType__","i0","token","factory","ɵfac","AnimationDriver","AnimationStyleNormalizer","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","matches","match","_convertTimeValueToMS","parseFloat","unit","resolveTiming","timings","allowNegativeValues","hasOwnProperty","parseTimeExpression","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","splice","setStyles","styles","formerStyles","camelProp","dashCaseToCamelCase","has","eraseStyles","_","normalizeAnimationEntry","steps","isArray","sequence","PARAM_REGEX","RegExp","extractStyleParams","params","exec","lastIndex","interpolateParams","original","str","replace","varName","localVal","invalidParamValue","toString","DASH_CASE_REGEXP","input","m","visitDslNode","visitor","node","context","type","AnimationMetadataType","Trigger","visitTrigger","State","visitState","Transition","visitTransition","Sequence","visitSequence","Group","visitGroup","Animate","visitAnimate","Keyframes","visitKeyframes","Style","visitStyle","Reference","visitReference","AnimateChild","visitAnimateChild","AnimateRef","visitAnimateRef","Query","visitQuery","Stagger","visitStagger","invalidNodeType","window","getComputedStyle","DIMENSIONAL_PROP_SET","Set","WebAnimationsStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","trim","valAndSuffixMatch","invalidCssUnitValue","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","makeLambdaFromStates","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","driver","metadata","warnings","AnimationAstBuilderVisitor","build","_driver","constructor","this","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","name","invalidTrigger","definitions","def","stateDef","split","n","transition","invalidDefinition","options","styleAst","astParams","containsDynamicStyles","missingSubs","sub","add","size","invalidState","values","animation","matchers","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","alias","invalidTransitionAlias","invalidExpression","separator","expr","normalizeAnimationOptions","s","furthestTime","step","innerAst","Math","max","timingAst","constructTimingAst","makeTimingAst","strValue","some","v","ast","dynamic","currentAnimateTimings","styleMetadata","isEmpty","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","Object","entries","collectedEasing","styleData","delete","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","obj","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","limit","animateDuration","i","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","find","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","append","instructions","existingInstructions","clear","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","filter","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","ctx","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","abs","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","keys","_copyOptions","oldParams","newTime","target","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","time","results","elements","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_globalTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","properties","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","super","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","pow","round","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","fn","buildStyles","stateName","styler","undefined","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","userParams","defaults","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","fallbackTransition","balanceProperties","createFallbackTransition","containsQueries","matchTransition","f","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","register","id","registerFailed","_buildPlayer","create","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","destroy","_getPlayer","index","missingPlayer","listen","baseEvent","args","play","pause","reset","restart","finish","init","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","addClass","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","trigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","a","b","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","removeClass","deregister","entry","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","state","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","listener","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","destroyed","markedForDestroy","sort","d0","d1","p","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","unshift","registerTrigger","_fetchNamespace","stateValue","isElementNode","insertBefore","details","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","Promise","resolve","classList","contains","flush","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","root","className","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","j","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","triggerCallback","_queueEvent","hasStarted","getPosition","nodeType","cloakElement","oldValue","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","props","roots","rootMap","nodeSet","localRootMap","getRoot","remove","postEntry","preEntry","AnimationEngine","_transitionEngine","_timelineEngine","_triggerCache","doc","componentId","cacheKey","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","disable","process","property","action","eventPhase","cb","SpecialCasedStyles","_element","_startStyles","_endStyles","WeakMap","_state","_initialStyles","initialStyles","initialStylesByElement","start","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_duration","_delay","_initialized","_finished","_started","_destroyed","_finalKeyframe","_originalOnDoneFns","_originalOnStartFns","domPlayer","currentSnapshot","_onFinish","_preparePlayerBeforeStart","_triggerWebAnimation","onFinish","addEventListener","removeEventListener","_resetDomPlayerState","_convertKeyframesToObject","kfs","frame","fromEntries","cancel","methods","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","fill","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","DISABLE_ANIMATIONS_FLAG","BaseAnimationRenderer","delegate","_onDestroy","ɵtype","destroyNode","queueMicrotask","createElement","namespace","createComment","createText","appendChild","newChild","refChild","isMove","removeChild","oldChild","isHostElement","selectRootElement","selectorOrNode","preserveContent","nextSibling","setAttribute","el","removeAttribute","setStyle","flags","removeStyle","setProperty","setValue","AnimationRenderer","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","scheduleListenerCallback","AnimationRendererFactory","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","createRenderer","cache","renderer","onRendererDestroy","animationTriggers","begin","_scheduleCountTask","count","run","animationCallbacksBuffer","end","runOutsideAngular","InjectableAnimationEngine","ɵAnimationEngine","ngOnDestroy","DOCUMENT","i1","SHARED_ANIMATION_PROVIDERS","provide","ɵAnimationStyleNormalizer","useFactory","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","useClass","RendererFactory2","instantiateRendererFactory","zone","ɵAnimationRendererFactory","deps","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","useValue","BROWSER_NOOP_ANIMATIONS_PROVIDERS","BrowserAnimationsModule","withConfig","config","ngModule","providers","imports","BrowserModule","ApolloCache","assumeImmutableResults","getFragmentDoc","wrap","getFragmentQueryDocument","cacheSizes","WeakCache","prototype","batch","updateResult","_this","performTransaction","update","optimistic","recordOptimisticTransaction","transaction","optimisticId","transformDocument","transformForLink","identify","object","gc","modify","readQuery","read","__assign","rootId","readFragment","fragment","fragmentName","writeQuery","_a","__rest","write","assign","dataId","writeFragment","updateQuery","updateFragment","globalThis","__DEV__","getMemoryInternals","getApolloCacheMemoryInternals","MissingFieldError","_super","message","path","variables","call","missing","__proto__","__extends","Error","maybeDeepFreeze","deepFreeze","workSet","isNonNullObject","shallowFreeze","isFrozen","freeze","TypeError","getOwnPropertyNames","hasOwn","isNullish","defaultDataIdFromObject","__typename","_id","keyObject","concat","JSON","stringify","defaultConfig","dataIdFromObject","addTypename","resultCaching","canonizeResults","shouldCanonizeResults","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","selectionSetMatchesResult","selectionSet","every","item","selections","field","isField","shouldInclude","resultKeyNameFromField","storeValueIsStoreObject","isReference","extractFragmentContext","fragments","fragmentMap","createFragmentMap","getFragmentDefinitions","lookupFragment","lookup","EntityStore","Root","DELETE","delModifier","INVALIDATE","policies","group","rootIds","refs","getFieldValue","objectOrReference","__ref","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","makeReference","ref","merge","toObject","fieldName","depend","storeObject","rootTypenamesById","Layer","dependOnExistence","older","newer","existing","incoming","invariant","merged","DeepMerger","storeObjectReconciler","caching","fieldsToDirty_1","__exists","hasKeyArgs","dirty","fields","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","readField","fieldNameOrOptions","store","fieldValue","newValue","storage","getStorage","checkReference","warn","seenReference","someNonReference","_i","newValue_1","typename","getStoreFieldName","evict","evicted","extract","extraRootIds","getRootIdSet","__META","newData","rest_1","retain","release","ids","snapshot","findChildRefIds","idsToRemove","root_1","found_1","workSet_1","child","makeCacheKey","keyMaker","lookupArray","arguments","CacheGroup","d","resetCaching","dep","Trie","canUseWeakMap","makeDepKey","maybeDependOnExistenceOfEntity","entityId","supportsResultCaching","_b","seed","stump","Stump","storageTrie","addLayer","layerId","replay","removeLayer","ownStoreObject","parentStoreObject","equal","fromParent","apply","existingObject","incomingObject","existingValue","incomingValue","ObjectCanon","known","canUseWeakSet","WeakSet","pool","passes","keysByJSON","empty","admit","isKnown","isObjectOrArray","pass","copy","shallowCopy","getPrototypeOf","array","proto_1","array_1","sortedKeys","json","firstValueIndex_1","sorted","obj_1","execSelectionSetKeyArgs","StoreReader","knownResults","compact","canon","executeSelectionSet","peekArgs","other","peek","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","keyArgs","varString","executeSubSelectedArray","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","_c","returnPartialData","_d","getDefaultValues","getQueryDefinition","rootRef","execResult","getMainDefinition","canonicalStringify","firstMissing","complete","isFresh","latest","objectsToMerge","missingMerger","handleMissing","resultName","rootIdsByTypename","selection","addTypenameToDocument","added","getFragmentFromSelection","kind","Kind","FRAGMENT_SPREAD","newInvariantError","fragmentMatches","finalResult","mergeDeepArray","frozen","childResult","assertSelectionSetForIdValue","getTypenameFromStoreObject","tree","specifierInfoCache","lookupSpecifierInfo","spec","keyFieldsFnFromSpecifier","specifier","info","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extracted","extractKeyPath","extractKey","join","keyArgsFnFromSpecifier","keyArgsFn","collected","keyPath","firstKey","firstChar","variableName","varKeyPath","isNonEmptyArray","directives","directiveName_1","directiveArgs","argumentsObjectFromField","suffix","extractor","merger","getSpecifierPaths","reduce","toMerge","paths","paths_1","currentPath_1","normalize","reducer","argsFromFieldSpecifier","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","String","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","which","old","supertype","getSupertypeSet","subtype","policy_1","supertypes_1","regExp","fuzzy","test","fuzzySupertypes","rest","inbox","createIfMissing","fieldPolicies","supertypeSet","typeCondition","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","fuzzyString","fieldSpec","specifierOrString","storeKeyNameFromField","getStoreKeyName","readOptions","makeFieldFunctionOptions","cacheSlot","withValue","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","overwrite","readFieldArgs","stringifyForDisplay","eType","iType","getContextFlavor","clientOnly","deferred","flavored","flavors","StoreWriter","reader","writeToStore","operationDefinition","getOperationDefinition","makeProcessedFieldsMerger","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","warnAboutDataLoss","existingRef","incomingObj","getChild","parentType","typeDotName","childTypenames","includes","getTypenameFromResult","result_1","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","error","dataRef","sets","previous_1","mergeMergeTrees","mergeTreeIsEmpty","cloneDeep","fieldMap","limitingTrie","flatten","inheritedContext","visitedNode","visited","dir","if","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","pop","emptyMergeTreePool","left","right","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","addTypenameTransform","DocumentTransform","makeVar","txCount","normalizeConfig","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","maybeBroadcastWatch","c","broadcastWatch","restore","broadcast","broadcastWatches","diff","watch","recallCache","immediate","forgetCache","forget","print","resetCache","resetCaches","discardWatches","removeOptimistic","idToRemove","newOptimisticData","onWatchUpdated","perform","layer","alreadyDirty","addFragmentsToDocument","transform","lastDiff","fromOptimisticTransaction","getInMemoryCacheMemoryInternals","errorCodes","file","condition","handler","definition","global","ApolloErrorMessageHandler","msg","arg","ApolloLink","onError","errorHandler","operation","forward","Observable","observer","retriedSub","retriedResult","subscribe","next","graphQLErrors","response","bind","networkError","unsubscribe","ErrorLink","link","request","OperationBatcher","batchDebounce","batchInterval","batchMax","batchHandler","batchKey","batchesByKey","scheduledBatchTimerByKey","enqueueRequest","requestCopy","subscribers","observable","isFirstEnqueuedRequest","isFirstSubscriber","scheduleQueueConsumption","consumeQueue","subscription","operations","forwards","observables","nexts","completes","batchedObservable","of","rejecters","clearTimeout","setTimeout","BatchLink","fetchParams","_e","batcher","uri","method","withCredentials","includeQuery","includeExtensions","useMultipart","pick","prioritize","HttpLinkHandler","httpClient","requester","operationPrinter","Observable$1","getContext","url","useGETForQueries","isQuery","req","operationName","headers","extensions","createHeadersWithClientAwareness","HttpHeaders","clientAwareness","version","mergeHeaders","source","destination","getAll","fetch","extractFiles","shouldUseBody","isBatching","multipartInfo","shouldUseMultipart","files","bodyOrParams","clone","param","toLowerCase","form","FormData","observe","responseType","reportProgress","setContext","err","closed","op","HttpLink","providedIn","stripDetailFromTypename","endsWith","removeTimezonesFromDates","newItem","monthsArray","formattedDate","getDate","formattedHours","getHours","formattedMinutes","getMinutes","formattedSeconds","getSeconds","formattedMilliseconds","getMilliseconds","getFullYear","getMonth","GRAPHQL_API","InjectionToken","LOADING_MIDDLEWARE","GRAPHQL_CACHE","IS_PRODUCTION","createApollo","httpLink","loader","isProd","removeTimezoneMiddleware","typenameMiddleware","errorAfterware","apolloOnError","AtsGraphqlModule","forRoot","loadingService","APOLLO_OPTIONS","ApolloModule","MULTI_GUARD_CP_LOGIN","MULTI_GUARD_CP_CULTURE","routes","pathMatch","redirectTo","canActivate","children","component","CpViewComponent","CmFeatureGuard","CmLocalizationGuard","CmIntentGuard","loadChildren","__webpack_require__","then","CpLoginModule","features","runGuardsAndResolvers","all","CpPublicModule","CpHomeModule","CmAuthGuard","HubFeature","CandidateAccess","canActivateChild","CpCandidateRequirementsGuard","CpCertsModule","CpAchievementsModule","CredentialAchievements","CpProfileModule","CpHistoryModule","CpBenefitsModule","CpScheduleModule","CandidateAccessIntegrationEgressTestWise","CandidateAccessIntegrationEgressPearsonVue","ExamScheduling","ExamAppointments","CpShareModule","ECommerceRoutes","Ecommerce","CpCatalogsModule","CpLogoutComponent","AuthorizeRoutes","loadComponent","NotFoundPageComponent","SessionExpiredComponent","AccessDeniedComponent","ErrorPageComponent","CpRoutingModule","MultiGuardFactory","createInstance","CmUnauthenticatedGuard","CmPublicFeaturesGuard","LanguageParamGuard","ExistingCultureGuard","RouterModule","initialNavigation","scrollPositionRestoration","AtsOverlayContainerDirective","overlayRef","atsCreateContainer","selectors","standalone","RTL_CULTURE_CODES","RtlSupportComponent","rendererFactory","cultureService","destroyRef","ngOnInit","culture$","pipe","takeUntilDestroyed","culture","setDocumentLanguage","code","addDocumentDirection","isRtl","lang","decls","vars","template","rf","encapsulation","AppComponent","notifications","loading$","consts","LoadingMiddleware","events","apolloLoad","handleLoadingChange","apolloUnload","throwError","APOLLO_CACHE_CONFIG","getEnvironment","portal","PortalType","CandidatePortal","loadErrorMessages","loadErrorMessageHandler","setErrorMessageHandler","errorCodes_1","settingsConfig","baseUrl","env","cultureConfig","api","clientConfig","ENABLE_LANGUAGE_PARAM","AppModule","bootstrap","SETTINGS_CONFIG","CULTURE_SERVICE_CONFIG","CLIENT_SERVICE_CONFIG","provideAppInitializer","cultureInitializer","inject","CultureService","clientInitializer","ClientService","CmEventService","OverlayContainer","AtsOverlayContainer","MAT_SORT_DEFAULT_OPTIONS","disableClear","DEFAULT_PAGE_TITLE_KEY","DEFAULT_PAGE_TITLE_VALUE","STORAGE_DOMAIN","LOG_CONFIG","logApi","logLevel","LogLevel","Trace","ErrorHandler","CmErrorHandler","LoggingService","CpUserService","CmFormErrorService","SettingsService","Platform","ViewportScroller","CmViewportScroller","RECAPTCHA_SETTINGS","provideHttpClient","withInterceptorsFromDi","CmCoreModule","PortalTypeEnum","AtsStoreModule","StorageModule","CpCoreModule","CpUiModule","AtsLoggerModule","AtsNotificationModule","AtsUiModule","AtsUtilityModule","splitPascalExceptions","CM_SPLIT_PASCAL_EXCEPTIONS","LocalizationModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","catch","console","CEProgressStatus","Started","InProgress","Completed","SponsorPortal","InternalPortal","BadgeType","C","E","R","BcatGrantType","Manual","OncePerCcat","OncePerCcatAchievedLogic","OncePerCcatAchievement","OncePerCcatList","BcatType","Download","Lineup","StampedPdf","TokenGlobal","TokenUnique","Url","BenefitStatus","Active","Expired","Used","CateidType","Ccat","Crcat","Excat","ExcatDataProvider","CcatExtensionType","ExtendFromInactiveDate","IncludeSuspendedTime","Normal","CcatPathType","OneShot","OneShotExtendable","Repeatable","CertAgreementStatus","InactiveAgreementAvailable","NoActiveAgreementAvailable","Signed","Unsigned","CertCatalogStatus","Future","Retired","Sunset","CertLogicItemType","Folder","CertLogicType","Initial","Miscellaneous","Recertification","CertStatus","Deleted","Suspended","CfcRule","CcatAchieved","CcatActive","CcatExpired","CcatInactive","CcatSuspended","ClaListItems","CrcatAchieved","CrcatActive","CrcatInactive","ExcatFailed","ExcatPassed","ExcatTaken","IcCodeAddr1","StandingAchieved","StandingActive","StandingInactive","ChType","InitialCert","LinkedExtension","LinkedSuspendedExtension","ManualCertAdjust","ManualCertAdjustNle","ManualCertCreate","ManualCertCreateNle","ManualCertExtend","ManualCertExtendNle","ManualCertReduce","ManualCertReduceNle","NormalExtension","SuspendedExtension","ChistType","AccommEdit","AuthEdit","BadgeEmailRemoval","BenefitEdit","BenefitVoucherEdit","CandidateApiAuthChange","CandidateBanning","CandidateEdit","CandidateEligAgrSigned","CandidateEmailAddrReset","CandidateExtBadgeRestrict","CandidateExtIdMove","CandidateGdpr","CandidateLogin","CandidateLogoAgrSigned","CandidateLogout","CandidateMerge","CandidatePrivacyNotice","CandidatePwdReset","CandidateRestrictTesting","CandidateWatch","CertEdit","CertLogoDownload","CertRegression","Comment","CookieAgrSigned","CreqEdit","CxEdit","ExamBulkUpload","ExamEdit","ExamEventEdit","ExamExtSecurityEvent","ExamReviewNote","ExamScoreReportDownload","ExamViolationEdit","ExamVoucherEdit","ExternalComment","FulfillmentCreate","FulfillmentEdit","FulfillmentElectronicDownload","OtherAchEdit","QstnrComment","QstnrEdit","QstnrItemApproved","QstnrItemEdit","QstnrPaidApplication","QstnrStatusChange","SecurityNote","StandingsDownload","VignetteEdit","CmSearchMethodEnum","Contains","EndsWith","Equals","GreaterThan","GreaterThanOrEquals","LessThan","LessThanOrEquals","StartsWith","CprState","Broadcast","Complete","Queued","Rejected","Requested","CprType","CertRebuild","CertRebuildBulk","Invalid","Maintenance","ManualAdjustment","ManualCertify","ManualExtension","ManualReduction","NormalInRebuild","NormalWithoutTree","CrcatType","AdditionalAgreement","CeActivity","CertAgreement","Enrollment","ExternalCert","ExternalExam","Lab","Participation","ProgramFee","StandingLengthyCert","StandingMultiCert","Training","CreqReviewState","None","PendingPostReview","PendingPreReview","Reviewed","UnderReview","CreqStatus","InActive","CtranAddrDisplay","Addr1","Addr2","LocAddr1","EligibleExamActionType","LiteweightRecertify","Schedule","EmrState","EtState","Failure","Pending","Success","Void","EticatType","Fcat","ExamCatalogStatus","Beta","Inactive","ExamGradeLabel","Fail","Pass","Ungraded","ExamState","Corrupted","Hidden","Ok","ExapReviewState","Approved","Denied","Revoked","ExauthState","ExevtType","Aborted","ApptOk","Canceled","Exam","NoShow","FcatQueueType","EachNewItem","Never","Once","FulfStatus","Failed","Null","AwsCustomReports","AwsCustomReportsVerifyVoucherCode","AddCandidateId","AnnouncementPage","Announcements","Benefit","BenefitBrandViaVmware","BenefitLineup","BenefitRecentActivity","BulkCandidateTools","CandidateAccessBannedLandingPage","CandidateAccessCandidatePortalDefaultView","CandidateAccessCmIdCpNavigation","CandidateAccessIntegration","CandidateAccessIntegrationEgress","CandidateAccessIntegrationEgressBrandvia","CandidateAccessIntegrationEgressCaveon","CandidateAccessIntegrationEgressCaveonScheduling","CandidateAccessIntegrationEgressCaveonSchedulingCancel","CandidateAccessIntegrationEgressCaveonSchedulingReschedule","CandidateAccessIntegrationEgressCaveonSchedulingSchedule","CandidateAccessIntegrationEgressCaveonSchedulingView","CandidateAccessIntegrationEgressCaveonSchedulingViewAppointments","CandidateAccessIntegrationEgressExamity","CandidateAccessIntegrationEgressExamityScheduling","CandidateAccessIntegrationEgressExamitySchedulingCancel","CandidateAccessIntegrationEgressExamitySchedulingReschedule","CandidateAccessIntegrationEgressExamitySchedulingSchedule","CandidateAccessIntegrationEgressExamitySchedulingView","CandidateAccessIntegrationEgressExamitySchedulingViewAppointments","CandidateAccessIntegrationEgressKryterion","CandidateAccessIntegrationEgressKryterionScheduling","CandidateAccessIntegrationEgressKryterionSchedulingCancel","CandidateAccessIntegrationEgressKryterionSchedulingReschedule","CandidateAccessIntegrationEgressKryterionSchedulingSchedule","CandidateAccessIntegrationEgressKryterionSchedulingView","CandidateAccessIntegrationEgressKryterionSchedulingViewAppointments","CandidateAccessIntegrationEgressOidcEgress","CandidateAccessIntegrationEgressOidcEgressCertiverse","CandidateAccessIntegrationEgressOidcEgressCertiverseScheduling","CandidateAccessIntegrationEgressPearsonVueScheduling","CandidateAccessIntegrationEgressPearsonVueSchedulingCancel","CandidateAccessIntegrationEgressPearsonVueSchedulingReschedule","CandidateAccessIntegrationEgressPearsonVueSchedulingSchedule","CandidateAccessIntegrationEgressPearsonVueSchedulingView","CandidateAccessIntegrationEgressPearsonVueSchedulingViewAppointments","CandidateAccessIntegrationEgressPsi","CandidateAccessIntegrationEgressPsiScheduling","CandidateAccessIntegrationEgressPsiSchedulingCancel","CandidateAccessIntegrationEgressPsiSchedulingReschedule","CandidateAccessIntegrationEgressPsiSchedulingSchedule","CandidateAccessIntegrationEgressPsiSchedulingView","CandidateAccessIntegrationEgressPsiSchedulingViewAppointments","CandidateAccessIntegrationEgressQualified","CandidateAccessIntegrationEgressQualifiedScheduling","CandidateAccessIntegrationEgressQualifiedSchedulingCancel","CandidateAccessIntegrationEgressQualifiedSchedulingReschedule","CandidateAccessIntegrationEgressQualifiedSchedulingSchedule","CandidateAccessIntegrationEgressQualifiedSchedulingView","CandidateAccessIntegrationEgressQualifiedSchedulingViewAppointments","CandidateAccessIntegrationEgressTestrun","CandidateAccessIntegrationEgressXvoucher","CandidateAccessIntegrationEgressZendesk","CandidateAccessIntegrationIngress","CandidateAccessIntegrationIngressJwt","CandidateAccessIntegrationIngressOidc","CandidateAccessIntegrationIngressOidcLogIdToken","CandidateAccessIntegrationIngressWsTrust","CandidateAccessIntegrationXvoucherSsoEgress","CandidateAccessLogin","CandidateAccessLoginChangePassword","CandidateAccessLoginEmcEmployeeRegistration","CandidateAccessLoginEmcOtherAchievements","CandidateAccessLoginEmail","CandidateAccessLoginSelfRegistration","CandidateAccessLoginUsernameOrEmail","CandidateAccessShowCertProgress","CandidatePreferences","CandidatePreferencesCandidateDirectory","CandidatePreferencesCandidateEmailLanguage","CandidatePreferencesDisableEmails","CandidatePreferencesThirdPartyApiAccess","CandidateProfile","CandidateProfileAddresses","CandidateProfileAddressesLocalized","CandidateProfileAddressesPrimary","CandidateProfileAddressesPrimaryRequireMinimum","CandidateProfileAddressesSecondary","CandidateProfileCustomData","CandidateProfileCustomDataAttributes","CandidateProfileCustomDataSettings","CandidateProfileDateOfBirth","CandidateProfileEducation","CandidateProfileExternalIds","CandidateProfileLocalizedInformation","CandidateProfileManageCandidateId","CandidateProfilePrimaryInformation","CandidateProfilePrimaryInformationAffiliation","CandidateProfilePrimaryInformationAffiliationRequired","CandidateProfilePrimaryInformationDuplicatePhoneNumberQueue","CandidateProfilePrimaryInformationEmailCandidateEdit","CandidateProfilePrimaryInformationNameUpdate","CandidateProfilePrimaryInformationPreferredName","CandidateProfilePrimaryInformationPreferredNameCandidateEdit","CandidateProfilePrimaryInformationRequireEmailConfirmation","CandidateProfilePrimaryInformationRequireMinimum","CandidateProfilePrimaryInformationRequireNameVerification","CandidateProfilePrimaryInformationRequireRomanizedName","CandidateProfileWorkHistory","CandidateSegmentation","CiscoCustomPermissions","CiscoCustomReports","CiscoCustomReportsNetAcad","CiscoCustomReportsTpm","ClientSettingsModify","Core","Credential","CredentialAchievementsCertificate","CredentialAchievementsLogoDownload","CredentialAchievementsRecentActivity","CredentialAgreement","CredentialAgreementAtLogin","CredentialContinuingEducation","CredentialContinuingEducationCeCourseName","CredentialContinuingEducationCeMaxPoints","CredentialContinuingEducationCeProgress","CredentialContinuingEducationHideTracks","CredentialCredentialShowInactiveDate","CredentialElectronicCertificate","CredentialElectronicCertificateBatch","CredentialElectronicCertificatePublicDownload","CredentialFulfillment","CredentialFulfillmentRecentActivity","CredentialFulfillmentSuppressFulfillmentBanner","CredentialFulfillmentSuppressQueueTypeNever","CredentialHideCertLogic","CredentialLogoDownload","CredentialLogoDownloadAgreement","CredentialProgramNumber","CredentialRecentActivity","CredentialUrl","CredentialUseStarted","CredentialVerification","EcommerceFulfillment","EcommerceOtherRequirement","EcommerceShowTransactionHistory","EcommerceXvoucher","ExamAccommodations","ExamAccommodationsCandidateSelfSelect","ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments","ExamAuthorization","ExamAutoGenerateRegistrationNumber","ExamCertMetricsVouchers","ExamComptiaAnsiCriteria","ExamEnableDataProviders","ExamFacebookExamScheduling","ExamInformationUrl","ExamMsftExamDetails","ExamNcarbCertBatching","ExamNcarbExamAuthorizations","ExamNcarbHideExamExpireDate","ExamRecentActivity","ExamSchedulingIntellum","ExamSchedulingUrl","ExamSchedulingNcarb","ExamSchedulingNcarbAccommodations","ExamSchedulingNcarbAuthorizationDetail","ExamScoreReports","ExamScoreReportsBatch","ExamSectionCatalog","ExamSecurity","ExamShowExpireDate","ExamShowScaledScore","ExamTestCenterRestriction","ExamVerification","Jurisdictions","MergeCandidates","MergeCandidatesCandidateSelfMerge","MergeCandidatesCandidateSelfMergeCandidateSelfMergeNonMatching","MergeCandidatesMergeQueueAttributeData","NcarbCustomHideCatalogs","NcarbHideCandidateDemographicPages","NcarbHideSponsorSettings","NcarbJurisdictions","NcarbReports","OtherRequirement","OtherRequirementAdvancedSelection","OtherRequirementAtlassianCredentialUploadCandidateAccess","OtherRequirementInformationUrl","OtherRequirementLiteWeightRecertifyFacebook","OtherRequirementRecentActivity","OtherRequirementSchedulingUrl","OtherRequirementShowOverrideName","OtherRequirementUpload","OtherRequirementUploadCandidateAccess","OtherRequirementUploadCandidateAccessAudits","OtherRequirementUploadCandidateAccessInitialCertification","OtherRequirementUploadCandidateAccessMiscellaneous","OtherRequirementUploadCandidateAccessRecertification","OtherRequirementVouchers","Questionnaires","Reports","ReportsAdvanced","ReportsStandard","ReportsStandardContinuingEducation","ReportsStandardCredentialAchievement","ReportsStandardDell","ReportsStandardExamEligibility","ReportsStandardFinancial","ReportsStandardMicrosoft","ReportsStandardPsychometric","ReportsStandardQuestionnaire","ReportsStandardQuestionnaireDetail","ReportsStandardSecurity","ReportsStandardStandardBadge","ReportsStandardStandardBenefit","ReportsStandardStandardCredential","ReportsStandardStandardDemographic","ReportsStandardStandardExam","ReportsStandardStandardFulfillment","Share","ShareAccredibleBadging","ShareAccredibleBadgingSso","ShareCertMetricsBadging","ShareCertMetricsBadgingFacebook","ShareCertMetricsBadgingLinkedin","ShareCertMetricsBadgingTwitter","ShareCredlyBadging","ShareCredlyBadgingSso","ShareTranscript","ShareTranscriptAllowAchievements","ShareTranscriptAllowCredentials","ShareTranscriptAllowExams","ShareTranscriptAllowOtherRequirements","ShareTranscriptShowCredentialInactiveDate","SnowflakeDisplayBadgeId","Tagging","Tools","ToolsNcarbTools","UploadExamsTool","UserAccess","UserAccessIntegration","UserAccessIntegrationJwt","UserAccessIntegrationOidc","UserAccessIntegrationOidcLogIdToken","UserAccessIntegrationWsTrust","UserTwoStepAuthentication","ValidationCodeVerification","VmwareExamVoucherVerification","VmwareItsScoreReports","HubPermission","AccredibleBadgingAdminModify","AccredibleBadgingAdminView","AccredibleBadgingCandidateSettingsView","AccredibleBadgingCatalogView","AffiliationCatalogModify","AffiliationCatalogView","AnnouncementsCatalogModify","AnnouncementsCatalogView","BannedCandidateListView","BenefitCatalogModify","BenefitCatalogView","CandidateAffiliationModify","CandidateAffiliationView","CandidateBannedStatusModify","CandidateBannedStatusView","CandidateBenefitModify","CandidateBenefitView","CandidateCertMetricsBadgingView","CandidateCredentialAchievementsView","CandidateCredentialAgreementsModify","CandidateCredentialAgreementsView","CandidateCredentialDetailsModify","CandidateCredentialDetailsView","CandidateCredentialFulfillmentModify","CandidateCredentialFulfillmentView","CandidateCredentialsView","CandidateCredlyBadgingSettingsView","CandidateDateOfBirthMOdify","CandidateDateOfBirthView","CandidateElectronicCertificateView","CandidateEmailHistoryModify","CandidateEmailHistoryView","CandidateEmailPreferencesModify","CandidateEmailPreferencesToggleView","CandidateEmailPreferencesView","CandidateExamDetailsModify","CandidateExamDetailsView","CandidateExamEventsView","CandidateExamImagesView","CandidateExamKeyView","CandidateExamScoringModify","CandidateExamScoringView","CandidateExamViolationsModify","CandidateExamViolationsView","CandidateExamsView","CandidateHistoryModify","CandidateHistoryView","CandidateImportSettingsModify","CandidateImportSettingsView","CandidateMergeCreate","CandidateMergeDetailsModify","CandidateMergeDetailsView","CandidateMergeHistoryView","CandidateMergeSettingsModify","CandidateMergeSettingsView","CandidateOtherAchievementModify","CandidateOtherAchievementView","CandidateProfileCreate","CandidateProfileLocalizedAddressModify","CandidateProfileLocalizedAddressView","CandidateProfileLocalizedInformationModify","CandidateProfileLocalizedInformationView","CandidateProfileManageCandidateIdModify","CandidateProfilePreferredNameModify","CandidateProfilePreferredNameView","CandidateProfilePrimaryAddressModify","CandidateProfilePrimaryAddressView","CandidateProfilePrimaryInformationModify","CandidateProfilePrimaryInformationNamesModify","CandidateProfilePrimaryInformationView","CandidateProfileSecondaryAddressModify","CandidateProfileSecondaryAddressView","CandidateReassignData","CandidateRequirementsAdditionalAgreementModify","CandidateRequirementsAdditionalAgreementView","CandidateRequirementsContinuingEducationModify","CandidateRequirementsContinuingEducationView","CandidateRequirementsEnrollmentModify","CandidateRequirementsEnrollmentView","CandidateRequirementsExternalCertModify","CandidateRequirementsExternalCertView","CandidateRequirementsExternalExamModify","CandidateRequirementsExternalExamView","CandidateRequirementsLabModify","CandidateRequirementsLabView","CandidateRequirementsMiscellaneousModify","CandidateRequirementsMiscellaneousView","CandidateRequirementsParticipationModify","CandidateRequirementsParticipationView","CandidateRequirementsProgramFeeModify","CandidateRequirementsProgramFeeView","CandidateRequirementsTrainingModify","CandidateRequirementsTrainingView","CandidateSearch","CandidateSecuritySettingsPasswordModify","CandidateSecuritySettingsView","CandidateSegmentationModify","CandidateSegmentationView","CandidateSponsorSettingsAttributesModify","CandidateSponsorSettingsAttributesView","CandidateSponsorSettingsSettingsModify","CandidateSponsorSettingsSettingsView","CandidateTranscriptsView","CandidateWatchStatusModify","CandidateWatchStatusView","CertMetricsBadgingCatalogModify","CertMetricsBadgingCatalogView","CiscoCustomPermissionForQlikSurveyApp","CiscoCustomPermissionForSsrsCandidateMergeReport","CiscoCustomReportNetAcadModify","CiscoCustomReportNetAcadView","CiscoCustomReportTpmModify","CiscoCustomReportTpmView","ClientSettingsView","CredentialAchievementsCatalogModify","CredentialAchievementsCatalogView","CredentialAgreementsCatalogModify","CredentialAgreementsCatalogView","CredentialCatalogModify","CredentialCatalogView","CredentialFulfillmentCatalogView","CredlyAdminModify","CredlyAdminView","CredlyCatalogView","DuplicateCandidatesAffiliationIdView","DuplicateCandidatesDemographicsView","DuplicateCandidatesEmailView","DuplicateCandidatesPhoneView","EcommerceCatalogView","EcommerceTransactionsModify","EcommerceTransactionsView","EmailCatalogModify","EmailCatalogView","ExamAccommodationsModify","ExamAccommodationsView","ExamAppointmentsModify","ExamAppointmentsView","ExamAuthorizationsModify","ExamAuthorizationsView","ExamCatalogItemsKeyView","ExamCatalogItemsModify","ExamCatalogItemsView","ExamCatalogModify","ExamCatalogSectionsModify","ExamCatalogSectionsView","ExamCatalogView","ExamCertMetricsVouchersModify","ExamCertMetricsVouchersView","ExamRecentImportListView","ExamRecentReimportListView","ExamReviewListView","ExamSchedulingView","ExamUploadExamsToolModify","ExamUploadExamsToolView","ImpersonateCandidate","ImportActivityView","JurisdictionsModify","JurisdictionsView","MergeListView","NcarbJurisdictionsExamScoreReports","NcarbExamAuthorizationsModify","NcarbExamAuthorizationsView","NcarbScoreReportsBatchedDownloadsModify","NcarbScoreReportsBatchedDownloadsView","OtherAchievementCatalogModify","OtherAchievementCatalogView","OtherRequirementsReviewListView","ReportsAdvancedAppAffiliation","ReportsAdvancedAppCandidate","ReportsAdvancedAppCertRequirement","ReportsAdvancedAppCertification","ReportsAdvancedAppExam","ReportsAdvancedAppPsychometric","ReportsAdvancedPiiAllowed","ReportsCustomDellIigModify","ReportsCustomDellIigView","ReportsCustomNcarbEligibilityView","ReportsStandardContinuingEducationView","ReportsStandardCredentialAchievementView","ReportsStandardExamEligibilityView","ReportsStandardFinancialView","ReportsStandardMicrosoftPsychometricCommentView","ReportsStandardPsychometricView","ReportsStandardQuestionnaireDetailView","ReportsStandardQuestionnaireView","ReportsStandardSecurityView","ReportsStandardStandardBadgeView","ReportsStandardStandardBenefitView","ReportsStandardStandardCredentialView","ReportsStandardStandardDemographicView","ReportsStandardStandardExamView","ReportsStandardStandardFulfillmentView","ReportsStandardStandardOtherRequirement","ReportsStandardSystemView","ReportsStandardView","RequirementsAdditionalAgreementCatalogModify","RequirementsAdditionalAgreementCatalogView","RequirementsContinuingEducationCatalogModify","RequirementsContinuingEducationCatalogView","RequirementsEnrollmentCatalogModify","RequirementsEnrollmentCatalogView","RequirementsExternalCertCatalogModify","RequirementsExternalCertCatalogView","RequirementsExternalExamCatalogModify","RequirementsExternalExamCatalogView","RequirementsLabCatalogModify","RequirementsLabCatalogView","RequirementsMiscellaneousCatalogModify","RequirementsMiscellaneousCatalogView","RequirementsParticipationCatalogModify","RequirementsParticipationCatalogView","RequirementsProgramFeeCatalogModify","RequirementsProgramFeeCatalogView","RequirementsTrainingCatalogModify","RequirementsTrainingCatalogView","SponsorAttributeCatalogView","SponsorSettingCatalogView","SystemLocalizationModify","SystemLocalizationView","TaggingCatalogModify","TaggingCatalogView","VerifyValidationCodeModify","VerifyValidationCodeView","VerifyVoucherCodesModify","VerifyVoucherCodesView","ViewCandidateExternalIdsModify","ViewCandidateExternalIdsView","WatchedCandidateListView","LocType","CandidatePortalExternalUrl","CandidatePortalString","CandidatePortalSystemUrl","InternalPortalExternalUrl","InternalPortalString","InternalPortalSystemUrl","SponsorPortalExternalUrl","SponsorPortalString","SponsorPortalSystemUrl","WuhType","EditBcat","EditCcat","EditClientFeature","EditCocat","EditCog","EditCrcat","EditEmcat","EditExcat","EditIcat","EditLocalization","EditNewsArticle","EditStandingTemplate","EditUser","EditWebUserClientRole","ImpersonateUser","Login","Logout","PermissionChange","WebToolActivity","WuserCandRestrictType","Filtered","Restricted","Unrestricted","graphql","FulfillmentStatus","Ordered","Available","calculateFulfStatus","fulf","isPast","certIsExpired","cert","fulfillmentCatalog","queueType","certExpireDate","expireDate","dateIsPast","status","pendingDmgr","pendingRequeue","exportOkDate","exported","targetDate","Date","fulfillmentStatusSort","CandidateAccount","transcriptDetail","settings","attributes","certRequirementList","benefitList","examAccommPackList","imageList","commentList","sectionList","itemList","violationList","Candidate","identificationList","CandidateAffiliation","CandidateAuxiliary","IsoCountry","IsoCountrySubdivision","ClientRole","permissions","ClientSponsor","localizationList","CandidateSettingAssoc","CertUsedItem","CertLogicItemResponse","CertCurrentProgressResponse","DuplicateCandidateResponse","EmailContextOptionResponse","ETransaction","ExamAccomm","ExamCatalog","scoreReportList","examSectionCatalogList","examItemCatalogList","LocalizationResponse","PublicLocalization","TagDomain","tagItemList","duplicateCandidateBadgeList","duplicateCandidateDemographicsList","duplicateCandidateEmailAddressList","duplicateCandidatePhoneNumberList","stagingExamPendingList","defaultClientAliasList","stagingCandidateErrorList","stagingCertRequirementErrorList","benefitVoucherCount","VoucherCountByBatch","newsArticleList","filterList","NcarbToolsQueries","fetchDelayList","fetchDelayClientSettings","keyToIndex","jurisdictionList","ClientSetting","FetchDelayListResponse","EtransactionItemCatalog","introspection","scrollElementSelector","setOffset","getScrollPosition","scrollEl","supportScrollRestoration","scrollLeft","scrollTop","scrollToPosition","position","scrollTo","top","scrollToAnchor","supportsScrolling","elSelected","findAnchorFromDocument","scrollToElement","focus","setHistoryScrollRestoration","scrollRestoration","history","rect","getBoundingClientRect","scrollRestorationDescriptor","getScrollRestorationProperty","writable","getOwnPropertyDescriptor","documentResult","getElementById","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","shadowRoot","nextNode","__decorate","__param","Inject","tslib_es6","Sn","Document","Window","HiddenFormPost","auth","ngAfterViewInit","nativeElement","handleClick","basePath","targetWindow","inp","getAuthToken","getTwoStepToken","inp2","TWO_STEP_STORE","submit","inputs","initialValue","updatedValue","routerErrors","AuthRedirectGuard","CmAuthService","CmThemeService","CmFeatureService","CmSSOService","CmLocalizationService","CmLocalizePipe","CmBooleanPipe","CmMissingLocalizationService","CmCrcatTypeGuard","CmSettingsService","CmCreqTypeGuard","CmUnsavedChangesGuard","CmCookiePolicyService","CmRouterErrorService","HTTP_INTERCEPTORS","CmLoadingInterceptor","CmAuthTokenInterceptor","Router","CmTimeoutService","CmLoggingInterceptor","LocalizationService","CORE_CONFIG_TOKEN","LOC_PORTAL_TYPE","formErrorFocusInitializerFactory","submitEvent","firstInputWithError","CommonModule","MatDialogModule","ERROR_GUIDS","GUID_3efdebe4129f4b97923f93729b4185d1","GUID_aeced4e7935e4ad7b7033a00cae7ce52","GUID_281712bdc76e45578c1972c59dc8e7b3","GUID_e70f817b343c4d01adb10c9b8f803a34","GUID_200b93db5da24725a93098c4f6b08046","GUID_4f7e9e7703f14f6ba05e75eb6df88d31","GUID_a0c6448e32a54e2cbceeed388615c97b","GUID_03378066bf6b4860b7aba4d5e7573314","GUID_669b087c7a4149b881d8b3142cbfebcf","GUID_10a781939f3e45cb8ee9631831486ab3","GUID_cb675a646f874433a644c31bb6bd1357","GUID_af3d920b1ebf483bb75c112920ea4203","GUID_d1a77c8c9c824cb891fec6b77d9012d8","GUID_4713a092237041b6ba861ff284a95a00","GUID_730835942eb245fca93279e688ff42b1","GUID_3917904bbd174c6989da28ecf48465dc","GUID_181ff1f2712840b9a1c51df0e89f781d","GUID_360836083bb0429b938d2e6da2703a39","GUID_5279dca9b5b848aeb3034332646067fc","GUID_0ad817d9b202419eb25ba2a93430be83","GUID_949807cca5a84dfe85c9456cc45548b4","GUID_31de40b13ee5464f92f4baef09c189ce","GUID_3ec0ba6614824d739ecfe5daf13db583","GUID_c71d8e61c5d94d35bf47bdb7a7d210e1","GUID_7fab0f358b504243be0c14d317806ff5","GUID_082741d7073c409880e4e4aaf4a2ff11","GUID_3d9f264260c342038fbc9061c8bf0c57","GUID_8d55c522ad13470cb4f46f453dd9bf0a","GUID_0938d22c550b40b990ace5d9ed81c494","GUID_3c3f102afd144114bd6a72752c83c7a3","GUID_71d535637b834d2fb94ffe06251c75e1","GUID_506eff69d94442a7a63ffe60261f3bc8","GUID_a6b433ba53ea44f2981e3fae44851ffc","GUID_5f105fdce3f945e8a49e8d384cb834f5","GUID_11945915d3eb4a03b55a4ec74110a92e","GUID_4ab87866d4fc4beb9e55c3c76e9ad9ba","GUID_a900daccb95746f886cc659230f6808c","GUID_e4ee4ab7edc246be80977fbc07dcd1f4","GUID_499ed929ea6f4e218b4be0a487de7ec2","GUID_ff685f2ec5f04ce1aa14828f8744755c","GUID_4755b2563eaa424dbef5a7a85784a0ab","GUID_51de9a1420294b6b9672baa2d9305cd7","GUID_6bdd6e29b47c4ddebbb4bac5a7dd2c0f","GUID_79a96d9aff604b488b61c4e30866c5bb","GUID_71147c55ba4340089f613ecc74bbb2d8","GUID_ef0e1c2d79574db7bf35e036cd8b6de8","GUID_8c9cdfb47178426e9e7a106b8679fc31","GUID_0c50e1a4e68045bfaaaa696fab344bdd","GUID_5f0afcf740524c2fae9c6b4ebe189c7c","GUID_65f3cde1bce74eda9b70e6eef2d40206","GUID_9e9cfe42032a43019d9bb390cefc6014","GUID_b1832ce32a9f47a49a0dfe3bbe0f7d4f","GUID_e4887a240d5d42aab92bfbe6fbc7f991","GUID_c271a4ac4b554eea85be315500ef25c3","GUID_0a2b32e07d904b159c1f7b274fd10ee9","GUID_ab568720e99f4580ac11fa53789d2dc4","GUID_553d0f3a2d3f46fc82a9298441eb47ef","GUID_394532dcff2e46979ca3eb51267d22fb","GUID_e79680922643436bbdbcd570ac9e3340","GUID_c8394367a0694a8a8a37b450113dcde2","GUID_96ce7b5829bb4d8eb9184a2821feffe4","GUID_ba6c3126056842f283e93adb0b98c553","GUID_6d27be0634c241eaaeb802b306946d89","GUID_4ab47cae6a724d31af6cfd0853269bbd","GUID_394191c13dca40f6b5813a1a5be2b45b","GUID_3d69668959fb474b809c36b3d0b28e68","GUID_3dec766078574db3a73840ac2844dcb9","GUID_2668c2795a624cb585dc63ee8e8ed489","GUID_51a337944b72436187fd1b7a056f4afc","GUID_8a0a0a4d98ed497d8e06369cf0e7e768","GUID_d9b40d4ff3cc486caa0bbf1745b3069c","GUID_0c6c6c2b2b3046c8a1c44ee3b3e9141e","GUID_9c91d86b5f5c4f9cb4ed736c2fdd1aa7","GUID_d0d450ba40494d0a88d581498457aa64","GUID_116c342509ca4182a291ad3b7b4c55c7","GUID_42445bd9e4794e9c9ac05c45ce002892","GUID_455a95d9dbe44af1afa37f72884ef062","GUID_8644c9bb4f43466fb5e8bb927575a6ec","GUID_a187a42c65c04556a3f20246ac30b8d2","GUID_437669c9d77b45f8949bc3b115560324","GUID_7f6ea6dab341412ca68ab9a2825ebc36","GUID_461a6d344d5840398e75b193dc93d71f","GUID_cb15a8a9bb77483cbffbd46939deddbe","GUID_2ccecbf9ee7a4215ab3e41835426f9c6","GUID_8ccadd7ee37e4248b4446f84563a2db5","GUID_01310719cf3e42d281dda8ae52171b68","GUID_98ca214affad4d5f9fccb239a17bf203","GUID_6d429e3c1deb4247af679f9670889ca9","GUID_fc11c94852b94f629f190ad64e4e03ef","GUID_b31325942c8140c9acb4d9b4babbb200","GUID_2dd1b77903224823b7456546ecd90df1","GUID_7b22408e106048db92913fb08dc0c4ae","GUID_1744c1e5d133482da0bcef98fd6498e1","GUID_0485eff4a9004ee6bfc7d081074fa74b","GUID_39b60838239b46cb87b191dcbd45da6f","GUID_edaf945850464f0b9a30426b272d028a","GUID_0ff985d2411c4e1e9aab13cd88dbf63b","GUID_3eacf772d04548b4beeeb2894c64873b","GUID_4d193b2185b54ea0a055d556576a1989","GUID_f966592881424ae98607be4aa5d62265","GUID_c990fff4ca6c44909e7c5d42859caf59","GUID_666067d8880e498abbf7927327fe836f","GUID_99730d2042374f19b19c0297dc37d03f","GUID_b08474f1877f40288e5ddba7f30a6f60","GUID_dec57ec6ec124f67a87513546020f771","GUID_0410dfe5708c449e8c29958ade9208da","GUID_3fccb1b346af4fc0a3161bd7e9a2e17c","GUID_36679acce4134562b4407a17f8516d45","GUID_a8b206a106ad441caaa36d851857985f","GUID_83f919bf184f4ec38259394484e928d0","GUID_3875762cf3654f0d905932d160154fbd","GUID_53f2680248cf4d03993c4b91e3387f9d","GUID_6b553e11f16746b8a34690b5b67f2d1f","GUID_0bb12ef6c3c6400495c161f14d2217e8","GUID_012aacc090774da682df74516f009219","GUID_b061ead98808428c8b655d9e3d29a455","GUID_dfae02d2b02b44389aab84ed7be2f4aa","GUID_2eb57b88e85b45bca4a80fc0c7d5a088","GUID_33c2180859904ab08cdd027687849c5d","GUID_0904472e21df4a06b7f847fe5f5070fe","GUID_459fd41499cd40a3a959639a2da2f92e","GUID_ba687ccb51c248589bcc6a54862ca106","GUID_7f404c37f40246d9a4fb120798d4730e","GUID_7a21b9a627ba4d6bbe553b489541fb31","GUID_c257cba532e14e9e810de2d907179950","GUID_7f2e1e2f140c402193706b2d7d865043","GUID_b0e61d60267d4d64b8bd2701606257f9","GUID_4d54601bca09417b94adfb5aeb216dfe","GUID_50a7ace27b4f4fd4b1dc6ebf4944d063","GUID_a231a66537b94ef3a456c70ebcba1009","GUID_f0ff1fe4a1ec4693affec4cc74ed430b","GUID_2f086fb580ed4641a028b1bc1dd43caf","GUID_15dcab03796547d8a537fb27805edde1","GUID_867de616815d4e18ba89aa0b097e232e","GUID_7d08282e038b41f48c05a864fdafaa4b","GUID_5365b79dbb46409a888993ae39d19594","GUID_c07e15bbdc0e46bb9ce186a618b55fb1","GUID_7be52347260e46fbbdb3a7f80f932b56","GUID_02c136f6eccb455884229f40976bdb4c","GUID_34b91807869d4f0c9eb7ad94cda6896e","GUID_02b2d94bc9d144cd9a693a0d47a0f8aa","GUID_11e517e8ce6a493ea5f35fd0538e2df3","GUID_8355d31d41744ebb892215d68deb52cd","GUID_abcf947ac78d42f6b06c641fab2c5ce6","GUID_b913ce0861d148b69bb5f0d296926fd5","GUID_2930b1735cff4944a76e5fefd9f5e78a","GUID_53fdc362cef948c880f336c65f7d78ce","GUID_7478c4aa45394b4ab9c1858239e76666","GUID_6e620795eb394295bcf99ce1eb510b63","GUID_c8ed113fcdf44b959a14b1a488b50d5a","GUID_7ea9e4ea8795412f94128f6ea76b76b3","GUID_418252a9be5f42be88a997db937628a3","GUID_b0853fd8d2ef44cfb96bbe0403fd311b","GUID_39f7a2ff80ed43589cff8284d4e16560","GUID_4376e248a036418ba7dc00e409cafa8a","GUID_5d011dfcb8d34a02bf0ace50a85fcb9c","GUID_24379a9fb7f242ecb4930da57761ab55","GUID_2236eb45b4fc471c94a7d69bf4901b48","GUID_0cb1b1db207c478782230540c2cea03f","GUID_faf3edb29dac4436b58b013472cada64","GUID_c11c7701f2d145878a42b7c83fd5d3f3","GUID_275b0fc2cb7540018f411114779febeb","GUID_9406ef8e815240d9a4e0a76815eea7ad","GUID_68cd39e8849e417f8c364ccd0390e3ae","GUID_7bf2ddefdc6641a0978dc7db94443e7c","GUID_081a212a11974dc3957c1d25db3d9ca3","GUID_07a91aa70facc74ebd1e70cb6686eb02","GUID_da68b68ccfabbab8654d7df9dcd2480b","GUID_2349a3fec05b081e10091750b6273073","GUID_d592d1bc82ea498e8f8ae00ab493ab68","GUID_30177188a31a4f5d9918100f7f28fda8","GUID_ef67892b75f6e67a49330e15ab7416f7","GUID_928b2623e68334241167cd0bc9c1b08d","GUID_3041fd8982e4880be3947e575de6d932","GUID_53dc701a18074dfe88f5a9f0fc460a11","GUID_d1c09d65794a4dbea930f79fa7ac3b9d","CmRouteGuard","router","route","token$","switchMap","checkAuthGuard$","createUrlTree","routeWithContext","routeConfig","redirectOnAuthFail","guard$","guard","passesGuardCheck","i2","i3","mergeMap","iif","take","CRCAT_QUERY","gql","apollo","checkCrcatType$","crcatGuardData","crcatGuard","allowedTypes","idParam","paramMap","certRequirementCatalogDetail","SP_CRCAT_QUERY","CP_CRCAT_QUERY","checkCreqType$","creqGuardData","creqGuard","creqId","candidateId","getCandidateId","candidateIdParam","creq","candidate","cmcId","candidateAccount","certRequirementDetail","certRequirementCatalog","fetchPublicFeatures$","client","mapTo","URL_SEGMENT_EXCLUSIONS","_redirectKey","isAuthenticated$","combineLatest","tap","isAuthenticated","formattedUrl","startsWith","isSSO","segment","saveToStore","canDeactivate","currentRoute","redirectUrl","getFromStore","formattedRedirectUrl","decodeURIComponent","deleteFromStore","hasQueryParams","redirectUrlWithoutParams","queryParams","queryParamAndValue","localizationService","localizationsInitialized","public$","publicFeatures","Guard","HasSomeFeatures","featureService","clearAuthToken","clearPublicToken","authenticated","timeoutService","intercept","bypassAuth","CmInterceptHeaders","Type","BypassAuth","twoStepToken","ignoreAuthError","IgnoreAuthError","validateTokenAgainstSnapshot","logout$","handle","catchError","statusCode","redirectToAccessDenied","navigate","bypassLoadIndicator","BypassLoadIndicator","reqKey","AtsGuid","New","finalize","IGNORED_ERRORS_BY_ROUTE","eventService","locService","suppressError","SuppressError","hasSuppressHeader","SuppressErrorLog","suppressErrorId","SuppressErrorById","isForbidden","handleAuthError","is500","handleSystemError","getErrorCode","handleAPIError","guid","doNotLog","hasGuid","isIgnoredStatus","isIgnoredByRoute","hasSuppressErrorId","raw","hasGUIDLoc","routerState","AtsUtility","isTruthyOrZero","AddressType","MAILING","LOCALIZED","OTHER","AppUserType","CANDIDATE","WEB_USER","cmBooleanPipeLocalizationDefaults","feature","POSITIVE","NEGATIVE","INDETERMINATE","IGNORE_ERRORS_BY_ID","CmInterceptHeaderType","ClientHeader","ERROR_MESSAGES_TO_IGNORE","UnwrapErrorMessage","logger","user","forms","platform","handleError","chunkFailedMessage","requireReload","isIgnoredErrorMessage","user$","formsToLog$","client$","browser","appCodeName","appName","appVersion","userAgent","language","navigator","origin","stack","date","app","location","href","username","email","isImpersonating","cmError","log","groupEnd","logToApiWithHeaders","ignoreErrorMessage","against","canLocalize","localizationEnabled","isCandidate","userType","isNotCandidate","isWebUser","isNotWebUser","isAdmin","admin","notAdmin","isInternal","internal","notInternal","isAdminOrInternal","isRestricted","candRestrictType","notRestricted","isFiltered","notFiltered","isUnrestricted","notUnrestricted","hasQlik","qlik","custom","customGuard","everyFeature","HasEveryFeature","everyPermission","HasEveryPermission","someFeatures","somePermissions","HasSomePermissions","noFeature","noPermission","getFromUser$","getCheckpointsFromUser","checkpoints","any","none","feat","perm","INGRESS_TYPE","OIDC","JWT","WSTRUST","parseRouteData","passesEveryCheckpoint","passesSomeCheckpoints","SSO_FLOW","REDIRECT_TO","REDIRECT_ATTEMPTS","UserActionType","UPDATE_USER","UserState","CmBaseUserService","http","dispatch","BehaviorSubject","asObservable","distinctUntilChanged","authenticated$","canLocalize$","impersonating$","updateGuardUser","tokenAndFeatures$","protected$","updateUser","payload","forgotPassword","apiWithContext$","apiWithContext","resetPassword","newPassword","monitorUserChanges$","queryUser$","critical","localization","getLocalizations","binary","positive","negative","indeterminate","findLocalization","isTrue","isFalsey","isTruthy","isFalse","isNull","pure","locKey","BANNED_CANDIDATE_ERROR","dialogs","tokenSubj$","ReplaySubject","guardUserSubj$","isBannedCandidateError","handleBannedCandidateError","handleTokenSideEffects","accessTokenId","tokenSnapshot","setAuthToken","absoluteExpirationMinutes","setTimeoutToStorage","routeShouldDeleteCurrentToken$","NavigationStart","routeShouldDeleteCurrentToken","tokenName","twoStepTokenName","twoStepExpiryTokenName","validateToken$","updatePublicToken","monitorCookieValidity$","getValue","errMessage","login$","updateTokenWithPost$","Boolean","first","logoutUrl","clearAuthCache","generateToken$","updateTokenWithGet$","retry","configOrCount","Infinity","resetOnSuccess","identity","operate","subscriber","innerSub","soFar","subscribeForRetry","syncUnsub","createOperatorSubscriber","resub","notifier","timer","innerFrom","notifierSubscriber","triggerTwoStepEmail","isIp","validateTwoStepToken","storeExpiration","AtsDate","until","absoluteExpiration","AtsDateUnit","Minute","expiry","resetApolloCache","stop","resetStore","convertUrlToUrlTree","accessType","absoluteExpirationMinutesRemaining","slidingExpirationMinutes","interval","validTokenState","closeAll","clearStore","deleteExpiration","i4","i5","i6","i7","i8","i9","formsToLog","registerFormForLogging","valueChanges","untilDestroyed","We","unregisterFormFromLogging","UntilDestroy","INSERT_CANDIDATE_HISTORY","INSERT_WEBUSER_HISTORY","getFromStoreName","hasCookieBeenAccepted","acceptCookie","insertCandidateHistory$","mutate","mutation","insertWebUserHistory$","webUserId","QUERY_CLIENT_FEATURES","FeaturesActionTypes","UPDATE_PUBLIC_FEATURES","UPDATE_PROTECTED_FEATURES","FeaturesState","protectedFeatures","utilities","publicFeaturesHaveBeenSet","featureQuery","fetchProtectedFeatures$","features$","reduceNameKey","clientSponsor","currentAccountFeatures","skip","refetch","updateProtectedFeatures","_features","updatePublicFeatures","watchQuery","Unsubscribable","localizations","missingLocalizationSubj$","missingLocalizations$","localization$","locs","missingLocalization$","takeUntil","unsub","handleMissingLocalization","allMissing","NavigationError","fromSSO","ingressType","queryParamMap","sso","encodeQueryParams","encodeURI","provider","queryString","ssoPath","getSSOUrlBase","baseRoute","clientService","theme$","LOCALIZATION_QUERY","LocalizationState","isLocalizing","activeLocalization","loc","missingLocalizationSub$","Subject","localizationSnapshot","isLocalizing$","activeLocalization$","distinctUntilChangePredicate","possibleSupported$","supportedCultures$","supported$","existingCultures$","updateIsLocalizing","instantiateLocalizations","localizationHasValue$","ignoreDefault","toggleLocalization","setLocalizationState","isAuthorized","triggerLocalization","mapErrorGUID","isKey","guidMap","getErrorMap","errorLoc","localize","localize$","findLocalization$","strict","getLocalizationFromList","popLocalizedSystemError","list","reportMissingLocalization","updateLocalizations","cultureCode$","clientAlias","cultureName","portalType","tslib__WEBPACK_IMPORTED_MODULE_19__","Apollo","clientSnapshot","clientCultures$","portalNumeric","portalCoreFeature","coreFeature","language$","settings$","routeWithNewCulture","newCulture","resetCount","reset$","cookieName$","expirationTime$","cookieName","getStorageItemEvents$","t","atWarnTime$","warnDuration","toMS","warnDuration$","resetExpiration","resetCountdown","expirationFromToken","getExpiration","save","tslib__WEBPACK_IMPORTED_MODULE_11__","StorageService","NavActionTypes","UPDATE_NAV_VISIBILITY","UPDATE_PAGE_NAV_VISIBILITY","UPDATE_PRIMARY_NAV","CLOSE_NAV","UPDATE_NAV_DISABLED","NavState","navVisible","pageNavVisible","primaryNav","navDisabled","CmNavigationService","responsiveService","headerLocalization","default","navVisible$","pageNavVisible$","navDisabled$","nav$","breakpoints$","breakpoints","mobile","toggleNav","small","togglePageNav","withLatestFrom","breakpoint","loadNav$","nav","getPageNav$","exclude","relativeTo","ex","atsSort","closeNav","updateNavDisabled","AtsResponsiveService","CmContinueModalComponent","dialogRef","CmCookieModalComponent","cookiePolicyService","locFeature","accept","isCandidatePortal","close","MAT_DIALOG_DATA","ctx_r0","unitLabel","SPCrcatPointsMax","CPCrcatPointsMax","maxPoints","SPCrcatPointsMin","CPCrcatPointsMin","minPoints","PointsMessageDisplayComponent_Conditional_0_Conditional_0_Template","PointsMessageDisplayComponent_Conditional_0_Conditional_1_Template","crcat","pointsMax","points","PointsMessageDisplayComponent","factorUnits","factor","LOC_INJECTOR","pointsControl","LocalizationProvider","spCrcatPointsLocs","cpCrcatPointsLocs","PointsMessageDisplayComponent_Conditional_0_Template","LocalizeComponent","selection_r1","CmSelectionListComponent_dl_0_ng_container_1_Template","maps_r2","CmSelectionListComponent","uploadService","maps$","CmSelectionListComponent_dl_0_Template","creq_r1","ctx_r1","SPUploadConfirmationTextNever","CPUploadConfirmationTextNever","CmUploadConfirmationComponent_Conditional_0_div_6_Conditional_2_Template","CmUploadConfirmationComponent_Conditional_0_div_6_Conditional_3_Template","SPUploadConfirmationFieldLabelExpireDate","CPUploadConfirmationFieldLabelExpireDate","SPUploadConfirmationFieldLabelProvider","CPUploadConfirmationFieldLabelProvider","SPUploadConfirmationFieldLabelDocLanguage","CPUploadConfirmationFieldLabelDocLanguage","langName","crcatDetail_r3","CmUploadConfirmationComponent_Conditional_0_Conditional_9_div_0_span_3_Template","CmUploadConfirmationComponent_Conditional_0_Conditional_9_div_0_span_4_Template","SPUploadConfirmationFieldLabelFactorNotFound","CPUploadConfirmationFieldLabelFactorNotFound","CmUploadConfirmationComponent_Conditional_0_Conditional_9_div_0_Template","CmUploadConfirmationComponent_Conditional_0_Conditional_9_div_1_Template","docUrl","SPUploadConfirmationFieldLabelDocumentation","CPUploadConfirmationFieldLabelDocumentation","SPUploadConfirmationFieldLabelDocNotes","CPUploadConfirmationFieldLabelDocNotes","docNotes","CmUploadConfirmationComponent_Conditional_0_div_6_Template","CmUploadConfirmationComponent_Conditional_0_div_7_Template","CmUploadConfirmationComponent_Conditional_0_div_8_Template","CmUploadConfirmationComponent_Conditional_0_Conditional_9_Template","CmUploadConfirmationComponent_Conditional_0_div_10_Template","CmUploadConfirmationComponent_Conditional_0_div_11_Template","SPUploadConfirmationFieldLabelActiveDate","CPUploadConfirmationFieldLabelActiveDate","activeDate","isSP","tmp_8_0","docRequired","CREQ_CULTURES","CmUploadConfirmationComponent","EventEmitter","creq$","fetchCreqCultures$","creqUpload$","cultures","docLanguage","label","startOver","emit","onlyNeutral","outputs","cpUploadConfirmationLocs","spUploadConfirmationLocs","CmUploadConfirmationComponent_Conditional_0_Template","tmp_0_0","SPUploadConfirmationButtonStepThreeStartOver","CPUploadConfirmationButtonStepThreeStartOver","crcat_r3","SPUploadFormFieldErrorActiveDateRequired","CPUploadFormFieldErrorActiveDateRequired","SPUploadFormFieldErrorActiveDateInvalid","CPUploadFormFieldErrorActiveDateInvalid","CmUploadFormComponent_ng_container_0_ng_container_1_mat_error_8_div_1_Template","CmUploadFormComponent_ng_container_0_ng_container_1_mat_error_8_div_2_Template","required","matDatepickerMin","matDatepickerMax","SPUploadFormFieldErrorExpireDateInvalid","CPUploadFormFieldErrorExpireDateInvalid","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_13_mat_form_field_4_mat_error_4_cm_localize_1_Template","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_13_mat_form_field_4_mat_error_4_Template","today","expireDatePicker_r4","invalid","touched","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_13_mat_form_field_4_Template","SPUploadFormFieldLabelOverrideExpireDate","overrideExpiration$","SPUploadFormFieldErrorProviderRequired","CPUploadFormFieldErrorProviderRequired","CmUploadFormComponent_ng_container_0_ng_container_1_mat_form_field_14_mat_error_4_cm_localize_1_Template","CmUploadFormComponent_ng_container_0_ng_container_1_mat_form_field_14_mat_error_4_Template","providerRequired","SPUploadFormFieldErrorDocumentationRequired","CPUploadFormFieldErrorDocumentationRequired","SPUploadFormFieldErrorDocumentationSize","CPUploadFormFieldErrorDocumentationSize","SPUploadFormFieldErrorDocumentationLimit","CPUploadFormFieldErrorDocumentationLimit","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_15_div_8_Template","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_15_div_9_Template","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_15_div_10_Template","cultures$","SPUploadFormFieldErrorDocumentationSizeHint","CPUploadFormFieldErrorDocumentationSizeHint","documentation","fileSize","maxlength","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_div_1_Conditional_1_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_div_1_Conditional_2_Template","SPUploadFormFieldErrorPointsRequired","CPUploadFormFieldErrorPointsRequired","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_div_2_Conditional_1_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_div_2_Conditional_2_Template","SPUploadFormFieldErrorPointsNumeric","CPUploadFormFieldErrorPointsNumeric","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_div_1_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_div_2_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_div_3_Template","numeric","min","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_span_2_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_ng_container_3_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_mat_error_7_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_mat_form_field_0_Template","crcatType","SPUploadFormFieldLabelComments","SPUploadFormFieldHintComments","_r1","handleSubmit","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_3_Template","CmUploadFormComponent_ng_container_0_ng_container_1_mat_error_8_Template","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_13_Template","CmUploadFormComponent_ng_container_0_ng_container_1_mat_form_field_14_Template","CmUploadFormComponent_ng_container_0_ng_container_1_ng_container_15_Template","CmUploadFormComponent_ng_container_0_ng_container_1_Conditional_16_Template","CmUploadFormComponent_ng_container_0_ng_container_1_mat_form_field_22_Template","formGroup","SPUploadFormContentInstructions","CPUploadFormContentInstructions","minDate","activeDatePicker_r5","allowPoints$","SPUploadFormButtonStepTwoBack","CPUploadFormButtonStepTwoBack","SPUploadFormButtonStepTwoNext","CPUploadFormButtonStepTwoNext","CmUploadFormComponent_ng_container_0_ng_container_1_Template","CREATE_CREQ_MUTATION","CmUploadFormComponent","parentForm","fileService","overrideExpireDate","startWith","crcat$","selection$","fetchCRCat$","distinctUntilKeyChanged","compare","x","y","ceAccess$","view","ceAccess","allowPoints","enable","setValidators","Validators","createAge","minDateSnapshot","startDate","now","date1","date2","setMonth","setPoints","documentationLang","DEFAULT_DOCUMENTATION_VALIDATORS","setDocumentationLanguage","validPeriod","markAsPristine","markAsUntouched","catalogPoints","CmValidators","CmNumericValidatorVariation","Positive","Integer","addValidators","factorPointsValidator","notes","comments","markAllAsTouched","showFailure","valid","cmcId$","crcatId","floor","historyComment","refetchQueries","types","createCertRequirement","uploadFile","docUploadUrl","cand","setCReq","spUploadFormLocs","cpUploadFormLocs","CmUploadFormComponent_ng_container_0_Template","FormGroupDirective","CmCreqUploadService","AtsFileUploadService","AtsNotificationService","CmDeleteConfirmationComponent","CmDeleteConfirmationComponent_p_4_Template","CmDeleteConfirmationComponent_p_5_Template","CmInlineAlert","ngContentSelectors","_c0","CmInlineAlert__svg_svg_0_Template","CmInlineAlert__svg_svg_1_Template","CmInlineAlert__svg_svg_2_Template","CmInlineAlert__svg_svg_3_Template","$event","_r3","newVal","saveLocalization","description_r4","shared","htmlAllowed","displayVal","language_r5","CmLocalizeModalComponent_ng_container_0_ng_container_16_form_2_Template","HTMLForm_r6","_r8","tiny","CONFIG","API_KEY","_r7","handleTabChange","CmLocalizeModalComponent_ng_container_0_ng_template_24_ng_template_6_Template","CmLocalizeModalComponent_ng_container_0_ng_template_24_ng_template_7_Template","CmLocalizeModalComponent_ng_container_0_ng_template_24_ng_template_9_Template","CmLocalizeModalComponent_ng_container_0_ng_template_24_ng_template_13_Template","_c1","tmp_5_0","description","lang_r9","nativeLabel","CmLocalizeModalComponent_ng_container_0_ng_template_28_ng_container_0_mat_option_7_Template","languageForm","CmLocalizeModalComponent_ng_container_0_ng_template_28_ng_container_0_Template","CmLocalizeModalComponent_ng_container_0_span_5_Template","deleteLoc","CmLocalizeModalComponent_ng_container_0_ng_container_16_Template","closeDialog","CmLocalizeModalComponent_ng_container_0_ng_template_24_Template","CmLocalizeModalComponent_ng_container_0_ng_template_26_Template","CmLocalizeModalComponent_ng_container_0_ng_template_28_Template","uiType","INDIVIDUAL_LOCALIZATION","UPDATE_LOCALIZATION","DELETE_LOCALIZATION","CREATE_LOCALIZATION","CmLocalizeModalComponent","sanitizedValue","sanitizer","bypassSecurityTrustHtml","fb","notificationService","activeTabIndex","TINYMCE","hasCodeChanges","isCP","initialize","deleteLocalization","fetchPolicy","isCustomized","updateLocalization","createLocalization","codeModified","popInfo","fetchIndividualLocalization$","res","createLanguageForm","listenToLanguageChanges$","localizationNewLang","langCode","pluck","currentProp","updateLocalizationList","showSuccess","createLocalizationList","spLocalizeModalLocs","cpLocalizeModalLocs","CmLocalizeModalComponent_ng_container_0_Template","title","MatDialogRef","DomSanitizer","UntypedFormBuilder","CmMultiselectModalComponent","selected","initialSelectedOptions","formValue","CmMultiselectModalComponent_div_0_Template","CmReloadConfirmationComponent","localizationPrefix","CmSearchComponent","caseSensitive","onChange","onTouched","searchControl","UntypedFormControl","debounceTime","toLocaleLowerCase","registerOnChange","registerOnTouched","writeValue","markAsTouched","setDisabledState","NG_VALUE_ACCESSOR","useExisting","forwardRef","CmSearchComponent_button_7_Template","searchInp_r3","CmTableRowComponent","gridColumns","TableState","groups","columns","rows","visible","loading","selectable","isSelecting","gridStyles","CmTableService","loaders$","selecting$","sourceData","columns$","groups$","rows$","row","remaining","filter$","sort$","isSelecting$","gridStyles$","isLoading$","loaders","hasSummaryImpact","config$","secured","toggleLoading","isEndDelimited","parentGroup","col","filtered","current","column","hidden","passed","setSelectable","setIsSelecting","setGroups","setRows","setColumns","setFilter","updateRowVisibility","dataFilter","isLoading","setLoading","toggleSelecting","sortColumns","toggleGroup","childCount","gr","open","grp","toggleSelection","rw","mapRowSelection","clearSelection","toggleAllGroups","level","allOpen","toggleSort","setSort","toggleFilter","toggleAllFilters","anyNotFiltered","delimiter","rowData","rowId","newOrder","atsSortFn","applyFilter","hasSummary","summary","summaryData","existingSummary","setVisibleRows","groupSortKeys","openGroups","firstRow","flatMap","classes","flat","filteredColumns","filterKey","setGridStyles","sizing","relativeWidth","CmTableComponent_section_0_header_4_ng_container_1_Template","headerTemplate","_r4","clearFilter","_r2","filterInp_r3","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_div_1_button_7_Template","_r5","toggleEmptyGroups","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_2_span_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_2_span_3_Template","showEmptyGroups","_r6","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_3_ats_icon_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_3_ats_icon_3_Template","zoom","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_5_ats_icon_4_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_5_ats_icon_5_Template","_r9","toggleFullscreen","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_6_ats_icon_4_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_6_ats_icon_5_Template","fullscreen","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_3_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_ng_container_4_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_5_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_span_6_Template","anyEmptyGroups","tools","toolsEnum","EMPTY_GROUPS","FILTER","TOGGLE_FILTER","ZOOM","groups_r10","TOGGLE_GROUPS","FULLSCREEN","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_div_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_ng_container_2_Template","FILTER_ONLY","_r13","column_r12","$implicit","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_span_1_span_4_ats_icon_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_span_1_span_4_ats_icon_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_span_1_span_5_ats_icon_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_span_1_span_5_ats_icon_2_Template","sort_r14","sortKey","_r11","sortable","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_span_1_span_4_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_span_1_span_5_Template","_c3","filterable","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_span_1_Template","_r15","ctx_r15","row_r17","idx_r18","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_1_button_2_ats_icon_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_1_button_2_ats_icon_3_Template","_c5","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_1_button_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_1_ng_container_4_Template","selectable$","groupTpl_r19","_c4","_r20","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_2_button_2_ats_icon_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_2_button_2_ats_icon_3_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_2_button_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_2_ng_container_4_Template","gridStyles_r21","_c6","disabledStyleAddedToRow","rowTpl_r23","_c7","columns_r22","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_ng_container_2_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_ng_container_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_ng_container_1_Template","rows_r24","trackByFn","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_section_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_span_7_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_9_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_ng_container_11_Template","rowCount$","noRows_r25","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_ng_container_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_section_1_Template","CmTableComponent_section_0_ng_container_5_ng_container_1_ng_container_2_Template","NONE","CmTableComponent_section_0_ng_container_5_ng_container_1_Template","CmTableComponent_section_0_ng_container_2_Template","CmTableComponent_section_0_header_4_Template","CmTableComponent_section_0_ng_container_5_Template","_c2","minWidth","minWidthUnit","maxWidth","maxWidthUnit","row_r27","_r26","CmTableComponent_ng_template_2_ats_icon_2_Template","CmTableComponent_ng_template_2_ats_icon_3_Template","CmTableComponent_ng_template_4_ng_container_0_Template","summaryTemplate","_c8","columns_r28","CmTableComponent_ng_template_6_ng_container_0_Template","rowTemplate","_c9","row_r29","columns_r30","CmTableComponent","waiter","navService","ngUnsubscribe","lastSelectedSubj$","CmTableTools","DOWNLOAD","toggledRow","levels","idx","ev","shiftKey","previous","previousRow","groupid","holdOpen","columnId","previousNavState","navState","filterField","direction","loadingStreams$","selectionWithMeta$","waiterLoading$","serviceLoader","pageLoader","viewQuery","CmTableComponent_section_0_Template","CmTableComponent_ng_template_2_Template","CmTableComponent_ng_template_4_Template","CmTableComponent_ng_template_6_Template","CmTableComponent_ng_template_8_Template","CmUIBugComponent","CmUiBugType","INFO","bugTitle","content","uiBugOverlay_r1","CmUnsavedConfirmationComponent","onNoClick","CmTimePipe","format","num","parseInt","isNaN","typedUnit","char","formatDuration","formatDate","FILTERED_CULTURE_QUERY","CmCulturePipe","fetchCultures$","onlyUniqueWinCodes","CmSecureImagePipe","src","Authorization","blob","bypassSecurityTrustResourceUrl","URL","createObjectURL","CmImageNotFound","ImageNotFound","CmReloadService","dialog","realoadSubscription","reload$","disableClose","afterClosed","reload","CmPageHeaderService","heading","heading$","setHeader","headingConfig","PageTitleService","defaultKey","legacyLocalizationService","titleService","localizedCompanyName$","title$","findValue$","companyName","setTitle","Title","CmRouteService","headerService","NavigationEnd","handleNavEnd","getRouteData","currentValue","page","firstChild","foundData","ActivatedRoute","publicImports","FormsModule","ReactiveFormsModule","AtsIconsModule","CmAutocompleteComponent","AccessibilityModule","CmDatePipe","CmLinkFromRootPipe","CmLocalizeEnumPipe","CmUiModule","routeService","EditorModule","MatTabsModule","CmAddressFormComponent","i10","i11","CmLogFormDirective","CmAnnouncementDetailComponent","CmInnerHtmlSpacingDirective","CmLocalizeDirective","CmLinkDescriptionDirective","CmTimeoutModalComponent","i12","CmCertLogicTreeComponent","i13","i14","i15","i16","CmContextOverlayComponent","CmContextOverlayDirective","i17","CmCertLogicViewComponent","i18","CmKeyValComponent","CmKeyValListComponent","i19","CmCreqUploadComponent","i20","CmSelectionFormComponent","CmDashComponent","CmFileUploadComponent","i21","CmFileDownloadDirective","CmLinkButtonDirective","CmLoadingDialogComponent","CmLoadingIconComponent","i22","i23","i24","i25","i26","i27","CmNotFoundComponent","CmMultiselectComponent","i28","i29","i30","UIState","hideUI","CmUIService","hideUI$","lastResolvedRoute","auth$","routeChange$","updateUIVisibility","urlAfterRedirects","DEFAULT_LOC_VALUE","DEFAULT_LOC_KEY","CmFormService","isPristine","pristineFormAllowed","locValue","pristine","popNoChangesNotification","NoticeType","ERROR","popGenericFormErrorNotification","popError","CmErrorStateMatcher","ErrorStateMatcher","formErrors","isErrorState","control","hasError","AddressFormErrorCountryRequired","AddressFormErrorInvalidCountry","CmAddressFormComponent_form_0_ng_container_1_ng_container_1_div_3_div_1_Template","CmAddressFormComponent_form_0_ng_container_1_ng_container_1_div_3_div_2_Template","country","noMatch","CmAddressFormComponent_form_0_ng_container_1_ng_container_1_div_3_Template","countries$","address","addressType","AddressFormLabelCountry","CmAddressFormComponent_form_0_ng_container_1_ng_template_2_mat_form_field_0_mat_error_4_div_1_Template","CmAddressFormComponent_form_0_ng_container_1_ng_template_2_mat_form_field_0_mat_error_4_Template","classPrefix","CmAddressFormComponent_form_0_ng_container_1_ng_template_2_mat_form_field_0_Template","CmAddressFormComponent_form_0_ng_container_1_ng_container_1_Template","CmAddressFormComponent_form_0_ng_container_1_ng_template_2_Template","freeform","freeformCountry_r3","AddressFormErrorAddressRequired","CmAddressFormComponent_form_0_mat_form_field_2_mat_error_6_div_1_Template","model_r4","CmAddressFormComponent_form_0_mat_form_field_2_mat_error_6_Template","AddressFormLabelAddress","line1Req","AddressFormLabelAddressContinued2","model_r5","AddressFormLabelAddressContinued3","model_r6","AddressFormErrorCityRequired","CmAddressFormComponent_form_0_mat_form_field_5_mat_error_6_div_1_Template","model_r7","CmAddressFormComponent_form_0_mat_form_field_5_mat_error_6_Template","AddressFormLabelCity","cityReq","AddressFormErrorStateRequiredVueHint","AddressFormErrorStateRequired","CmAddressFormComponent_form_0_div_12_div_1_Conditional_1_Template","CmAddressFormComponent_form_0_div_12_div_1_Conditional_2_Template","hasVueValidation","AddressFormErrorStateInvalid","CmAddressFormComponent_form_0_div_12_div_1_Template","CmAddressFormComponent_form_0_div_12_div_2_Template","AddressFormErrorPostalRequired","AddressFormErrorPostalVueUSA","AddressFormErrorPostalVueCanada","AddressFormErrorPostalMaxLength","postalCodeMaxLength","CmAddressFormComponent_form_0_mat_form_field_13_mat_error_6_div_1_Template","CmAddressFormComponent_form_0_mat_form_field_13_mat_error_6_div_2_Template","CmAddressFormComponent_form_0_mat_form_field_13_mat_error_6_div_3_Template","CmAddressFormComponent_form_0_mat_form_field_13_mat_error_6_div_4_Template","model_r8","vueUsaPostalCode","vueCanadaPostalCode","CmAddressFormComponent_form_0_mat_form_field_13_mat_error_6_Template","AddressFormLabelPostal","AddressFormErrorPhoneRequired","AddressFormErrorPhoneVueUsaCanada","AddressFormErrorPhoneVueNoZeros","CmAddressFormComponent_form_0_mat_form_field_14_mat_error_6_div_1_Template","CmAddressFormComponent_form_0_mat_form_field_14_mat_error_6_div_2_Template","CmAddressFormComponent_form_0_mat_form_field_14_mat_error_6_div_3_Template","model_r9","vueUsaCanadaPhoneFormat","vueZerosPhoneFormat","CmAddressFormComponent_form_0_mat_form_field_14_mat_error_6_Template","AddressFormLabelPhone","AddressFormLabelFax","model_r10","model_r11","AddressFormLabelBusinessAddress","_r12","AddressFormButtonCancel","CmAddressFormComponent_form_0_ng_container_1_Template","CmAddressFormComponent_form_0_mat_form_field_2_Template","CmAddressFormComponent_form_0_mat_form_field_3_Template","CmAddressFormComponent_form_0_mat_form_field_4_Template","CmAddressFormComponent_form_0_mat_form_field_5_Template","CmAddressFormComponent_form_0_div_12_Template","CmAddressFormComponent_form_0_mat_form_field_13_Template","CmAddressFormComponent_form_0_mat_form_field_14_Template","CmAddressFormComponent_form_0_mat_form_field_15_Template","CmAddressFormComponent_form_0_div_16_Template","CmAddressFormComponent_form_0_button_21_Template","line1","line2","line3","city","states$","tmp_9_0","stateRequired","AddressFormLabelState","displayedStateCharacters$","postal","phone","fax","business","AddressFormButtonUpdateAddress","hideCancel","COUNTRY_QUERY","touchOnInit","fetchCountries$","locPrefix","maxLength","addControl","countries","selectedCountry$","subdivisions","subdivision","updateValueAndValidity","listenToCountryChangesForVue","markFormAsTouchedIfAddressHasValues","getDisplayedStateCharacters$","combineLatestWith","stateCode","allStates","auxiliary","prohibited","sortGroup","vuePostalCode","vueUsaPhoneFormat","CmAddressFormComponent_form_0_Template","tslib__WEBPACK_IMPORTED_MODULE_17__","announcement","pictureLinkUrl","CmAnnouncementDetailComponent_header_1_a_1_Template","checkPictureUrl","pictureUrl","headline","sanitizeHtml","CmAnnouncementDetailComponent_header_1_Template","CmAnnouncementDetailComponent_h3_3_Template","CmAnnouncementDetailComponent_div_4_Template","CmAnnouncementDetailComponent_div_5_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_template_8_ats_icon_0_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_template_8_ats_icon_1_Template","treeControl","isExpanded","node_r1","externalId","numChildren","numRequired","earnedPoints","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_container_7_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_template_8_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_container_10_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_container_14_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_template_15_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_container_17_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_span_18_Template","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_ng_container_19_Template","isComplete","unfinished_r3","numRequired_r4","node_r5","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_3_ng_container_1_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_3_ng_container_2_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_ng_template_7_ats_icon_0_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_ng_template_7_ats_icon_1_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_11_span_1_Template","endDate","completedData_r6","formatLeafName","examCatalog","schedulingUrl","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_13_ng_container_1_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_13_ng_container_2_Template","usedItemList","usedItem_r7","inactiveDate","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_ng_container_19_ng_container_8_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_ng_container_19_li_9_Template","i_r8","exam","dateTime","certRequirement","pointsPerItem","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_3_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_4_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_ng_container_6_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_ng_template_7_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_10_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_11_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_12_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_span_13_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_ng_container_19_Template","catalog","completable_r9","CmCertLogicTreeComponent_ng_container_0_mat_nested_tree_node_2_Template","CmCertLogicTreeComponent_ng_container_0_mat_tree_node_3_Template","dataSource","hasChild","NestedTreeControl","MatTreeNestedDataSource","treeInitiallyClosed","ngOnChanges","dataNodes","expandAll","certCatalog","nameAbbr","CmCertLogicTreeComponent_ng_container_0_Template","currentProgress","itemTree","CmCertLogicViewComponent_ng_container_0_ng_container_1_Template","noData_r2","pastCert_r4","emitHistoryId","tabKeyHandler","isItemSelected","certHistoryDetail","logicVersion","linkedCert","CmCertLogicViewComponent_ng_template_1_ng_container_0_ng_container_4_ng_template_3_div_7_Template","CmCertLogicViewComponent_ng_template_1_ng_container_0_ng_container_4_ng_template_3_div_8_Template","CmCertLogicViewComponent_ng_template_1_ng_container_0_ng_container_4_ng_template_3_div_15_Template","CmCertLogicViewComponent_ng_template_1_ng_container_0_ng_container_4_ng_container_2_Template","CmCertLogicViewComponent_ng_template_1_ng_container_0_ng_container_4_ng_template_3_Template","noTree_r5","CmCertLogicViewComponent_ng_template_1_ng_container_0_ng_container_3_Template","CmCertLogicViewComponent_ng_template_1_ng_container_0_ng_container_4_Template","certHistoryList","CmCertLogicViewComponent_ng_template_1_ng_container_0_Template","isHistoryVisible","showCurrentProgress","selectedHistoryId","itemId","currentTab","tabs","toArray","findIndex","tab","activeElement","formattedPositiveIndex","formattedNegativeIndex","preventDefault","CmCertLogicViewComponent_ng_container_0_Template","CmCertLogicViewComponent_ng_template_1_Template","CmCertLogicViewComponent_ng_template_3_Template","history_r6","titleTpl","titleContext","contentTpl","closeSubj","close$","TemplateRef","ViewContainerRef","CmContextOverlayComponent_ng_template_0_Template","SPCreqUploadStepOneTitle","CPCreqUploadStepOneTitle","SPCreqUploadStepTwoTitle","CPCreqUploadStepTwoTitle","stepper_r3","handleCompletion","itemUploadFormGroup","SPCreqUploadStepThreeTitle","CPCreqUploadStepThreeTitle","handleSelectionChange","CmCreqUploadComponent_ng_container_0_ng_template_5_Template","handleNext","CmCreqUploadComponent_ng_container_0_ng_template_14_Template","CmCreqUploadComponent_ng_container_0_ng_container_15_Template","CmCreqUploadComponent_ng_container_0_ng_template_17_Template","handleRestart","CmCreqUploadComponent_ng_container_0_ng_template_23_Template","CmCreqUploadComponent_ng_container_0_ng_template_24_Template","CmCreqUploadComponent_ng_container_0_ng_template_25_Template","itemSelectionFormGroup","complete$","selectedIndex","completeSubj$","stepTwoActivated","selectionHasChanged","findPath","initForm","credential","intent","interacted","selectedStep","stepper","userFeatures$","UploadFeatures","uploadFeat","spCreqUploadLocs","cpCreqUploadLocs","CmCreqUploadComponent_ng_container_0_Template","displayPath","displayType","legacyName","spCreqUploadLocKeys","MapLocKeys","cpCreqUploadLocKeys","selectionSnapshot","selectionSubj$","mapsSubj$","creqUploadSubj$","select","addMaps","maps","fileSizeValidator","spCrcatPointsLocKeys","cpCrcatPointsLocKeys","SPSelectionFormFieldErrorIntentRequired","CPSelectionFormFieldErrorIntentRequired","SPSelectionFormFieldErrorIntentInvalid","CPSelectionFormFieldErrorIntentInvalid","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_2_div_3_div_1_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_2_div_3_div_2_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_2_div_3_Template","intents$","SPSelectionFormFieldLabelIntent","CPSelectionFormFieldLabelIntent","SPSelectionFormFieldErrorNoCredentials","CPSelectionFormFieldErrorNoCredentials","SPSelectionFormFieldErrorCredentialRequired","CPSelectionFormFieldErrorCredentialRequired","SPSelectionFormFieldErrorCredentialInvalid","CPSelectionFormFieldErrorCredentialInvalid","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_4_div_3_div_1_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_4_div_3_div_2_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_4_div_3_div_3_Template","noCerts","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_4_div_3_Template","credentials$","SPSelectionFormFieldLabelCredential","CPSelectionFormFieldLabelCredential","SPSelectionFormFieldErrorItemGroupRequired","CPSelectionFormFieldErrorItemGroupRequired","SPSelectionFormFieldErrorItemGroupInvalid","CPSelectionFormFieldErrorItemGroupInvalid","CmSelectionFormComponent_ng_container_0_ng_container_1_div_9_div_1_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_div_9_div_2_Template","SPSelectionFormFieldErrorItemNameRequired","CPSelectionFormFieldErrorItemNameRequired","SPSelectionFormFieldErrorItemNameInvalid","CPSelectionFormFieldErrorItemNameInvalid","CmSelectionFormComponent_ng_container_0_ng_container_1_div_12_div_1_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_div_12_div_2_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_2_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_ng_container_4_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_div_9_Template","CmSelectionFormComponent_ng_container_0_ng_container_1_div_12_Template","isBasic$","hideCredentials$","itemGroups$","SPSelectionFormFieldLabelItemGroup","CPSelectionFormFieldLabelItemGroup","itemNames$","SPSelectionFormFieldLabelItemName","CPSelectionFormFieldLabelItemName","SPSelectionFormButtonStepOneNext","CPSelectionFormButtonStepOneNext","CmSelectionFormComponent_ng_container_0_ng_container_1_Template","CANDIDATE_CERTS_QUERY","ITEM_GROUP_QUERY","INTENT_OPTIONS","option","showNoCertWarning","initIntentOptions","initCredentialOptions","initGroupOptions","initNameOptions","initSelection","initMaps","credentials","names","opt","cred","intent$","credential$","setErrors","fetchCCats","logicType","ccats","ccat","CPSelectionFormNoticeNoCredentials","SPSelectionFormNoticeNoCredentials","makeCReqRequest","creqs","certRequirementGroup","self","fetchCrCats","creatable","logicCcatId","certRequirementCatalogList","crcats","canCurrentAccountCreate","candidateCreateEnabled","certCatalogList","spSelectionFormLocs","cpSelectionFormLocs","CmSelectionFormComponent_ng_container_0_Template","spSelectionFormLocKeys","cpSelectionFormLocKeys","SPUploadConfirmationTextPoints","CPUploadConfirmationTextPoints","spUploadConfirmationLocKeys","cpUploadConfirmationLocKeys","cpUploadFormLocKeys","spUploadFormLocKeys","i_r3","ctx_r3","isDisabled","file_r5","CmFileUploadComponent_div_0_mat_chip_row_7_Template","fileInput_r6","click","CmFileUploadComponent_div_0_ng_container_11_Template","CmFileUploadComponent_div_0_ng_template_12_Template","attachFile","CmFileUploadComponent_div_0_mat_error_18_Template","customErrorStateMatcher","formControl","fileList_r7","multiple","multipleBtn_r8","acceptedFileTypes","CustomErrorStateMatcher","formControlName","selectedControl","controls","_value","_isDisabled","validator","validation","controlContainer","FormControl","fileInput","ElementRef","CmFileUploadComponent_div_0_Template","alert","downloadUrl","downloadTargetWindow","CmKeyValComponent_ng_container_5_span_1_Template","CmKeyValComponent_ng_container_5_span_2_Template","boolean","isBool","attrs","CmKeyValComponent_cm_inline_alert_2_Template","CmKeyValComponent_button_3_Template","CmKeyValComponent_ng_container_5_Template","CmKeyValComponent_ng_template_6_Template","noBool_r2","CmLoaderComponent","radius","stroke","hasInnerCirc","outerCirc","innerCirc","center","CmLoadingIconComponent__svg_circle_10_Template","SPSystemLocalizeModalChangesSaved","CPSystemLocalizeModalChangesSaved","LOC_KEYS","onSelectAll","onUnselectAll","CmMultiselectComponent_div_1_button_2_Template","CmMultiselectComponent_div_1_button_3_Template","search","viewOnly","opt_r5","onSelect","CmMultiselectComponent_div_2_ng_container_1_span_1_Template","filteredOptions","opt_r6","CmMultiselectComponent_div_2_ng_template_2_ng_container_0_span_1_Template","CmMultiselectComponent_div_2_ng_template_2_ng_container_0_Template","CmMultiselectComponent_div_2_ng_container_1_Template","CmMultiselectComponent_div_2_ng_template_2_Template","viewTpl_r7","CmMultiselectComponent_ng_template_3_div_0_Template","initialized","cd","searchable","searchValue","updateDisplay","changes","firstChange","onToggleSelection","visibleOptions","selectedInvisibleOptions","detectChanges","CmMultiselectComponent_div_1_Template","CmMultiselectComponent_div_2_Template","CmMultiselectComponent_ng_template_3_Template","noResults_r8","tslib__WEBPACK_IMPORTED_MODULE_3__","ChangeDetectorRef","pageHistory","goBack","back","CmNotificationsComponent","snackBar","horizontalPosition","verticalPosition","politeness","notice$","notice","popNotification","loaderMessage$","popLoader","hideLoader","text","CmModalSettings","Medium","openFromComponent","CmSnackBarA11yComponent","panelClass","SUCCESS","tslib__WEBPACK_IMPORTED_MODULE_10__","MatSnackBar","MatDialog","liveAnnouncer","snackBarRef","snackBarClass","ariaHidden","announce","dismiss","MAT_SNACK_BAR_DATA","hostVars","hostBindings","CmSnackBarA11yComponent_span_4_Template","CmSnackBarA11yComponent_ng_template_5_Template","icon_r3","CmProgressIndicatorComponent","maximumValue","width","sizeInREM","height","percentageInt","percentage","langMenu_r1","lang$","culture_r4","selectCulture","CmSelectSupportedLanguageComponent_ng_container_0_button_1_Template","CmSelectSupportedLanguageComponent_ng_container_0_button_4_Template","cultures_r5","CmSelectSupportedLanguageComponent","pathAfterCulture","cultureChangeSub","newUrl","CmSelectSupportedLanguageComponent_ng_container_0_Template","CmTimeoutComponent","stopTimeout","startTimeout","scheduleLogout","logoutSub","signOutActions","dialogSub","validateAuth$","warnDialogRef$","closeResult","tslib__WEBPACK_IMPORTED_MODULE_9__","overlay","viewRef","toggleOverlay","createOverlay","hasAttached","detach","cmOverlayContext","cmOverlayTemplate","cmOverlayTitleContext","cmOverlayTitleTemplate","TemplatePortal","attach","backdropClick","backdropClass","hasBackdrop","positionStrategy","flexibleConnectedTo","withFlexibleDimensions","withPositions","originX","originY","overlayX","overlayY","scrollStrategy","scrollStrategies","block","CmCurrentLinkDirective","rla","ariaCurrent","isActive","CmDataLabelDirective","elementClass","INTERNAL_HOSTS","CmInternalizeLinkDirective","parseRelativePath","remainingPath","linkCulture","remainder","elementRef","settingsService","ariaDescriber","getAttribute","describe","locReadonly","localizedValue","keyChangesSubj$","keyChanges$","ariaDefaultText","updateHtmlClass","showing","toggleInlineLocalization","cmLocalize","_asyncToGenerator","innerHTML","innerText","togglePathStyle","defaultLocalization","renderContainer","showInlineLocalization","hideInlineLocalization","ariaLocalizedText","getInlineBorderColor","clickListenerFn","clickListener","keyboardListenerFn","keyboardListener","openLocalizationDialog","altKey","stopPropagation","Renderer2","fg","formErrorService","ignore","CmMarkAsteriskDirective","cmAsterisk","CmSSODirective","cmSSOOptions","fullPath","CmVerticalStepperScrollerDirective","selectionChanged","stepId","_getStepLabelId","stepElement","scrollIntoView","WARN","HELP","itemNode","CertLogicFragments","Large","Small","isCMOption","CmPager","pageSubj","page$","pageData$","data$","paginationSubj","pagination$","paging","pageNext","pagePrev","currentPaging","timezone","dateString","parse","cmRouting","splitPascalPipe","URLS_TO_IGNORE","FALLBACK_URL","CmPageHistoryService","subscribed","hidePageBack","hidePageBack$","addItemToHistory","reportBadURL","goToFallbackUrl","navigateByUrl","shift","PositiveOrZero","Negative","NegativeOrZero","affiliationEmailValidator","formatStr","domain","validEmailErr","affEmail","blacklist","formats","arrayNoMatchValidator","arr","valMap","lastIndexOf","arrayNoMatch","combinedStringsLengthValidator","str1","str2","targetLength","string1","string2","combinedStringsInvalid","DATE_ERROR_KEY_DEFAULT","DATE_COMPARITOR_DEFAULT","prevDate","currentDate","dateComparitorValidator","dateConfigOrFields","dates","dateErrorKey","dateComparitor","dateConfig","errorKey","dateCtrl","validSoFar","ze","emailFormatValidator","invalidFormat","isBlacklist","formatHaystack","currentDomain","isInHaystack","factorPoints","singleFileExtensionValidator","extension","fileName","ext","fileExtension","getFilesFromControl","File","getFileSize","toFixed","fileSizeTotalValidator","numberOfMegabytes","total","fileTypeValidator","acceptedTypes","fileType","acceptedType","allOrNone","fieldNames","instanceName","te","atLeastOne","numericOrder","retVal","incomplete","imageRatioValidator","ratio","FileList","fileRatiosPassed","getFileRatio","imageRatio","FileReader","onloadend","img","Image","onload","naturalHeight","naturalWidth","readAsDataURL","lessThanOrEqualToValidator","lessThanOrEqualToField","checkAgainstField","lessThanField","checkField","lessThanOrEqualTo","numericValidator","variant","Number","isInteger","passwordMatchValidator","password","passwordConfirmation","passwordMatch","stringExclusionValidator","stringExclusion","stringExclusionFormValidator","fieldToCheck","exclusionFields","exclusionVal","exclusionMatch","uniqueInValidator","uniqueIn","vuePostalCodeValidator","mixedCharacters","tripleSequentialCharacters","passwordString","containsTriples","spacesOnly","emailFormat","affiliationEmailRequirements","urlValidator","regex","invalidUrl","vueUsaCanadaPhoneFormatValidator","lengthOfNumbers","vueZerosPhoneFormatValidator","allNumbersAreZero","singleByte","singleByteValidator","charCodeAt","notSingleByte","temporaryClientThemes","_client","_theme","fetchClientConfig$","initialize$","setClient","setClientTheme","head","logo","logoKO","logoEmail","DEFAULT_CLIENT_CONFIG","sp","cp","shareReplay","pageSizeOptions","pageSize","disableEmailSignatureLogo","initialViewState","candidateSearch","pathname","enableLanguageParam","cultureCode","searchParams","DEFAULT_CULTURE","_culture","fetchExistingCultures$","fetchSupportedCultures$","cultureSnapshot","setCulture","cltr","dpRoot","SYSTEM_ENUM_ROOT","cpBadgeTypeEnumLocs","CPBadgeTypeEnumC","CPBadgeTypeEnumE","CPBadgeTypeEnumR","spBadgeTypeEnumLocs","SPBadgeTypeEnumC","SPBadgeTypeEnumE","SPBadgeTypeEnumR","BADGE_TYPE_ENUM_LOCS","cpBadgeTypeKeys","r","spBadgeTypeKeys","sharedLocData","SYSTEM_ENUM_TYPE","sharedSpLocData","sharedCpLocData","cpBcatGrantTypeEnumLocs","CPBcatGrantTypeEnumManual","CPBcatGrantTypeEnumOncePerCcat","CPBcatGrantTypeEnumOncePerCcatAchievedLogic","CPBcatGrantTypeEnumOncePerCcatAchievement","CPBcatGrantTypeEnumOncePerCcatList","spBcatGrantTypeEnumLocs","SPBcatGrantTypeEnumManual","SPBcatGrantTypeEnumOncePerCcat","SPBcatGrantTypeEnumOncePerCcatAchievedLogic","SPBcatGrantTypeEnumOncePerCcatAchievement","SPBcatGrantTypeEnumOncePerCcatList","BCAT_GRANT_TYPE_ENUM_LOCS","cpBcatGrantTypeKeys","spBcatGrantTypeKeys","cpBcatTypeEnumLocs","CPBcatTypeEnumDownload","CPBcatTypeEnumLineup","CPBcatTypeEnumStampedPdf","CPBcatTypeEnumTokenGlobal","CPBcatTypeEnumTokenUnique","CPBcatTypeEnumUrl","spBcatTypeEnumLocs","SPBcatTypeEnumDownload","SPBcatTypeEnumLineup","SPBcatTypeEnumStampedPdf","SPBcatTypeEnumTokenGlobal","SPBcatTypeEnumTokenUnique","SPBcatTypeEnumUrl","BCAT_TYPE_ENUM_LOCS","cpBcatTypeKeys","spBcatTypeKeys","cpBenefitStatusEnumLocs","CPBenefitStatusEnumActive","CPBenefitStatusEnumUsed","CPBenefitStatusEnumExpired","spBenefitStatusEnumLocs","SPBenefitStatusEnumActive","SPBenefitStatusEnumUsed","SPBenefitStatusEnumExpired","BENEFIT_STATUS_ENUM_LOCS","cpBenefitStatusKeys","spBenefitStatusKeys","cpWuserCandRestrictTypeEnumLocs","CPWuserCandRestrictTypeEnumFiltered","CPWuserCandRestrictTypeEnumRestricted","CPWuserCandRestrictTypeEnumUnrestricted","spWuserCandRestrictTypeEnumLocs","SPWuserCandRestrictTypeEnumFiltered","SPWuserCandRestrictTypeEnumRestricted","SPWuserCandRestrictTypeEnumUnrestricted","WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS","cpWuserCandRestrictTypeKeys","spWuserCandRestrictTypeKeys","cpCateidTypeEnumLocs","CPCateidTypeEnumCcat","CPCateidTypeEnumCrcat","CPCateidTypeEnumExcat","CPCateidTypeEnumExcatDataProvider","spCateidTypeEnumLocs","SPCateidTypeEnumCcat","SPCateidTypeEnumCrcat","SPCateidTypeEnumExcat","SPCateidTypeEnumExcatDataProvider","CATEID_TYPE_ENUM_LOCS","cpCateidTypeKeys","spCateidTypeKeys","cpCcatExtensionTypeEnumLocs","CPCcatExtensionTypeExtendFromInactiveDate","CPCcatExtensionTypeIncludeSuspendedTime","CPCcatExtensionTypeNormal","spCcatExtensionTypeEnumLocs","SPCcatExtensionTypeExtendFromInactiveDate","SPCcatExtensionTypeIncludeSuspendedTime","SPCcatExtensionTypeNormal","CCAT_EXTENSION_TYPE_ENUM_LOCS","cpCcatExtensionTypeKeys","spCcatExtensionTypeKeys","cpCcatPathTypeEnumLocs","CPCcatPathTypeOneShot","CPCcatPathTypeOneShotExtendable","CPCcatPathTypeRepeatable","spCcatPathTypeEnumLocs","SPCcatPathTypeOneShot","SPCcatPathTypeOneShotExtendable","SPCcatPathTypeRepeatable","CCAT_PATH_TYPE_ENUM_LOCS","cpCcatPathTypeKeys","spCcatPathTypeKeys","cpCertCatalogStatusEnumLocs","CPCertCatalogStatusEnumActive","CPCertCatalogStatusEnumFuture","CPCertCatalogStatusEnumRetired","CPCertCatalogStatusEnumSunset","spCertCatalogStatusEnumLocs","SPCertCatalogStatusEnumActive","SPCertCatalogStatusEnumFuture","SPCertCatalogStatusEnumRetired","SPCertCatalogStatusEnumSunset","CERT_CATALOG_STATUS_ENUM_LOCS","cpCertCatalogStatusKeys","spCertCatalogStatusKeys","cpCertStatusEnumLocs","CPCertStatusEnumActive","CPCertStatusEnumDeleted","CPCertStatusEnumSuspended","CPCertStatusEnumExpired","CPCertStatusEnumStarted","spCertStatusEnumLocs","SPCertStatusEnumActive","SPCertStatusEnumDeleted","SPCertStatusEnumSuspended","SPCertStatusEnumExpired","SPCertStatusEnumStarted","CERT_STATUS_ENUM_LOCS","cpCertStatusKeys","spCertStatusKeys","spCfcRuleEnumLocs","SPCfcRuleEnumCcatAchieved","SPCfcRuleEnumCcatActive","SPCfcRuleEnumCcatExpired","SPCfcRuleEnumCcatInactive","SPCfcRuleEnumCcatSuspended","SPCfcRuleEnumCrcatAchieved","SPCfcRuleEnumCrcatActive","SPCfcRuleEnumCrcatInactive","SPCfcRuleEnumExcatFailed","SPCfcRuleEnumExcatPassed","SPCfcRuleEnumExcatTaken","SPCfcRuleEnumIcCodeAddr1","SPCfcRuleEnumStandingAchieved","SPCfcRuleEnumStandingActive","SPCfcRuleEnumStandingInactive","SPCfcRuleEnumClaListItems","spCfcRuleKeys","cpChTypeEnumLocs","CPChTypeEnumInitialCert","CPChTypeEnumLinkedExtension","CPChTypeEnumLinkedSuspendedExtension","CPChTypeEnumManualCertAdjust","CPChTypeEnumManualCertAdjustNle","CPChTypeEnumManualCertCreate","CPChTypeEnumManualCertCreateNle","CPChTypeEnumManualCertExtend","CPChTypeEnumManualCertExtendNle","CPChTypeEnumManualCertReduce","CPChTypeEnumManualCertReduceNle","CPChTypeEnumNormalExtension","CPChTypeEnumSuspendedExtension","spChTypeEnumLocs","SPChTypeEnumInitialCert","SPChTypeEnumLinkedExtension","SPChTypeEnumLinkedSuspendedExtension","SPChTypeEnumManualCertAdjust","SPChTypeEnumManualCertAdjustNle","SPChTypeEnumManualCertCreate","SPChTypeEnumManualCertCreateNle","SPChTypeEnumManualCertExtend","SPChTypeEnumManualCertExtendNle","SPChTypeEnumManualCertReduce","SPChTypeEnumManualCertReduceNle","SPChTypeEnumNormalExtension","SPChTypeEnumSuspendedExtension","CH_TYPE_ENUM_LOCS","cpChTypeKeys","spChTypeKeys","cpCprStateEnumLocs","CPCprStateEnumBroadcast","CPCprStateEnumComplete","CPCprStateEnumError","CPCprStateEnumQueued","CPCprStateEnumRejected","CPCprStateEnumRequested","spCprStateEnumLocs","SPCprStateEnumBroadcast","SPCprStateEnumComplete","SPCprStateEnumError","SPCprStateEnumQueued","SPCprStateEnumRejected","SPCprStateEnumRequested","CPR_STATE_ENUM_LOCS","cpCprStateKeys","spCprStateKeys","cpCprTypeEnumLocs","CPCprTypeEnumCertRebuild","CPCprTypeEnumCertRebuildBulk","CPCprTypeEnumCertRegression","CPCprTypeEnumInvalid","CPCprTypeEnumMaintenance","CPCprTypeEnumManualAdjustment","CPCprTypeEnumManualCertify","CPCprTypeEnumManualExtension","CPCprTypeEnumManualReduction","CPCprTypeEnumNormal","CPCprTypeEnumNormalInRebuild","CPCprTypeEnumNormalWithoutTree","spCprTypeEnumLocs","SPCprTypeEnumCertRebuild","SPCprTypeEnumCertRebuildBulk","SPCprTypeEnumCertRegression","SPCprTypeEnumInvalid","SPCprTypeEnumMaintenance","SPCprTypeEnumManualAdjustment","SPCprTypeEnumManualCertify","SPCprTypeEnumManualExtension","SPCprTypeEnumManualReduction","SPCprTypeEnumNormal","SPCprTypeEnumNormalInRebuild","SPCprTypeEnumNormalWithoutTree","CPR_TYPE_ENUM_LOCS","cpCprTypeKeys","spCprTypeKeys","cpCrcatTypeEnumLocs","CPCrcatTypeEnumAdditionalAgreement","CPCrcatTypeEnumCeActivity","CPCrcatTypeEnumCertAgreement","CPCrcatTypeEnumEnrollment","CPCrcatTypeEnumExternalCert","CPCrcatTypeEnumExternalExam","CPCrcatTypeEnumLab","CPCrcatTypeEnumMiscellaneous","CPCrcatTypeEnumParticipation","CPCrcatTypeEnumProgramFee","CPCrcatTypeEnumStandingLengthyCert","CPCrcatTypeEnumStandingMultiCert","CPCrcatTypeEnumTraining","spCrcatTypeEnumLocs","SPCrcatTypeEnumAdditionalAgreement","SPCrcatTypeEnumCeActivity","SPCrcatTypeEnumCertAgreement","SPCrcatTypeEnumEnrollment","SPCrcatTypeEnumExternalCert","SPCrcatTypeEnumExternalExam","SPCrcatTypeEnumLab","SPCrcatTypeEnumMiscellaneous","SPCrcatTypeEnumParticipation","SPCrcatTypeEnumProgramFee","SPCrcatTypeEnumStandingLengthyCert","SPCrcatTypeEnumStandingMultiCert","SPCrcatTypeEnumTraining","CRCAT_TYPE_ENUM_LOCS","cpCrcatTypeKeys","spCrcatTypeKeys","creqReviewStateDefaults","spCReqReviewStateLocs","CReqReviewStateNone","CReqReviewStatePendingPostReview","CReqReviewStatePendingPreReview","CReqReviewStateReviewed","CReqReviewStateUnderReview","SP_CREQ_REVIEW_STATE_ENUM_LOCS","spCReqReviewStateKeys","cpCReqReviewStateLocs","CP_CREQ_REVIEW_STATE_ENUM_LOCS","cpCReqReviewStateKeys","cpCreqStatusEnumLocs","CPCreqStatusEnumActive","CPCreqStatusEnumInActive","CPCreqStatusEnumInvalid","spCreqStatusEnumLocs","SPCreqStatusEnumActive","SPCreqStatusEnumInActive","SPCreqStatusEnumInvalid","CREQ_STATUS_ENUM_LOCS","cpCreqStatusKeys","spCreqStatusKeys","cpETransactionItemCatTypeEnumLocs","CPETransactionItemCatTypeEnumCrcat","CPETransactionItemCatTypeEnumFcat","CPETransactionItemCatTypeEnumNone","spETransactionItemCatTypeEnumLocs","SPETransactionItemCatTypeEnumCrcat","SPETransactionItemCatTypeEnumFcat","SPETransactionItemCatTypeEnumNone","E_TRANSACTION_STATE_LOCS","cpETransactionItemCatTypeKeys","cpETransactionStateEnumLocs","CPETransactionStateEnumFailure","CPETransactionStateEnumPending","CPETransactionStateEnumSuccess","CPETransactionStateEnumVoid","spETransactionStateEnumLocs","SPETransactionStateEnumFailure","SPETransactionStateEnumPending","SPETransactionStateEnumSuccess","SPETransactionStateEnumVoid","cpETransactionStateKeys","cpEligibleExamActionTypeEnumLocs","CPEligibleExamActionTypeEnumLiteweightRecertify","CPEligibleExamActionTypeEnumSchedule","spEligibleExamActionTypeEnumLocs","SPEligibleExamActionTypeEnumLiteweightRecertify","SPEligibleExamActionTypeEnumSchedule","ELIGIBLE_EXAM_ACTION_TYPE_ENUM_LOCS","cpEligibleExamActionTypeKeys","spEligibleExamActionTypeKeys","GLOBAL_ENUM_KEYS","cpCertStatus","spCertStatus","cpExamGradeLabel","cpExamGradeLabelKeys","spExamGradeLabel","spExamGradeLabelKeys","cpExamState","cpExamStateKeys","spExamState","spExamStateKeys","cpBenefitStatus","spBenefitStatus","spCfcRule","cpCcatExtensionType","spCcatExtensionType","cpCcatPathType","spCcatPathType","cpBadgeType","spBadgeType","cpBcatType","spBcatType","cpBcatGrantType","spBcatGrantType","cpFcatQueueType","cpFcatQueueTypeKeys","spFcatQueueType","spFcatQueueTypeKeys","cpCertCatalogStatus","spCertCatalogStatus","cpEligibleExamActionType","spEligibleExamActionType","cpCateidType","spCateidType","cpCReqReviewState","spCReqReviewState","cpCrcatType","spCrcatType","cpCreqStatus","spCreqStatus","cpCprType","spCprType","cpCprState","spCprState","cpChType","spChType","cpFulfillmentStatus","cpFulfillmentStatusKeys","spFulfillmentStatus","spFulfillmentStatusKeys","cpWuserCandRestrictType","spWuserCandRestrictType","enumLocs","cpExamGradeLabelEnumLocs","spExamGradeLabelEnumLocs","cpExamStateEnumLocs","spExamStateEnumLocs","cpFcatQueueTypeEnumLocs","spFcatQueueTypeEnumLocs","cpFulfillmentStatusEnumLocs","spFulfillmentStatusEnumLocs","cpExauthStateEnumLocs","spExauthStateEnumLocs","SPExauthStateEnumComplete","SPExauthStateEnumError","SPExauthStateEnumRejected","SPExauthStateEnumQueued","SPExauthStateEnumRequested","CPExauthStateEnumComplete","CPExauthStateEnumError","CPExauthStateEnumRejected","CPExauthStateEnumQueued","CPExauthStateEnumRequested","EX_AUTH_STATE_ENUM_LOCS","CPExamGradeLabelEnumFail","CPExamGradeLabelEnumPass","CPExamGradeLabelEnumUngraded","SPExamGradeLabelEnumFail","SPExamGradeLabelEnumPass","SPExamGradeLabelEnumUngraded","EXAM_GRADE_LABEL_ENUM_LOCS","CPExamStateEnumCorrupted","CPExamStateEnumHidden","CPExamStateEnumInvalid","CPExamStateEnumOk","CPExamStateEnumUnderReview","SPExamStateEnumCorrupted","SPExamStateEnumHidden","SPExamStateEnumInvalid","SPExamStateEnumOk","SPExamStateEnumUnderReview","EXAM_STATE_ENUM_LOCS","OK","CPFcatQueueTypeEnumEachNewItem","CPFcatQueueTypeEnumManual","CPFcatQueueTypeEnumNever","CPFcatQueueTypeEnumOnce","SPFcatQueueTypeEnumEachNewItem","SPFcatQueueTypeEnumManual","SPFcatQueueTypeEnumNever","SPFcatQueueTypeEnumOnce","FCAT_QUEUE_TYPE_ENUM_LOCS","fulfRoot","CPFulfillmentStatusEnumFailed","CPFulfillmentStatusEnumCompleted","CPFulfillmentStatusEnumPending","CPFulfillmentStatusEnumOrdered","CPFulfillmentStatusEnumAvailable","CPFulfillmentStatusEnumNever","CPFulfillmentStatusEnumManual","SPFulfillmentStatusEnumFailed","SPFulfillmentStatusEnumCompleted","SPFulfillmentStatusEnumPending","SPFulfillmentStatusEnumOrdered","SPFulfillmentStatusEnumAvailable","SPFulfillmentStatusEnumNever","SPFulfillmentStatusEnumManual","FULFILLMENT_STATUS_ENUM_LOCS","sharedProps","selfMergeErrorsLocs","CPSelfMergePendingMerge","CPSelfMergeMultipleRecords","CPSelfMergeNoRecords","CPSelfMergeInvalidRequest","CPSelfMergeUniqueLoser","ErrorLocTypeGuard","errorLocs","LOCS","CMSystemErrorDefault","SYSTEM_ERROR_ROOT","SYSTEM_ERROR_TYPE","CMSystemErrorAuth","CMSystemErrorFormIssue","CMSystemErrorTryAgain","CMSystemErrorNoChanges","e7225c2003514b9bbdbad677f0effd52","d25aaeba218f49b2afe95f07b610db0e","SPMergeUniqueLoser","ba5e95f44eff426baed79f1230c977a8","GLOBAL_ERROR_KEYS","examsDataLocs","CPExamsAlteredGradeContent","SYSTEM_FEATURE_ROOT","EXAMS_DATA_SYSTEM_LOCS","systemLocs","systemGlobalLocs","SYSTEM_LOC_KEYS","Errors","GlobalValues","GLOBAL_SYSTEM_LOCS","Enums","sharedData","CMSystemGlobalTrue","CMSystemGlobalFalse","CMSystemGlobalNA","CMSystemGlobalDownload","CMSystemGlobalNever","CMSystemGlobalEmailPlaceholder","CMSystemGlobalVisit","CMSystemGlobalNoData","spCredentialAgreementLoc","SPCredentialAgreement","AGREEMENT_LOC","ignorePortal","LocalizationLoadFactory","service","load","forChild","mapClientLocs","defs","newLocs","localDefinition","getLocType","cloc","locType","mapClientLoc","currentPortal","hasClientValue","englishValueResolved","getClientValue","cultureInfoName","locPortal","currentPortalType","u","SelfMapObjectKeys","errorLocMap","bf537a3fa9424bbf85b9b74759585a6a","c04a632db9d14465a6c896a065956446","CLIENT_LOCALIZATIONS","CREATE_CLIENT_LOCALIZATION","DELETE_CLIENT_LOCALIZATION","UPDATE_CLIENT_LOCALIZATION","ClientLocOrNullGuard","ENTRY_EXISTS_GUID","legacyService","Keys","localizations$","mapLocalizationItem","mapLocType","loaded$","booleanDisplay$","BoolUtil","displayStrings","getLoc","getPartialLoc","partialName","getFromParitalName","find$","getLoc$","getLocs$","getLegacyLocValue$","findValues$","locMap","Ie","unloadedLocs$","negateObjects","filteredLocs","mappedLocs","fetchClientLocalizations$","clocs","updateLocs","loadRemaingLocs$","locArray","acc","clientLocs","reloadLoc$","ue","getByCulture$","fetchLocCultureValue$","deleteClientLoc$","getLocTypes","deleteClientLocalizationList","handleMutationUpdate","createOrUpdateClientLoc$","clientLocExists$","exists","updateClientLoc$","createClientLoc$","updateClientLocalizationList","createClientLocalizationList","addLegacyLocalizations","findGUIDLocName","updateType","currentPortalLoc","mapLocalization","mapToValue","keysArr","J","clientDbAlias","clientLocalizationList","getPortalType","Debug","Information","Warning","Critical","LoggingModule","headerStyle","logToApi","sendToApi","trace","logToConsole","debug","color","header","groupCollapsed","hasSuppressHeaders","CmRoutingService","routeWithContext$","routeWithNewCulture$","pathClient","pathCulture","basePaths","requestedLanguage","routedCulture","paramCulture","queryParamsHandling","clientMatch","clients","storageEvent","events$","handleStorageEvent","emitStorageEvent","dataStr","localStorage","getItem","timestampKey","getKeys","removeItem","setItem","addMinutes","toISOString","event$","preloadedCP","REQUIREMENTS_QUERY","CpCandidateRequirementsService","candidateRequirements$","candidateRequirements","childRoute","hasRequirement","getRequirementsUrl","certAgreementRequired","nameUpdateRequired","minimumPrimaryProfileInformationRequired","minimumPrimaryAddressInformationRequired","primaryInformationUpdateRequired","requiredSettingsMissing","affiliationUpdateRequired","candidateNameVerificationRequired","candidateEmailConfirmationRequired","dateOfBirthInvalid","CpLoadModuleOnceGuard","targetModule","CpSSOGuard","ssoService","getIngressType","hasCorrectQueryParams","handleSso","jwtSso","QUERY_CURRENT_CANDIDATE","MUTATION_UNIMPERSONATE","_auth","_settings","_logger","_http","fetchCandidateQuery$","getUserByEmailCredentials","candidateEmailAddr","candidatePassword","getUserByLoginCredentials","candidateLoginId","getUserByUsernameorEmail","candidateEmailOrLogin","getUserViaImpersonation","login","withLocalization","unimpersonate","targetUrl","targetMethod","generateShortLivedToken","clearUser","firstTimeLogin","firstTimePassword","forgotPasswordByEmail","emailAddr","forgotPasswordByUsername","loginId","resetCandidatePassword","preferredNameFirst","nameFirst","preferredNameLast","nameLast","dataProvider","parentModule","achievementsDPRoot","cpAchievementsModuleLocs","achievementEcertLocs","achievementLogosLocs","CPAchievementEcertExpired","CPAchievementEcertActive","CPAchievementEcertNever","CPAchievementEcertName","CPAchievementEcertGroup","CPAchievementEcertStatus","CPAchievementEcertActiveDate","CPAchievementEcertExpireDate","CPAchievementEcertActions","CPAchievementEcertDownloadButton","CPAchievementEcertDownloadTooltip","CPAchievementEcertPageTitle","CPAchievementEcertPageDescription","CPAchievementLogosName","CPAchievementLogosGroup","CPAchievementLogosDownloadButton","CPAchievementLogosPageTitle","CPAchievementLogosPageDescription","CPAchievementLogosActions","cpBenefitModuleLocs","createLineupLocs","cpClaimBenefitLocs","cpBenefitDetailLocs","cpBenefitInfoLocs","cpBenefitsCatalogLocs","cpBenefitLineupModalLocs","CPClaimBenefitButton","CPClaimBenefitNoticeChangesSaved","CPBenefitDetailOptInMessage","CPBenefitDetailLabelInstructions","CPBenefitDetailLabelType","CPBenefitDetailLabelToken","CPBenefitDetailLabelUrl","CPBenefitDetailLabelUrlPreview","CPBenefitDetailButtonGoBack","CPBenefitDetailTitlePage","CPBenefitDetailContentPageDescription","CPBenefitInfoButtonMoreInfo","CPBenefitsCatalogLabelStatus","CPBenefitsCatalogLabelName","CPBenefitsCatalogLabelType","CPBenefitsCatalogLabelExpireDate","CPBenefitsCatalogLabelGroup","CPBenefitsCatalogLabelUrl","CPBenefitsCatalogLabelToken","CPBenefitsCatalogTitlePage","CPBenefitsCatalogContentPageDescription","CPBenefitsCatalogContentInvalidToken","CPBenefitsCatalogContentPreview","CPBenefitsCatalogButtonViewMore","CPCreateLineupButton","CPCreateLineupSuccessNotification","CPCreateLineupFailureNotification","CPBenefitLineupModalNoticeChangesSaved","CPBenefitLineupModalOptInHasLineup","CPBenefitLineupModalButtonClose","CPBenefitLineupModalButtonOptIn","CPBenefitLineupModalOptInInstructions","CPBenefitLineupModalNoEmailWarning","CPBenefitLineupModalOptInSuccess","CPBenefitLineupModalOptInFailure","catalogsModuleLocs","cpCertCatalogLocs","cpExamCatalogLocs","CPCertCatalogFilterByGroupLabel","CPExamCatalogFilterByGroupLabel","cpCertDetailLocs","CPCertDetailLabelVerificationId","sharedLocProps","cpCertStatusLocs","CPCertStatusName","CPCertStatusNameAbbreviation","CPCertStatusGroupName","CPCertStatusStatus","CPCertStatusActiveDate","CPCertStatusInactiveDate","CPCertStatusExpireDate","CPCertStatusProgramNumber","CPCertStatusAction","CPCertStatusEmpty","CPCertStatusViewMore","CPCertStatusSnowflakeBadgeId","CPCertStatusFilterByGroupLabel","cpCertModuleLocs","cpAddressConfirmationLocs","CPAddressConfirmationTitle","CPAddressConfirmationUpdateButton","CPAddressConfirmationConfirmButton","CPAddressConfirmationConfirmedButton","CPAddressConfirmationCancelButton","CPAddressConfirmationMailingAddressTitle","CPAddressConfirmationLocalizedAddressTitle","CPAddressConfirmationCountryLabel","CPAddressConfirmationAddressLabel","CPAddressConfirmationAddress2Label","CPAddressConfirmationAddress3Label","CPAddressConfirmationCityLabel","CPAddressConfirmationStateLabel","CPAddressConfirmationPostalCodeLabel","CPAddressConfirmationPhoneLabel","CPAddressConfirmationPhoneRequiredError","CPAddressConfirmationCountryRequiredError","CPAddressConfirmationPhoneUsaCanadaError","CPAddressConfirmationPhoneZerosError","CPAddressConfirmationBusinessCheckbox","CPAddressConfirmationSubmitButton","CPAddressConfirmationAddressRequiredError","CPAddressConfirmationStateRequiredError","CPAddressConfirmationStateRequiredVueHint","CPAddressConfirmationStateInvalidError","CPAddressConfirmationInvalidCountryError","CPAddressConfirmationInvalidStateError","CPAddressConfirmationPostalCodeRequiredError","CPAddressConfirmationPostalCodeUSAError","CPAddressConfirmationPostalCodeCanadaError","CPAddressConfirmationPhoneFormatError","CPAddressConfirmationRequiredFieldsMissing","CPAddressConfirmationCityRequiredError","CPAddressConfirmationBusinessCheckboxLabel","CPAddressConfirmationAddressUpdatedMessage","cpEcommerceHistoryLocs","CPECommerceHistoryTitle","CPECommerceHistoryPageDescription","CPECommerceHistoryStatusLabel","CPECommerceHistoryIdLabel","CPECommerceHistoryDatePurchasedLabel","CPECommerceHistoryNameLabel","CPECommerceHistoryCodeLabel","CPECommerceHistoryTypeLabel","CPECommerceHistoryPriceLabel","ecommerceHistoryLocKeys","cpEcommerceStoreLocs","CPECommerceStoreTitle","CPECommerceStorePageDescription","CPECommerceStoreNameLabel","CPECommerceStoreCodeLabel","CPECommerceStoreTypeLabel","CPECommerceStorePriceLabel","CPECommerceStorePurchaseButton","ecommerceStoreLocKeys","cpCreqLocs","CPContinuingEducationUnderReviewContent","CPContinuingEducationInvalidContent","CPContinuingEducationValidContent","CPContinuingEducationInvalidLabel","cpExamsLocs","CPExamsScaledScoreLabel","CPExamsFilterByGroupLabel","cpHistoryModuleLocs","homeModuleLocs","cpNewsArticlesLocs","CPNewsArticlesDate","CPNewsArticlesHeadline","forgotPasswordLocs","CPForgotPasswordMethod","CPLoginEmailField","CPLoginUsernameField","CPLoginUsernameError","CPLoginEmailRequired","CPForgotPasswordSubmit","CPForgotPasswordCancel","CPForgotPasswordRequestConfirmation","CPForgotPasswordRequestConfirmationFailure","loginLocs","CPLoginNewCandidateRegister","CPLoginMethodLabel","CPLoginEmailLabel","CPLoginUsernameLabel","CPLoginUsernameOrEmailLabel","CPLoginUsernameorEmailRequiredError","CPLoginUsernameFieldError","CPLoginEmailRequiredError","CPLoginEmailInvalidError","CPLoginPasswordLabel","CPLoginPasswordFieldError","CPLoginSubmitButton","CPLoginForgotPasswordButton","CPLoginRegisterButton","CPLoginCustomMessage","cpLoginModuleLocs","cpOtherAchievementAddLocs","CPOtherAchievementsAddSectionTitle","cpOtherAchievementEditLocs","CPOtherAchievementsEditSectionTitle","pathStart","sharedProperties","fieldLabelDescriptionStart","cpOtherAchievementForm","CPOtherAchievementFormLabelVendor","CPOtherAchievementFormErrorVendorRequired","CPOtherAchievementFormLabelName","CPOtherAchievementFormErrorNameRequired","CPOtherAchievementFormLabelExpirationDate","CPOtherAchievementFormLabelDateTaken","CPOtherAchievementFormLabelExternalId","CPOtherAchievementFormErrorExternalId","CPOtherAchievementFormLabelActiveDate","CPOtherAchievementFormErrorActiveDate","CPOtherAchievementFormErrorActiveDateMax","CPOtherAchievementFormErrorDateTaken","CPOtherAchievementFormLabelExpireDate","CPOtherAchievementFormContentExpireHint","CPOtherAchievementFormContentUrlHint","CPOtherAchievementFormLabelVerificationUrl","CPOtherAchievementFormErrorVerificationUrl","CPOtherAchievementFormContentAgreement","CPOtherAchievementFormButtonCancel","CPOtherAchievementFormButtonAddCert","CPOtherAchievementFormButtonUpdateCert","CPOtherAchievementFormNotificationSuccess","CPOtherAchievementFormErrorDateComparison","cpOtherAchievementLocs","CPOtherAchievementsPageTitle","CPOtherAchievementsName","CPOtherAchievementsVendor","CPOtherAchievementsStatus","CPOtherAchievementsDateAchieved","CPOtherAchievementsExpireDate","CPOtherAchievementsCertId","CPOtherAchievementsAdd","CPOtherAchievementsEdit","sharedLocDefs","cpProfileAddressFormLocs","CPProfileAddressFormLabelAddress","CPProfileAddressFormLabelAddressContinued1","CPProfileAddressFormLabelAddressContinued2","CPProfileAddressFormLabelBusinessAddress","CPProfileAddressFormLabelCity","CPProfileAddressFormLabelCountry","CPProfileAddressFormLabelFax","CPProfileAddressFormLabelPhone","CPProfileAddressFormLabelPostal","CPProfileAddressFormLabelState","CPProfileAddressFormErrorAddressRequired","CPProfileAddressFormErrorCityRequired","CPProfileAddressFormErrorCountryRequired","CPProfileAddressFormErrorInvalidCountry","CPProfileAddressFormErrorStateInvalid","CPProfileAddressFormErrorStateRequired","CPProfileAddressFormErrorStateRequiredVueHint","CPProfileAddressFormErrorPostalRequired","CPProfileAddressFormErrorPostalVueUSA","CPProfileAddressFormErrorPostalVueCanada","CPProfileAddressFormErrorPhoneRequired","CPProfileAddressFormErrorPhoneVueUsaCanada","CPProfileAddressFormErrorPhoneVueNoZeros","CPProfileAddressFormErrorPostalMaxLength","CPProfileAddressFormButtonCancel","CPProfileAddressFormButtonUpdateAddress","PROFILE_ADDRESS_FORM_LOC_KEYS","mappedAddressFormLocs","myInformationLocs","CPProfileMyInformationLabelDataProvider","cpProfileRouteLocs","CPProfileAffiliationTitle","CPProfileAffiliationPageDescription","CpProfileRouteLocs","cpProfileModuleLocs","selfMergeRouteLocs","selfMergeDPRoot","CPSelfMergeRouteTitle","CPSelfMergeRoutePageDescription","selfMergeValidateLocs","CPSelfMergeValidateSectionTitle","CPSelfMergeValidateSuccess","CPSelfMergeValidateError","selfMergeLocs","CPSelfMergeSearchSectionTitle","CPSelfMergeSearchLabel","CPSelfMergeEmailAddressLabel","CPSelfMergeIDLabel","CPSelfMergeEmailRequired","CPSelfMergeIDRequired","CPSelfMergeEmailInvalid","CPSelfMergeExternalIdInvalid","CPSelfMergeEmailAccessConfirmation","CPSelfMergeSubmit","CPSelfMergeSuccessCheckEmail","CPSelfMergeSuccessContactSupport","CPSelfMergeSuccessNotification","cpEmployeeRegistrationLocs","CPEmployeeRegistrationCharacterExclusionError","publicDPRoot","firstTimeLoginLocs","CPFirstTimeLoginPasswordRequirements","CPFirstTimeLoginTokenExpired","CPFirstTimeLoginCandidateDataNotFound","CPFirstTimeLoginRequestConfirmation","CPFirstTimeLoginValidationDataNotFound","CPFirstTimeLoginPasswordConfirmation","CPFirstTimeLoginPageTitle","CPFirstTimeLoginRegisterButton","CPFirstTimeLoginLoggedInBefore","CPFirstTimeLoginTextAbove","CPFirstTimeLoginMethod","CPFirstTimeLoginEmailMenuItem","CPFirstTimeLoginScoreReportRegNumber","CPFirstTimeLoginScoreReportTestId","CPFirstTimeLoginLastName","CPFirstTimeLoginLastNameRequired","CPFirstTimeLoginRegistrationNumber","CPFirstTimeLoginTestingId","CPFirstTimeLoginUsernameError","CPFirstTimeLoginEmailField","CPFirstTimeLoginNewEmailField","CPFirstTimeLoginEmailRequired","CPFirstTimeLoginInvalidEmail","CPFirstTimeLoginNewPasswordField","CPFirstTimeLoginPasswordField","CPFirstTimeLoginPasswordNameLogin","CPFirstTimeLoginPasswordRequired","CPFirstTimeLoginPasswordMinLength","CPFirstTimeLoginPasswordMaxLength","CPFirstTimeLoginPasswordsDontMatch","CPFirstTimeLoginConfirmPassword","CPFirstTimeLoginPasswordConfirmationRequired","CPFirstTimeLoginSubmit","CPFirstTimeLoginConfirmationMessage","cpPublicBadgePageLocs","CPPublicBadgeNotFound","CPPublicBadgeCriteriaButton","cpPublicBadgeDetailLocs","CPPublicBadgeContentImageAltTag","CPPublicBadgeLabelDescription","CPPublicBadgeLabelDateEarned","CPPublicBadgeLabelIssuedTo","CPPublicBadgeLabelIssuer","CPPublicBadgeLabelLastAdjustmentDate","CPPublicBadgeLabelValidThrough","CPPublicBadgeTitleBadgeDetails","CPPublicBadgeLabelOrganization","CPPublicBadgeLabelUrl","CPPublicBadgeContentVisit","CPPublicBadgeLabelViews","CPPublicBadgeLabelCriteria","BADGE_DETAIL_LOC_KEYS","mapBadgeDetailLocs","BadgeDetailViewContentImageAltTag","BadgeDetailViewContentVisit","BadgeDetailViewLabelOrganization","BadgeDetailViewLabelUrl","BadgeDetailViewTitleBadgeDetails","BadgeDetailViewLabelIssuedTo","BadgeDetailViewLabelIssuer","BadgeDetailViewLabelViews","BadgeDetailViewLabelDateEarned","BadgeDetailViewLabelLastAdjustmentDate","BadgeDetailViewLabelValidThrough","BadgeDetailViewLabelCriteria","BadgeDetailViewLabelDescription","cpSelfRegistrationLocs","CPSelfRegistrationFormEmailHint","CPSelfRegistrationFormPostalCodeRequired","CPSelfRegistrationFormPostalCodeVueUSA","CPSelfRegistrationFormPostalCodeVueCanada","CPSelfRegistrationFormPhoneRequired","CPSelfRegistrationFormPhoneVueUsaCanada","CPSelfRegistrationFormPhoneVueNoZeros","CPSelfRegistrationFormCharacterExclusionError","cpSSOErrorLocs","CPSSOErrorMessage","CPSSOErrorTryAgain","CPSSOErrorCustomVueEgress","CPSSOErrorCustomVueSupport","cpSSOIngressErrorLocs","CPSSOIngressErrorMessage","CPSSOIngressErrorTryAgain","CPSSOIngressErrorPageTitle","cpPublicModuleLocs","scheduleExamLocs","CPScheduleExamAuthorizationError","CPScheduleExamAuthorizationUnauthorized","CPScheduleExamAuthorizationAuthorized","CPScheduleExamAuthorizationAuthError","CPScheduleExamAuthorizationAuthSuccess","CPScheduleExamIntellumAction","CPScheduleExamLabelFilterByGroup","cpExamSchedulingModuleLocs","ssoEgressCertiverseLocs","CPSSOEgressCertiverseButton","CPSSOEgressCertiverseTabTitle","CPSSOEgressCertiversePageTitle","CPSSOEgressCertiversePageDescription","ssoEgressKryterionLocs","CPSSOEgressKryterionButton","CPSSOEgressKryterionTabTitle","CPSSOEgressKryterionPageTitle","CPSSOEgressKryterionPageDescription","ssoTestwiseEgressLocs","CPSSOEgressTestwiseButton","CPSSOEgressTestwiseTabTitle","CPSSOEgressTestwisePageTitle","CPSSOEgressTestwisePageDescription","ssoEgressVueLocs","CPSSOEgressVueButton","CPSSOEgressVueLoadingMessage","CPSSOEgressVueRedirectFailure","CPSSOEgressVueTabTitle","CPSSOEgressVuePageTitle","CPSSOEgressVuePageDescription","cpSSOEgressModuleLocs","cpBadgeDetailPageLocs","CPBadgeDetailBackButton","CPBadgeDetailShareButton","CPBadgeDetailPageTitle","cpBadgeDetailLocs","CPBadgeDetailContentImageAltTag","CPBadgeDetailLabelDescription","CPBadgeDetailLabelDateEarned","CPBadgeDetailLabelIssuedTo","CPBadgeDetailLabelIssuer","CPBadgeDetailLabelLastAdjustmentDate","CPBadgeDetailLabelValidThrough","CPBadgeDetailTitleBadgeDetails","CPBadgeDetailLabelOrganization","CPBadgeDetailLabelUrl","CPBadgeDetailContentVisit","CPBadgeDetailLabelViews","CPBadgeDetailLabelCriteria","shareModuleLocs","cpSSOAuthLocs","CPSSOEgressAuthorizationOIDC","cpTableDataEmptyLocs","CPTableDataEmptyContent","cpTableDataFilterLocs","CPTableDataHideFiltersTooltip","CPTableDataShowFiltersTooltip","CPTableDataClearFiltersTooltip","CPTableDataSearchLabel","cpTableDataPaginationLocs","CPTableDataPaginationLabel","CPTableDataPaginationLabelOptions","CPTableDataPaginationLabelFirstPage","CPTableDataPaginationLabelLastPage","CPTableDataPaginationLabelNextPage","CPTableDataPaginationLabelPreviousPage","cpTableDataViewToggleLocs","CPTableDataViewToggleGridTooltip","CPTableDataViewToggleTableTooltip","cpBannedLandingPageLocs","CPBannedLandingPageTitle","CPBannedLandingPageDescription","appointmentCardLocs","CPDashboardAppointmentsCardLabelDate","CPDashboardAppointmentsCardContentEdit","CPDashboardAppointmentsCardButtonReschedule","CPDashboardAppointmentsCardButtonCancel","cpDashboardAppointmentLocs","CPDashboardAppointmentTitleAppointments","CPDashboardAppointmentButtonViewAll","CPDashboardAppointmentContentPreviousSection","CPDashboardAppointmentContentNextSection","CPDashboardAppointmentPageSectionTitle","CPDashboardAppointmentSchedulingButton","CPDashboardAppointmentCustomContent","CpLatestAgreementModalComponent","agreementLoc","CpPageDescriptionService","pageDescriptionSubject","pageDescription$","CpPageActionService","actions","actions$","addAction","tpl","Rt","clearAction","CpPageDescriptionComponent_cp_page_section_0_ng_container_3_ng_container_1_ng_container_1_Template","action_r1","CpPageDescriptionComponent_cp_page_section_0_ng_container_3_ng_container_1_Template","actions_r2","pageDescription_r3","CpPageDescriptionComponent_cp_page_section_0_ng_container_5_ng_container_1_ng_container_1_Template","CpPageDescriptionComponent_cp_page_section_0_ng_container_5_ng_container_1_ng_container_3_Template","CpPageDescriptionComponent_cp_page_section_0_ng_container_5_ng_container_1_Template","CpPageDescriptionComponent_cp_page_section_0_ng_container_3_Template","CpPageDescriptionComponent_cp_page_section_0_ng_container_5_Template","hasValue$","pageActions$","CpPageDescriptionComponent","locViewService","pageDescriptionService","pageActionService","inlineEnabled$","hasActions$","CpPageDescriptionComponent_cp_page_section_0_Template","CpViewFooterComponent","footerDateCurrentYear","CpViewHeaderComponent_h1_11_ng_container_1_Template","pageHeading_r2","user_r5","CpViewHeaderComponent_div_13_button_1_Template","CpViewHeaderComponent_div_13_span_7_Template","menu_r6","showUsername$","CpViewHeaderComponent_h1_15_ng_container_1_Template","cultureMenu_r7","culture_r10","heading_r11","CpViewHeaderComponent_ng_template_37_ng_container_0_ng_container_1_Template","CpViewHeaderComponent_ng_template_37_ng_container_0_ng_template_3_Template","legacyLoc_r12","CpViewHeaderComponent_ng_template_37_ng_container_0_Template","pageHeading$","CpViewHeaderComponent","navigation","headingService","ui","navState$","isMobile$","logout","CpViewHeaderComponent_ng_container_9_Template","CpViewHeaderComponent_h1_11_Template","CpViewHeaderComponent_div_13_Template","CpViewHeaderComponent_h1_15_Template","CpViewHeaderComponent_ng_container_25_Template","CpViewHeaderComponent_button_31_Template","CpViewHeaderComponent_button_35_Template","CpViewHeaderComponent_ng_template_37_Template","tmp_14_0","filterNav","child_r3","isActiveUrl","CpNavigationComponent_ng_container_1_div_1_ng_container_5_li_2_Template","getNavChildren","NavNodes_r5","item_r2","expanded","CpNavigationComponent_ng_container_1_div_1_ng_container_5_Template","CPNavigationCCIELabScheduler","CPNavigationUserGuide","CPNavigationSupportAndFaqs","CpNavigationComponent_ng_container_1_Conditional_2_Conditional_1_a_0_Template","isClient_r6","amazon","CpNavigationComponent_ng_container_1_Conditional_2_Conditional_0_Template","CpNavigationComponent_ng_container_1_Conditional_2_Conditional_1_Template","cisco","CpNavigationComponent_ng_container_1_div_1_Template","CpNavigationComponent_ng_container_1_Conditional_2_Template","getNavParents","tmp_3_0","isClient$","NAV_QUERY","CpNavigationComponent","NavNodes$","getNavNodes$","items","parentId","activeUrl","matrixParams","url$","fetchNav$","stripURLSlash","hasActiveChildren","displayOrder","routedUrl","CpNavigationComponent_ng_container_1_Template","logo_r1","ctx_r2","CpViewSidebarComponent","locView","legacyLocService","userService","logo$","theme","isLocalizingClass","toggleInline","CpViewSidebarComponent_div_3_Template","CpViewSidebarComponent_ng_container_6_Template","focusMainEl","CpViewComponent_ng_container_6_ng_container_1_Template","culture_r3","CpViewComponent_div_16_p_1_Template","cookiePolicy","announcer","isLocal","isFocused$","focus$","setEnvironment","isFirefox","FIREFOX","handleActiveLocalization","setupPolicyCookieModal","toggleSidebar","childUrl","locDialog","bottom","ariaLabelledBy","resetTimeout","CpViewComponent_section_0_Template","CpViewComponent_div_5_Template","CpViewComponent_ng_container_6_Template","CpViewComponent_div_16_Template","CardGridState","searchKeys","datum","EMPTY_SORT","EMPTY_FILTER","CpCardGridService","dispatcher","visiblityChangeSubj","fltr","visibilityChange$","search$","watchForDataChanges","sorts","defaultSort","searchConfig$","updateCardVisibility","AtsObject","deepValue","subSort","filter_r2","child_r5","CpCardGridComponent_ng_container_2_ng_template_2_ng_template_3_ng_container_4_Template","subMenu_r6","CpCardGridComponent_ng_container_2_ng_template_2_ng_container_0_Template","CpCardGridComponent_ng_container_2_ng_template_2_ng_template_1_Template","CpCardGridComponent_ng_container_2_ng_template_2_ng_template_3_Template","subMenuItem_r8","menuItem_r7","CpCardGridComponent_ng_container_2_ng_container_1_Template","CpCardGridComponent_ng_container_2_ng_template_2_Template","filterMenuItem_r10","filter_r9","sort_r12","clearSearch","filterMenu_r16","filters_r15","filter_r14","CpCardGridComponent_ng_container_18_div_1_Template","sort_r18","_r17","ngIf","toggleSortDirection","CpCardGridComponent_ng_container_20_ats_icon_14_Template","CpCardGridComponent_ng_container_20_ats_icon_15_Template","sortMenu_r19","noCards_r20","CpCardGridComponent","grid","hideWhenEmpty","cardsLoaded","cancelRender$","cardsLoadedSubj","cardsLoaded$","searchForm","createForm","isGridEmpty$","cards","searchInput","filters$","filters","sorts$","renderData","reversible","patchValue","container","createEmbeddedView","cardTemplate","CpCardGridComponent_ng_container_2_Template","CpCardGridComponent_button_6_Template","CpCardGridComponent_button_14_Template","CpCardGridComponent_ng_container_18_Template","CpCardGridComponent_ng_container_20_Template","CpCardGridComponent_ng_container_24_Template","CpCardGridComponent_ng_template_30_Template","tmp_6_0","LiveAnnouncer","MatSortModule","CpProfileAffiliationsComponent","cpUIModuleLocs","MarkdownModule","badge","issuerName","issuerUrl","assertionCount","latestAdjustment","CpBadgeDetailViewComponent_article_0_div_20_ng_container_3_Template","CpBadgeDetailViewComponent_article_0_div_20_span_4_Template","criteriaUrl","CpBadgeDetailViewComponent_article_0_div_26_ng_container_3_Template","dash_r2","descriptionHtml","CpBadgeDetailViewComponent_article_0_ng_template_31_ng_container_0_Template","CpBadgeDetailViewComponent_article_0_ng_container_6_Template","CpBadgeDetailViewComponent_article_0_cp_section_7_Template","CpBadgeDetailViewComponent_article_0_div_13_Template","CpBadgeDetailViewComponent_article_0_div_14_Template","CpBadgeDetailViewComponent_article_0_div_20_Template","CpBadgeDetailViewComponent_article_0_div_26_Template","CpBadgeDetailViewComponent_article_0_ng_container_30_Template","CpBadgeDetailViewComponent_article_0_ng_template_31_Template","imageUrl","public","issuedTo","plainText_r3","BADGE_QUERY","CpBadgeDetailViewComponent","badgeSubj$","fetchBadgeDetails","badge$","badgeDetail","CpBadgeDetailViewComponent_article_0_Template","CpBadgeDetailViewComponent_ng_template_2_Template","CpBadgeDetailViewComponent_ng_template_4_Template","loading_r4","tslib__WEBPACK_IMPORTED_MODULE_26__","overlayClick","CpCardComponent","showFooter","notSelectedInList","statusClass","getHeaderStyle","headerBG","textColor","minHeight","tableData","cardTitle","CpCardComponent_button_1_Template","icon","CpAnnouncementComponent_span_2_ats_icon_1_Template","CpAnnouncementComponent_span_2_ats_icon_2_Template","CpAnnouncementComponent_span_2_ats_icon_3_Template","CpAnnouncementComponent","closeable","suppressIcon","localizedIconTitle","setIconTitle","CpAnnouncementComponent_span_2_Template","LOGO_DOWNLOAD_AGREEMENT_MUTATION","LOGO_AGREEMENT_QUERY","CpLogoAgreementComponent","url_r1","baseKey","type_r2","startEdit","stopEdit","CpCreqDetailComponent_ng_container_0_ng_container_1_span_6_ng_container_2_button_1_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_6_ng_container_2_button_3_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_6_ng_container_2_button_5_Template","editing$","CpCreqDetailComponent_ng_container_0_ng_container_1_span_6_ng_container_1_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_6_ng_container_2_Template","creq_r7","editable$","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_8_form_1_Template","updated","courseName$","reviewState","displayName","crcatDetail_r9","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_38_ng_container_1_div_1_span_4_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_38_ng_container_1_div_1_span_5_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_38_ng_container_1_div_1_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_38_ng_container_1_Template","lang_r10","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_39_span_9_Template","docLanguage$","noValue_r11","CpCreqDetailComponent_ng_container_0_ng_container_1_div_41_span_4_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_div_43_span_4_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_6_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_8_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_15_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_20_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_25_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_div_26_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_span_32_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_div_37_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_38_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_ng_container_39_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_div_41_Template","CpCreqDetailComponent_ng_container_0_ng_container_1_div_43_Template","override","docChangeable","CpCreqDetailComponent_ng_container_0_ng_container_1_Template","type$","CREQ_DETAIL_QUERY","CREQ_MUTATION","CpCreqDetailComponent","editingSubj","active$","fetchCreq$","hasCECourseNameFeature$","hasCourseNameFeature","candidateCreated","editable","share","editing","getCreqRequest$","uploadCreqDocs$","updateCReq$","CpCreqDetailComponent_ng_container_0_Template","CpCreqDetailComponent_ng_template_2_Template","CpCreqEditComponent_ng_container_1_div_11_div_1_Template","CpCreqEditComponent_ng_container_1_div_11_div_2_Template","CpCreqEditComponent_ng_container_1_div_5_Template","CpCreqEditComponent_ng_container_1_div_6_Template","CpCreqEditComponent_ng_container_1_div_7_Template","CpCreqEditComponent_ng_container_1_div_11_Template","languages$","CpCreqEditComponent","handleCancel","CpCreqEditComponent_ng_container_1_Template","CpCreqEditComponent_mat_form_field_2_Template","CpDividerComponent","cpNavigationLocs","locDef","pageSectionTitle","CpPageSectionTitleComponent","hideMain","CpPageSectionTitleComponent_Conditional_1_Template","CpPageSectionTitleComponent_Conditional_2_Template","CpPageSectionTitleComponent_Conditional_3_Template","padded","CpPageSectionComponent","showTitle","class","CpPageSectionComponent_ng_container_1_Template","CpPageSectionComponent_ng_container_2_Template","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_8_div_1_Template","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_8_div_2_Template","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_8_div_3_Template","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_8_div_4_Template","minlength","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_13_div_1_Template","confirmPassword","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_8_Template","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_13_Template","CpPasswordConfirmationFormComponent_ng_container_0_mat_error_14_Template","passwordLabel","confirmPasswordLabel","passwordConfirm","CpPasswordConfirmationFormComponent","minLength","hasValidator","CpPasswordConfirmationFormComponent_ng_container_0_Template","CpCertAgreementComponent_form_3_div_5_Template","CpCertAgreementComponent_form_3_mat_error_10_Template","ageVerified","agreed","SIGN_AGREEMENT_MUTATION","CpCertAgreementComponent","agreementSigned","signLatestAgreement","requiredTrue","popSuccess","CpCertAgreementComponent_form_3_Template","cpRequirementAddressFormLocs","CPRequirementAddressFormLabelAddress","CPRequirementAddressFormLabelAddressContinued1","CPRequirementAddressFormLabelAddressContinued2","CPRequirementAddressFormLabelBusinessAddress","CPRequirementAddressFormLabelCity","CPRequirementAddressFormLabelCountry","CPRequirementAddressFormLabelFax","CPRequirementAddressFormLabelPhone","CPRequirementAddressFormLabelPostal","CPRequirementAddressFormLabelState","CPRequirementAddressFormErrorAddressRequired","CPRequirementAddressFormErrorCityRequired","CPRequirementAddressFormErrorCountryRequired","CPRequirementAddressFormErrorInvalidCountry","CPRequirementAddressFormErrorStateInvalid","CPRequirementAddressFormErrorStateRequired","CPRequirementAddressFormErrorStateRequiredVueHint","CPRequirementAddressFormErrorPostalRequired","CPRequirementAddressFormErrorPostalVueUSA","CPRequirementAddressFormErrorPostalVueCanada","CPRequirementAddressFormErrorPhoneRequired","CPRequirementAddressFormErrorPhoneVueUsaCanada","CPRequirementAddressFormErrorPhoneVueNoZeros","CPRequirementAddressFormErrorPostalMaxLength","CPRequirementAddressFormButtonCancel","CPRequirementAddressFormButtonUpdateAddress","REQUIREMENT_ADDRESS_FORM_LOC_KEYS","address_r3","hasVueValidation$","addressFormLocs","ADDRESS_QUERY","ADDRESS_MUTATION","CpMailingAddressComponent","addressUpdate","address$","fetchAddress$","primaryInformationUpdateRequired$","fetchCandidateAccount$","updateAddress","addr1Line1","addr1Line2","addr1Line3","addr1City","addr1State","addr1PostalCode","addr1CountryCode","addr1Business","addr1PhoneNumber","addr1FaxNumber","acceptIfNoChange","CpMailingAddressComponent_ng_container_0_Template","CPNameConfirmationFormErrorCharacterExclusion","CpNameConfirmationComponent_form_0_mat_error_6_div_1_Template","CpNameConfirmationComponent_form_0_mat_error_6_div_2_Template","CpNameConfirmationComponent_form_0_mat_error_6_div_3_Template","pattern","CpNameConfirmationComponent_form_0_mat_error_12_div_1_Template","CpNameConfirmationComponent_form_0_mat_error_12_div_2_Template","CpNameConfirmationComponent_form_0_mat_error_12_div_3_Template","CpNameConfirmationComponent_form_0_mat_error_6_Template","CpNameConfirmationComponent_form_0_mat_error_12_Template","CpNameConfirmationComponent","nameVerified","allowNoChangesSubmission","requireRomanizedName$","fetchCandidate$","requireRomanizedName","currentFirstName","currentLastName","buildForm","updateCandidate","AtsRegex","EXCLUDE_QUESTION_MARK_AT_START_OF_STRING","hasRomanizationFeature","success","CpNameConfirmationComponent_form_0_Template","tslib__WEBPACK_IMPORTED_MODULE_23__","cpNameConfirmationFormLocs","CPPersonalInfoFormErrorFirstNameRequired","CPPersonalInfoFormErrorCharacterExclusion","CpPersonalInfoFormComponent_form_0_mat_form_field_1_mat_error_5_cm_localize_1_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_1_mat_error_5_div_2_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_1_mat_error_5_div_3_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_1_mat_error_5_Template","CPPersonalInfoFormErrorLastNameRequired","CpPersonalInfoFormComponent_form_0_mat_form_field_2_mat_error_5_cm_localize_1_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_2_mat_error_5_div_2_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_2_mat_error_5_div_3_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_2_mat_error_5_Template","CpPersonalInfoFormComponent_form_0_ng_container_3_mat_form_field_1_Template","CpPersonalInfoFormComponent_form_0_ng_container_3_mat_form_field_2_Template","showPrimaryInfoFormFields","CpPersonalInfoFormComponent_form_0_mat_form_field_5_mat_error_6_div_1_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_5_mat_error_6_div_2_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_5_mat_error_6_div_3_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_5_mat_error_6_Template","CPPersonalInfoFormDOBErrorReq","CPPersonalInfoFormDOBErrorMax","CpPersonalInfoFormComponent_form_0_mat_form_field_6_mat_error_8_cm_localize_1_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_6_mat_error_8_cm_localize_2_Template","dateOfBirth","CpPersonalInfoFormComponent_form_0_mat_form_field_6_mat_error_8_Template","CPPersonalInfoFormDOBLabel","dobDatepicker_r3","CpPersonalInfoFormComponent_form_0_ng_container_7_mat_form_field_1_Template","CpPersonalInfoFormComponent_form_0_ng_container_9_ng_container_1_mat_form_field_12_Template","hasAffiliations$","CpPersonalInfoFormComponent_form_0_ng_container_9_ng_container_1_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_1_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_2_Template","CpPersonalInfoFormComponent_form_0_ng_container_3_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_5_Template","CpPersonalInfoFormComponent_form_0_mat_form_field_6_Template","CpPersonalInfoFormComponent_form_0_ng_container_7_Template","CpPersonalInfoFormComponent_form_0_ng_container_9_Template","isRequirementStepper","tmp_4_0","preferredNameMeta$","available","showEmailField","hasLocalizedInfo$","isSubmitting","CANDIDATE_FRAGMENT","includePreferred","includeLocalized","includeDob","INFORMATION_QUERY","INFORMATION_MUTATION","CpPersonalInfoFormComponent","formService","candidateUpdate","includeDob$","canEditEmail$","emailConfirmationRequired$","localizedNameFirst","localizedNameLast","localizedCompanyName","saveChanges","fetchCandidateData$","canEditEmail","preferredNameMeta","hasAffiliations","hasLocalizedInfo","canUpdateName","dobInvalid","locNameFirst","locNameLast","locCompanyName","disableDOB","dobCtrl","CpPersonalInfoFormComponent_form_0_Template","tslib__WEBPACK_IMPORTED_MODULE_30__","cpPersonalInfoFormLocs","CANDIDATE_AFFILIATION_MUTATION","CandidateAffiliationService","updateAffiliation","affiliation","spSharedCandidateAffiliationLocs","SPCandidateAffiliationUpdate","SPCandidateAffiliationNameInvalid","SPCandidateAffiliationNameRequired","SPCandidateAffiliationTypeInvalid","SPCandidateAffiliationTypeRequired","SPCandidateAffiliationEmailRequired","SPCandidateAffiliationIdInvalid","SPCandidateAffiliationIdRequired","SPCandidateAffiliationEmailInvalid","SPCandidateAffiliationOtherNameInvalid","SPCandidateAffiliationOtherNameRequired","SPCandidateAffiliationEmailUnsupported","SPCandidateAffiliationEmail","SPCandidateAffiliationId","SPCandidateAffiliationName","SPCandidateAffiliationOtherName","SPCandidateAffiliationType","SPCandidateAffiliationSaveNotice","candidateAffiliationLocs","SpCandidateAffLocs","cpSharedProfileAffiliationFormLocs","CANDIDATE_QUERY","AFFILIATION_DATA_QUERY","CPProfileAffiliationTypeRequired","CPProfileAffiliationTypeInvalid","CandidateAffiliationForm_form_0_ng_container_1_div_4_cm_localize_1_Template","CandidateAffiliationForm_form_0_ng_container_1_div_4_cm_localize_2_Template","affiliationType","CandidateAffiliationForm_form_0_ng_container_1_div_4_Template","types$","CPProfileAffiliationType","CPProfileAffiliationNameRequired","CPProfileAffiliationNameInvalid","CandidateAffiliationForm_form_0_ng_container_3_div_4_cm_localize_1_Template","CandidateAffiliationForm_form_0_ng_container_3_div_4_cm_localize_2_Template","affiliationName","CandidateAffiliationForm_form_0_ng_container_3_div_4_Template","names$","CPProfileAffiliationName","CPProfileAffiliationEmailRequired","CPProfileAffiliationEmailInvalid","CPProfileAffiliationEmailUnsupported","CandidateAffiliationForm_form_0_mat_form_field_4_mat_error_6_cm_localize_1_Template","CandidateAffiliationForm_form_0_mat_form_field_4_mat_error_6_cm_localize_2_Template","CandidateAffiliationForm_form_0_mat_form_field_4_mat_error_6_cm_localize_3_Template","affiliationEmail","CandidateAffiliationForm_form_0_mat_form_field_4_mat_error_6_Template","CPProfileAffiliationEmail","globalEmailLoc","CPProfileAffiliationIdRequired","CPProfileAffiliationIdInvalid","CandidateAffiliationForm_form_0_mat_form_field_5_mat_error_4_cm_localize_1_Template","CandidateAffiliationForm_form_0_mat_form_field_5_mat_error_4_cm_localize_2_Template","affiliationId","CandidateAffiliationForm_form_0_mat_form_field_5_mat_error_4_Template","CPProfileAffiliationId","CPProfileAffiliationOtherNameRequired","CPProfileAffiliationOtherNameInvalid","CandidateAffiliationForm_form_0_mat_form_field_6_mat_error_4_cm_localize_1_Template","CandidateAffiliationForm_form_0_mat_form_field_6_mat_error_4_cm_localize_2_Template","otherAffiliationName","CandidateAffiliationForm_form_0_mat_form_field_6_mat_error_4_Template","CPProfileAffiliationOtherName","CandidateAffiliationForm_form_0_ng_container_1_Template","CandidateAffiliationForm_form_0_ng_container_3_Template","CandidateAffiliationForm_form_0_mat_form_field_4_Template","CandidateAffiliationForm_form_0_mat_form_field_5_Template","CandidateAffiliationForm_form_0_mat_form_field_6_Template","CPProfileAffiliationUpdate","CandidateAffiliationForm","affService","submitted","isString","fetchAffiliationData$","affs","webGroup","webGroups","affiliationsByGroup$","groupAffs","aff","otherIdx","typeOptions","sn","ca","getAffTypeControl","affiliationCatalog","getAffNameControl","getEmailControl","getAffIDControl","affiliateId","getOtherAffNameControl","getAffiliationsByType","updateNameControlState","defaultName$","getAffiliationNameChanges$","affName","getAffCatById","pairwise","prevAffCat","affCat","updateAffIdControlState","updateEmailControlState","updateAffOtherNameControlState","handleDefaultAffiliationName","idOpt","noticeLoc","CPProfileAffiliationSaveNotice","defaultName","ctrl","affCatData","clearValidators","otherFormat","logError","affiliateIdFormat","emailRequired","affGroups","affiliationList","CandidateAffiliationForm_form_0_Template","LocalizePipe","MatButtonModule","MatFormFieldModule","MatInputModule","FormBuilder","affiliationUpdate","cpProfileAffiliationFormLocs","CPProfileAffiliationRequired","CPProfileAffiliationSectionTitle","CpProfileAffFormLocs","setting_r3","CpProfileSettingsComponent_form_0_ng_container_1_div_3_Template","CpProfileSettingsComponent_form_0_ng_container_1_cp_sponsor_setting_multiselect_4_Template","CpProfileSettingsComponent_form_0_ng_container_1_cp_sponsor_setting_single_5_Template","multiSelect","CpProfileSettingsComponent_form_0_ng_container_1_Template","settingCatalog$","SETTINGS_QUERY","SETTINGS_MUTATION","CpProfileSettingsComponent","fetchSettings$","settingCatalogList","settingCat","candidateEdit","candidateSettings$","setting","settingItem","catId","settingCatalog","candidateSettings","getMultiSelectGroup","getSingleSelectControl","getControl","getRawValue","isNotNullOrUndefined","settingListToAdd","settingListToDelete","mutateSettings$","settingIds","settingItems","UntypedFormGroup","CpProfileSettingsComponent_form_0_Template","tslib__WEBPACK_IMPORTED_MODULE_24__","CpSectionComponent","item_r1","CpSponsorSettingMultiselectComponent_div_4_span_1_Template","CpSponsorSettingMultiselectComponent","CpSponsorSettingMultiselectComponent_mat_checkbox_2_Template","CpSponsorSettingMultiselectComponent_div_4_Template","CpSponsorSettingSingleComponent_ng_container_0_cm_autocomplete_1_div_4_Template","options$","option_r2","CpSponsorSettingSingleComponent_ng_container_0_ng_template_2_mat_error_4_span_1_Template","CpSponsorSettingSingleComponent_ng_container_0_ng_template_2_mat_radio_button_1_Template","CpSponsorSettingSingleComponent_ng_container_0_ng_template_2_mat_radio_button_3_Template","CpSponsorSettingSingleComponent_ng_container_0_ng_template_2_mat_error_4_Template","CpSponsorSettingSingleComponent_ng_container_0_cm_autocomplete_1_Template","CpSponsorSettingSingleComponent_ng_container_0_ng_template_2_Template","maxRadioOptions","radioTpl_r3","CpSponsorSettingSingleComponent","CpSponsorSettingSingleComponent_ng_container_0_Template","CpSubsectionTitleDirective","AtsIconComponent__svg_svg_0__svg_title_1_Template","AtsIconComponent","role","parseString","Icons","viewbox","AtsIconComponent__svg_svg_0_Template","arrow_down","arrow_left","arrow_right","arrow_up","attachment","audio_listen","badge_view","calendar","candidates","certificate","check","circle","circle_check","circle_close","clipboard","cog","collapse","csv","dash","database","database_broken","dev","download","email_send","exit","expand","external","facebook","file_info","filter_closed","folder_checked","folder_closed","folder_disabled","folder_open","fullscreen_collapse","fullscreen_expand","hamburger","help","home","image_not_found","key_lock","linked_in","linkedin","look","move","nav_bars","nav_dots","not_available","pdf","pencil","reports","small_ex","sort_asc","sort_desc","speech","square","square_check","stage","table","translate","trash","twitter","user_exit","users","view_none","warning","zoom_in","zoom_out","AtsLoggerService","WARNING","NotificationState","systemEvents","reloadSubject","loaderMessageSubj","filterNullOrUndefined","handleEvent","dispatchLoader","addLoadKey","unload","removeLoadKey","noticeWithType","localizeMessage","ky","locName","getGUIDLocalizationName","localizeNotice","legacyLoc","tslib__WEBPACK_IMPORTED_MODULE_12__","accessDeniedLocs","SPSystemAccessDeniedTitle","SPSystemAccessDeniedContent","SPSystemAccessDeniedButton","CPSystemAccessDeniedTitle","CPSystemAccessDeniedContent","CPSystemAccessDeniedButton","spNotFoundLocs","SPSystemNotFoundTitle","SPSystemNotFoundContent","SPSystemNotFoundButton","cpNotFoundLocs","CPSystemNotFoundTitle","CPSystemNotFoundContent","CPSystemNotFoundButton","sharedSpData","sharedCpData","spSessionExpiredLocs","SPSystemSessionExpiredTitle","SPSystemSessionExpiredContent","SPSystemSessionExpiredButton","cpSessionExpiredLocs","CPSystemSessionExpiredTitle","CPSystemSessionExpiredContent","CPSystemSessionExpiredButton","cpSharedPageLocs","spSharedPageLocs","MatAutocomplete_ng_template_0_Template","_animationDone","formFieldId_r3","_classList","showPanel","_color","isOpen","ariaLabel","_getPanelAriaLabelledby","panelAnimation","opacity","MatAutocompleteSelectedEvent","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY","autoActiveFirstOption","autoSelectActiveOption","hideSingleSelectionIndicator","requireSelection","MatAutocomplete","_changeDetectorRef","_elementRef","_defaults","_activeOptionChanges","Subscription","EMPTY","_keyManager","_isOpen","_latestOpeningTrigger","_setColor","markForCheck","panel","optionGroups","ariaLabelledby","displayWith","panelWidth","disableRipple","optionSelected","opened","optionActivated","_hideSingleSelectionIndicator","_syncParentProperties","_IdGenerator","getId","inertGroups","SAFARI","ngAfterContentInit","ActiveDescendantKeyManager","withWrap","skipPredicate","_skipPredicate","change","_setVisibility","_setScrollTop","_getScrollTop","_emitSelectEvent","labelId","contentQueries","dirIndex","MatOption","MAT_OPTGROUP","_t","hostAttrs","booleanAttribute","exportAs","MAT_OPTION_PARENT_COMPONENT","changeDetection","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MatAutocompleteTrigger","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","Overlay","reposition","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY","_overlay","_viewContainerRef","_dir","Directionality","_formField","MAT_FORM_FIELD","_document","_viewportRuler","ViewportRuler","_overlayRef","_portal","_componentDestroyed","_scrollStrategy","_keydownSubscription","_outsideClickSubscription","_previousValue","_valueOnAttach","_valueOnLastKeydown","_positionStrategy","_manuallyFloatingLabel","_closingActionsSubscription","_viewportSubscription","_breakpointObserver","BreakpointObserver","_handsetLandscapeSubscription","_canOpenOnNextFocus","_valueBeforeAutoSelection","_pendingAutoselectedOption","_closeKeyEventStream","_windowBlurHandler","panelOpen","_onChange","_onTouched","autocomplete","connectedTo","autocompleteAttribute","autocompleteDisabled","_injector","Injector","_aboveClass","_getWindow","_setStrategyPositions","updatePosition","_destroyPanel","_clearFromModal","_overlayAttached","openPanel","_openPanelInternal","closePanel","_resetLabel","_updatePanelState","_trackedModal","removeAriaReferencedId","panelClosingActions","optionSelections","tabOut","_getOutsideClickStream","detachments","MatOptionSelectionChange","defer","onSelectionChange","activeOption","activeItem","fromEvent","clickTarget","_getEventTarget","formField","getConnectedOverlayOrigin","customOrigin","overlayElement","_assignOptionValue","_handleKeydown","keyCode","hasModifier","hasModifierKey","ESCAPE","ENTER","_selectViaInteraction","_resetActiveItem","prevActiveItem","isArrowKey","UP_ARROW","DOWN_ARROW","TAB","onKeydown","_canOpen","_scrollToOption","activeItemIndex","_handleInput","selectedOption","_getDisplayValue","deselect","_clearPreviousSelectedOption","valueOnAttach","_handleFocus","_attachOverlay","_floatLabel","_handleClick","shouldAnimate","floatLabel","_animateAndLockLabel","_subscribeToClosingActions","initialRender","afterNextRender","injector","optionChanges","reapplyLastPosition","wasOpen","_emitOpened","_setValueAndClose","dispose","toDisplay","_updateNativeInputValue","_control","toSelect","emitEvent","addAriaReferencedId","setOrigin","_getConnectedElement","updateSize","_getPanelWidth","getLabelId","_getOverlayConfig","Breakpoints","HandsetLandscape","withGrowAfterOpen","withViewportMargin","_applyModalPanelOwnership","_handlePanelKeydown","keydownEvents","outsidePointerEvents","OverlayConfig","_getOverlayPosition","overlayPanelClass","strategy","withPush","belowPositions","abovePositions","positions","_getHostWidth","firstEnabledOptionIndex","setActiveItem","readOnly","defaultView","labelCount","_countGroupLabelsBeforeOption","_getHostElement","newScrollPosition","_getOptionScrollPosition","offsetTop","offsetHeight","modal","closest","panelId","MatAutocompleteModule","OverlayModule","MatOptionModule","MatCommonModule","CdkScrollableModule","autoInp_r4","autoTrigger_r5","clearValue","clearLoc$","CmAutocompleteComponent_ng_container_0_form_1_ng_container_7_button_1_Template","options_r6","option_r7","CmAutocompleteComponent_ng_container_0_form_1_ng_container_7_Template","CmAutocompleteComponent_ng_container_0_form_1_mat_option_11_Template","appearance","hideLabel","auto_r8","displayFn","filteredOptions$","CmAutocompleteComponent_ng_container_0_form_1_Template","valueComparitor","matchRequired","optionsSnapshot","filterOptions","valueChanges$","markAsDirty","ngSubmit","CmAutocompleteComponent_ng_container_0_Template","CmMiniButtonDirective","MatTooltipModule","ControlContainer","CmTrimWhitespaceDirective","onBlur","trimAndPatchValue","onEnter","ngControl","trimmed","CmCsvExportDirective","onClick","AtsCsv","createBlob","SafeHtmlPipe","IngressService","getCpIngressType","getSpIngressType","routeToLogin","internalGuard$","internal$","redirectUri","localizationFormLocs","CMSystemLocalizationDialogEditSectionTitle","inliningLocalizationLocs","CMSystemLocalizationDialogModificationWarning","CMSystemLocalizationNoValueSet","GLOBAL_LOCALIZATION_KEYS","CMSystemLocalizationDialogDefaultValue","CMSystemLocalizationDialogCurrentValue","HtmlLocalizeFormComponent","codeEditorClose","getEditorWhitespaceScrubberConfig","editor","on","e2","getData","WHITESPACE","off","auto_focus","setup","TINYMCE_SCRIPT_SRC","sharedLocalizationLocs","HtmlLocalizeFormComponent_ng_template_2_Template","HtmlLocalizeFormComponent_ng_template_3_Template","HtmlLocalizeFormComponent_ng_template_5_Template","HtmlLocalizeFormComponent_ng_template_6_Template","HtmlLocalizeFormComponent_ng_template_8_Template","HtmlLocalizeFormComponent_ng_template_9_Template","currentValue$","CMSystemLocalizationDialogNewValue","handleCodeChanges","LocalizationDialogComponent_ng_container_11_ng_container_1_ng_container_41_Template","LocalizationDialogComponent_ng_container_11_ng_container_1_mat_option_49_Template","LocalizationDialogComponent_ng_container_11_ng_container_1_mat_form_field_50_Template","LocalizationDialogComponent_ng_container_11_ng_container_1_cm_html_localize_form_51_Template","CMSystemLocalizationDialogSystemId","CMSystemLocalizationDialogFeature","CMSystemLocalizationDialogDescription","CMSystemLocalizationDialogShared","CMSystemLocalizationDialogAllowHTML","CMSystemLocalizationDialogCurrentLanguage","LocalizationDialogComponent_ng_container_11_ng_container_1_Template","LocalizationDialogComponent","getForm","CMSystemLocalizationDialogChangesSaved","firstValueFrom","localizationModalLocs","LocalizationDialogComponent_ng_container_11_Template","CMSystemLocalizationDialogDialogTitle","CMSystemLocalizationDialogCancel","CMSystemLocalizationDialogSave","LocalizeBooleanPipe","MatSelectModule","CMSystemLocalizationDialogDelete","InliningLocalizationComponent","displayValue","displayValue$","noValue","autoFocus","customInliningStyle","tmp_2_0","customStyle","loc_r1","safeHtml","LocalizeComponent_ng_container_0_ng_container_1_ng_container_1_div_1_Template","LocalizeComponent_ng_container_0_ng_container_1_ng_container_1_span_2_Template","LocalizeComponent_ng_container_0_ng_container_1_ng_container_1_Template","hideOn","LocalizeComponent_ng_container_0_ng_container_1_Template","LocalizeComponent_ng_container_0_ng_template_3_Template","inlining_r3","localizationViewService","sanitize","locInputChange","loc$","nextValue","nameValue","cpNameValue","cpName","LocalizeComponent_ng_container_0_Template","IsLegacyLocalizePipe","LocalizationViewService","inlineEnabled","popSystemError","tslib__WEBPACK_IMPORTED_MODULE_13__","SHARED_LOCALIZATION_KEYS","CmTooltipLabelDirective","elRef","skipAriaLabel","prependToAriaLabel","appendToAriaLabel","matTooltip","base_url","valid_elements","plugins","branding","resize","browser_spellcheck","toolbar","toolbar_mode","statusbar","block_formats","fontsize_formats","menubar","menu","edit","insert","relative_urls","remove_script_host","urlconverter_callback","target_list","default_link_target","promotion","paste_data_images","AtsStoreService","expiresIn","pointerEvents","_containerElement","_createContainer","deepCloneNode","cloneNode","descendantsWithId","nodeName","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","drawImage","getMutableClientRect","isInsideClientRect","clientRect","adjustDomRect","domRect","isPointerNearDomRect","threshold","pointerX","pointerY","xThreshold","yThreshold","ParentPositionTracker","scrollPosition","getViewportScrollPosition","handleScroll","cachedPosition","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","scrollY","scrollX","getRootNode","rootNodes","ELEMENT_NODE","wrapper","extendStyles","dest","importantProperties","removeProperty","toggleNativeDragInteractions","userSelect","toggleVisibility","combineTransforms","initialTransform","matchElementSize","sourceRect","getTransform","parseCssTimeUnitsToMs","multiplier","parseCssPropertyValue","computedStyle","getPropertyValue","part","PreviewRef","_rootElement","_direction","_initialDomRect","_previewTemplate","_previewClass","_pickupPositionOnPage","_initialTransform","_zIndex","_previewEmbeddedView","_preview","_createPreview","supportsPopover","showPopover","setTransform","getTransitionDuration","getTransformTransitionDurationInMs","transitionedProperties","propertyIndex","rawDurations","rawDelays","previewConfig","previewClass","previewTemplate","preview","rootRect","matchSize","viewContainer","margin","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","activeEventListenerOptions","activeCapturingEventOptions$1","capture","dragImportantProperties","DragRef","_config","_ngZone","_dragDropRegistry","_previewContainer","_placeholderRef","_placeholder","_pickupPositionInElement","_anchor","_passiveTransform","_activeTransform","_hasStartedDragging","signal","_hasMoved","_initialContainer","_initialIndex","_parentPositions","_moveEvents","_pointerDirectionDelta","_pointerPositionAtLastDirectionChange","_lastKnownPointerPosition","_ownerSVGElement","_rootElementTapHighlight","_pointerMoveSubscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_lastTouchEventTime","_dragStartTime","_boundaryElement","_nativeInteractionsEnabled","_previewRect","_boundaryRect","_placeholderTemplate","_handles","_disabledHandles","_dropContainer","_parentDragRef","_cachedShadowRoot","lockAxis","dragStartDelay","scale","_disabled","_toggleNativeDragInteractions","beforeStarted","started","released","ended","entered","exited","dropped","moved","constrainPosition","withRootElement","withParent","parentDragRef","registerDragItem","getPlaceholderElement","getRootElement","getVisibleElement","isDragging","withHandles","handles","coerceElement","disabledHandles","withPreviewTemplate","withPlaceholderTemplate","_removeRootElementListeners","_pointerDown","_nativeDragStart","SVGElement","ownerSVGElement","withBoundaryElement","boundaryElement","_containInsideBoundaryOnResize","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeListeners","disableHandle","enableHandle","withDirection","_withDropContainer","getFreeDragPosition","setFreeDragPosition","_applyRootElementTransform","withPreviewContainer","_sortFromLastPointerPosition","_updateActiveDropContainer","_getConstrainedPointerPosition","_getShadowRoot","shadowDomSelectStart","targetHandle","_getTargetHandle","_initializeDragSequence","_pointerMove","pointerPosition","_getPointerPositionOnPage","dragStartThreshold","isDelayElapsed","_getDragStartDelay","_endDragSequence","isReceiving","cancelable","_startDragSequence","constrainedPointerPosition","_updatePointerDirectionDelta","activeTransform","observers","distance","_getDragDistance","delta","_pointerUp","stopDragging","webkitTapHighlightColor","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","isTouchEvent","dropContainer","placeholder","_createPlaceholderElement","anchor","zIndex","_getPreviewInsertionPoint","replaceChild","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","button","isSyntheticEvent","isFakeEvent","isFakeTouchstartFromScreenReader","isFakeMousedownFromScreenReader","draggable","rootStyles","pointerMove","pointerUp","scrolled","scrollEvent","_updateOnScroll","_getPointerPositionInElement","startDragging","currentIndex","isPointerOverContainer","_isOverContainer","previousIndex","previousContainer","drop","rawX","newContainer","_getSiblingContainerFromPosition","enter","sortingDisabled","_startScrollingIfNecessary","rawY","_sortItem","_applyPreviewTransform","placeholderRect","timeout","placeholderConfig","placeholderTemplate","elementRect","handleElement","referenceRect","point","targetTouches","_getViewportScrollPosition","pageX","pageY","touches","changedTouches","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","inverse","dropContainerLock","pickupX","pickupY","boundaryRect","previewWidth","previewHeight","_getPreviewRect","minY","maxY","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","touch","mouse","scrollDifference","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","moveItemInArray","fromIndex","toIndex","clamp","to","SingleAxisSortStrategy","_sortPredicate","_itemPositions","_activeDraggables","orientation","_previousSwap","drag","overlaps","withItems","pointerDelta","siblings","newIndex","_getItemIndexFromPointerPosition","isHorizontal","currentItem","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","sibling","isDraggedItem","elementToOffset","transformAmount","activeDraggables","newPositionReference","_shouldEnterAsFirstChild","parentElement","_cacheItemPositions","withSortPredicate","predicate","getActiveItemsSnapshot","reverse","updateOnScroll","withElementContainer","elementToMeasure","immediateSibling","itemPositions","lastItemRect","firstItemRect","MixedSortStrategy","_rootNode","_activeItems","deltaX","deltaY","_relatedNodes","childNodes","previousSwap","toSwapWith","overlapElement","after","before","newOverlapElement","_getRootNode","elementFromPoint","enterIndex","_getClosestItemIndexToPointer","targetItem","elementAtPoint","minDistance","minIndex","hypot","AutoScrollVerticalDirection","UP","DOWN","AutoScrollHorizontalDirection","LEFT","RIGHT","DropListRef","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","receivingStarted","receivingStopped","_container","_isDragging","_sortStrategy","_domRect","_draggables","_siblings","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_scrollNode","_stopScrollTimers","_scrollableElements","_initialScrollSnap","coercedElement","withOrientation","registerDropContainer","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","_cacheParentPositions","_reset","previousItems","withScrollableParents","oldContainerIndex","newContainerIndex","scrollNode","verticalScrollDirection","horizontalScrollDirection","getElementScrollDirections","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","scrollHeight","clientHeight","scrollWidth","clientWidth","getViewportSize","_startScrollInterval","msScrollSnapType","scrollSnapType","_listenToScrollEvents","_stopReceiving","animationFrameScheduler","scrollStep","scrollBy","_canReceive","_startReceiving","activeSiblings","initiator","receiver","draggedItems","activeCapturingEventOptions","_ResetsLoader","DragDropRegistry","_styleLoader","_CdkPrivateStyleLoader","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","scroll","_persistentTouchmoveListener","instances","_preventDefaultWhileDragging","_clearGlobalListeners","streams","eventOptions","instance","DEFAULT_CONFIG","DragDrop","createDrag","createDropList","DragDropModule","toDate","argument","argStr","NaN","constructFrom","getDaysInMonth","_date","year","monthIndex","lastDayOfMonth","setFullYear","setHours","millisecondsInWeek","millisecondsInHour","parseISO","additionalDigits","dateStrings","splitDateString","patterns","dateTimeDelimiter","timeString","timeZoneDelimiter","substr","parseYearResult","parseYear","captures","restDateString","century","parseDate","dateRegex","isWeekDate","dayOfYear","parseDateUnit","month","day","week","dayOfWeek","validateWeekDate","_year","dayOfISOWeekYear","isoWeekYear","setUTCFullYear","getUTCDay","setUTCDate","getUTCDate","validateDate","daysInMonths","isLeapYearIndex","validateDayOfYearDate","getTime","timestamp","parseTime","timeRegex","hours","parseTimeUnit","minutes","seconds","validateTime","dirtyDate","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseTimezone","timezoneString","timezoneRegex","sign","validateTimezone","_hours","defaultOptions","getDefaultOptions","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formatLong","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","valuesArray","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","string","matchResult","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","enUS","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_baseDate","_options","ordinalNumber","dirtyNumber","number","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchPatternFn","matchPattern","parseResult","parsePattern","weekStartsOn","firstWeekContainsDate","dateLongFormatter","timeLongFormatter","longFormatters","P","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","_message","subject","RangeError","Setter","subPriority","validate","_utcDate","ValueSetter","validateValue","priority","DateToSystemTimezoneSetter","timestampIsSet","transpose","fromDate","Parser","setter","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","trunc","startOfWeek","locale","getDay","setDate","getWeekYear","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","startOfISOWeek","getWeek","startOfWeekYear","firstWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","getISOWeek","startOfISOWeekYear","fourthOfJanuary","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","addDays","amount","setDay","currentDay","getTimezoneOffsetInMilliseconds","utcDate","UTC","parsers","G","EraParser","incompatibleTokens","YearParser","isTwoDigitYear","normalizedTwoDigitYear","Y","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","Q","QuarterParser","q","StandAloneQuarterParser","M","MonthParser","L","StandAloneMonthParser","w","LocalWeekParser","setWeek","I","ISOWeekParser","setISOWeek","DateParser","isLeapYear","D","DayOfYearParser","subpriority","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setISODay","getISODay","AMPMParser","AMPMMidnightParser","B","DayPeriodParser","h","Hour1to12Parser","isPM","H","Hour0to23Parser","K","Hour0To11Parser","k","Hour1To24Parser","MinuteParser","setMinutes","SecondParser","setSeconds","S","FractionOfSecondParser","setMilliseconds","X","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","T","TimestampMillisecondsParser","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dateStr","referenceDate","getInternalDefaultOptions","defaultLocale","subFnOptions","setters","tokens","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","parser","incompatibleToken","usedToken","fullToken","cleanEscapedString","uniquePrioritySetters","setterArray","startOfDay","addLeadingZeros","padStart","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","formatters","signedWeekYear","weekYear","ceil","isoWeek","getDayOfYear","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfYear","cleanDate","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","absOffset","isDate","isValid","matched","addMonths","dayOfMonth","endOfDesiredMonth","range","valueFunction","MONTH_FORMATS","DAY_OF_WEEK_FORMATS","DateFnsAdapter","DateAdapter","matDateLocale","MAT_DATE_LOCALE","setLocale","getYear","getDayOfWeek","getMonthNames","getDateNames","dtf","Intl","DateTimeFormat","timeZone","setUTCHours","getDayOfWeekNames","getYearName","getFirstDayOfWeek","getNumDaysInMonth","createDate","parseFormat","iso8601Date","currentFormat","fromFormat","displayFormat","originalDate","parts","isToken","preprocessor","formatterOptions","formatter","addCalendarYears","years","addYears","addCalendarMonths","months","addCalendarDays","days","toIso8601","formatISO","representation","tzOffset","dateDelimiter","timeDelimiter","absoluteOffset","deserialize","isDateInstance","setTime","dateWithDesiredMonth","daysInMonth","addSeconds","addMilliseconds","MAT_DATE_FNS_FORMATS","dateInput","timeInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","MatDateFnsModule","provideDateFnsAdapter","MAT_DATE_FORMATS","ClipboardModule","MatCheckboxModule","MatChipsModule","MatMenuModule","MatRadioModule","MatSnackBarModule","MatSlideToggleModule","MatStepperModule","ScrollingModule","A11yModule","LayoutModule","MatDatepickerModule","MatNativeDateModule","MatTreeModule","PlatformModule","PortalModule","MatPaginatorModule","MatDividerModule","MAT_DIALOG_DEFAULT_OPTIONS","MatDialogConfig","closeOnNavigation","MAT_TOOLTIP_DEFAULT_OPTIONS","showDelay","MAT_FORM_FIELD_DEFAULT_OPTIONS","subscriptSizing","MAT_PAGINATOR_DEFAULT_OPTIONS","formFieldAppearance","guards","MultiGuard","concatMap","source$","sourceObj","filterObj","negateObjectsFn","newObj","exportData","parsedData","Papa","unparse","Blob","createExportHeaders","exportFieldMap","exportHeader","exportFields","NullHigh","NullLow","NullCustom","fromHigh","dt","HIGH","LOW","STR","CUSTOM","Now","Today","by","Second","subtractSeconds","subtract","Day","subtractDays","Month","subtractMonths","Hour","Year","since","fromMS","isBefore","formatDurationFromMS","toMidnight","random","NON_NEGATIVE_INTEGER","INTEGER","DECIMAL","nestedKey","returnVal","hasProperties","deepCopy","inObject","outObject","deepCompare","ok","tx","unsubSubj","unsubDestroy","AtsCopyElementToClipboard","renderer2","targetEl","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","execCommand","AtsGlobalEventDirective","Event","eventHandler","atsGlobalCallback","atsGlobalDispatch","dispatchEvent","ResponsiveDirective","skipUpdateOnStart","allClasses","updateWidth","windowResize$","watcher$","offsetWidth","cls","tslib__WEBPACK_IMPORTED_MODULE_4__","ScrollIntoViewDirective","atsScrollAttempts","checkForSelector","attempts","behavior","inline","Unavailable","notNullOrUndefined","OrderEnumByIndex","order","MapEnumKeys","oe","toCMDate","trackByProperty","propertyNames","AtsFileTypes","PNG","JPEG","ZIP","X_ZIP_COMPRESSED","X_COMPRESSED","X_ZIP","DOCX","CSV","FIREFOX_EXCEL","ATS_OG_META","TITLE","DESCRIPTION","APPID","TYPE","LOCALE","SITENAME","VIDEO","VIDEOURL","VIDEOSECUREURL","VIDEOTYPE","VIDEOWIDTH","VIDEOHEIGHT","IMAGE","IMAGEURL","IMAGESECUREURL","IMAGETYPE","IMAGEWIDTH","IMAGEHEIGHT","ERROR_OBJECT_DOESNT_CONTAIN_KEY","_atsSortFn","keyVal","desc","bVal","Collator","sensitivity","AtsArrayHasItemPipe","AtsBooleanPipe","unavailable","AtsFileReaderPipe","fileReader","SecurityContext","onerror","AtsFilterByIdPipe","AtsReverseArrayPipe","IsStringPipe","AtsOrderByPropPipe","AtsSafeHtmlPipe","AtsSplitPascalPipe","modifyValue","exception","except","UTILITY_CONFIG","ToStringPipe","AtsTrackByPropertyPipe","formData","put","upload","deleteFile","LOADER","AtsOperatorService","defaultDelay","delayInMS","delayTime","obs","clearApolloCache","delayWhen","defaultDelayInMS","AtsBreakpoints","Mobile","breakpointObserver","AtsUtilityService","_arr","AtsFilterByPropPipe","_typeof","Symbol","iterator","asyncIterator","SYMBOL_TO_STRING_TAG","toStringTag","getLocation","lineRegexp","line","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineNum","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","_ref","padLen","_ref2","_ref3","leftPad","len","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","enumerable","_defineProperty","defineProperty","configurable","_defineProperties","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","_isNativeFunction","Function","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","o","setPrototypeOf","GraphQLError","_Error","_inherits","subClass","superClass","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","originalError","_nodeLocations","_nodeLocations2","_nodeLocations3","_classCallCheck","Constructor","undefinedIfEmpty","nodeLocations","_i2","_this$nodes","locations","pos","originalExtensions","isObjectLike","_objectSpread","getOwnPropertyDescriptors","defineProperties","captureStackTrace","_createClass","protoProps","staticProps","printError","output","_i4","_error$nodes2","_i6","_error$locations2","syntaxError","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","COMMENT","devAssert","Source","inspect","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Lexer","startOfFileToken","Token","lastToken","lineStart","_proto","advance","lookahead","_token$next","readToken","printCharCode","fromCharCode","lexer","prev","bodyLength","_line","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","firstCode","isFloat","readDigits","isNameStart","chunkStart","charCode","uniCharCode","invalidSequence","rawValue","dedentBlockStringValue","char2hex","isSource","_lexer","parseName","expectToken","parseDocument","many","parseDefinition","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","OPERATION_DEFINITION","variableDefinitions","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","expectOptionalToken","parseValueLiteral","VARIABLE","SELECTION_SET","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","ARGUMENT","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","BOOLEAN","NULL","LIST","_this2","parseObjectField","OBJECT_FIELD","parseDirective","DIRECTIVE","LIST_TYPE","NON_NULL_TYPE","NAMED_TYPE","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","interfaces","parseImplementsInterfaces","parseFieldsDefinition","OBJECT_TYPE_DEFINITION","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","parseUnionMemberTypes","UNION_TYPE_DEFINITION","parseEnumValuesDefinition","ENUM_TYPE_DEFINITION","parseEnumValueDefinition","ENUM_VALUE_DEFINITION","parseInputFieldsDefinition","INPUT_OBJECT_TYPE_DEFINITION","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","repeatable","parseDirectiveLocations","DIRECTIVE_DEFINITION","parseDirectiveLocation","startToken","_this$_options4","noLocation","Location","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","parsed","allowLegacyFragmentVariables","stripLoc","endToken","processFragments","seenKeys","fragmentDefinition","sourceKey","cacheKeyFromLoc","sourceKeySet","literals","gql_1","extras","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","lib","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","postMessage","IS_PAPA_WORKER","dynamicTyping","dynamicTypingFunction","worker","WORKERS_SUPPORTED","webkitURL","BLOB_URL","Worker","onmessage","userStep","userChunk","chunk","userComplete","userError","workerId","l","readable","g","stream","BAD_DELIMITERS","quotes","skipEmptyLines","newline","quoteChar","escapeChar","escapeFormulae","meta","BYTE_ORDER_MARK","NODE_STREAM_INPUT","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","each","attr","inputElem","instanceConfig","extend","reason","_handle","_completed","_halted","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","chunkSize","streamer","parseChunk","beforeFirstChunk","paused","aborted","cursor","WORKER_ID","finished","_sendError","_readChunk","_chunkLoaded","XMLHttpRequest","_chunkError","downloadRequestBody","downloadRequestHeaders","setRequestHeader","send","readyState","responseText","getResponseHeader","statusText","webkitSlice","mozSlice","FileReaderSync","readAsText","encoding","resume","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","removeListener","abort","transformHeader","RECORD_SEP","UNIT_SEP","successful","bestDelimiter","delimitersToGuess","getCharIndex","U","N","fastMode","W","F","A","linebreak","truncated","terminate","exports","module","_subscribe","thrownError","_throwIfClosed","lift","operator","observerOrNext","isSubscriber","Subscriber","isObserver","isFunction","isSubscription","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","reject","Symbol_observable","pipeFromArray","toPromise","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","last","ObjectUnsubscribedError","createErrorClass","currentObservers","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","arrRemove","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","_bind","thisArg","ConsumerObserver","partialObserver","handleUnhandledError","useDeprecatedNextContext","useDeprecatedSynchronousErrorHandling","captureError","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","noop","defaultErrorHandler","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","hasConfig","EmptyError","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","hasLift","getSubject","_teardown","connect","connection","refCount","higherOrderRefCount","scheduler","popScheduler","resultSelector","popResultSelector","argsArgArrayOrObject","combineLatestInit","createObject","mapOneOrManyArgs","valueTransform","maybeSchedule","active","remainingFirstValues","hasFirstValue","execute","executeSchedule","concatAll","mergeAll","observableFactory","forkJoin","sources","remainingCompletions","remainingEmissions","sourceIndex","hasValue","subscribeOn","schedule","scheduleAsyncIterable","done","scheduled","isInteropObservable","scheduleObservable","observeOn","isArrayLike","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","scheduleIterable","Symbol_iterator","return","isReadableStreamLike","scheduleReadableStreamLike","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","isEventTarget","methodName","isNodeStyleEventEmitter","addListener","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","trueResult","falseResult","fromInteropObservable","fromArrayLike","fromPromise","promise","fromAsyncIterable","fromIterable","iterable","fromReadableStreamLike","readableStream","asyncIterable","asyncIterable_1","asyncIterable_1_1","__awaiter","__asyncValues","e_1_1","period","asyncScheduler","concurrent","popNumber","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","onNext","onComplete","onFinalize","OperatorSubscriber","shouldUnsubscribe","auditTime","audit","durationSelector","lastValue","durationSubscriber","endDuration","cleanupDuration","handledResult","argsOrArgArray","otherSources","project","activeTask","lastTime","emitWhenIdle","targetTime","defaultIfEmpty","delayDurationSelector","subscriptionDelay","ignoreElements","comparator","keySelector","defaultCompare","previousKey","currentKey","hasDefaultValue","throwIfEmpty","ii","mergeInternals","onBeforeNext","innerSubScheduler","additionalFinalizer","buffer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","hasPrev","refCounter","sharedConnection","conn","scanInternals","accumulator","hasSeed","emitOnNext","emitBeforeComplete","hasState","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","handleReset","onSubscriber","configOrBufferSize","windowTime","bufferSize","innerSubscriber","innerIndex","outerIndex","seen","tapObserver","isUnsub","defaultErrorFactory","otherValues","ready","Action","work","intervalProvider","setInterval","clearInterval","AsyncAction","pending","recycleAsyncId","requestAsyncId","_scheduler","_execute","errorValue","errored","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","animationFrameProvider","requestAnimationFrame","cancelAnimationFrame","AnimationFrameScheduler","flushId","_scheduled","AnimationFrameAction","async","getSymbolIterator","objectProto","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","repeat","scheduleSubscription","isObservable","__asyncGenerator","getReader","__await","releaseLock","liftedSource","callOrApply","fns","stateChangeExpr","animateChild","_position","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","timeAtPosition","longestPlayer","longestSoFar","ID_DELIMITER","getAriaReferenceIds","existingId","filteredIds","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","nextId","AriaDescriber","_platform","_messageRegistry","_messagesContainer","_VisuallyHiddenLoader","APP_ID","_canBeDescribed","getKey","setMessageId","messageElement","referenceCount","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","_deleteMessageElement","describedElements","_removeCdkDescribedByReferenceIds","textContent","_createMessagesContainer","containerClassName","serverContainers","messagesContainer","visibility","isBrowser","originalReferenceIds","referenceIds","messageId","trimmedMessage","serviceId","Typeahead","_letterKeyStream","_items","_selectedItemIndex","_pressedLetters","_skipPredicateFn","_selectedItem","selectedItem","initialItems","typeAheadInterval","debounceInterval","setItems","_setupKeyHandler","setCurrentSelectedItemIndex","handleKey","toLocaleUpperCase","Z","ZERO","NINE","isTyping","letter","inputString","getLabel","ListKeyManager","_activeItemIndex","_activeItem","_wrap","_typeaheadSubscription","_itemChangesSubscription","_vertical","_horizontal","_allowedModifierKeys","_homeAndEnd","_pageUpAndDown","enabled","_effectRef","_typeahead","QueryList","newItems","_itemsChanged","isSignal","effect","shouldWrap","withVerticalOrientation","withHorizontalOrientation","withAllowedModifierKeys","withTypeAhead","_getItemsArray","cancelTypeahead","withHomeAndEnd","withPageUpDown","previousActiveItem","updateActiveItem","isModifierAllowed","modifier","setNextItemActive","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","PAGE_UP","targetIndex","_setActiveItemByIndex","PAGE_DOWN","itemsLength","_setActiveItemByDelta","itemArray","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","setInactiveStyles","setActiveStyles","FocusKeyManager","_origin","setFocusOrigin","TreeKeyManager","_shouldActivationFollowFocus","_horizontalOrientation","_item","_trackByFn","_hasInitialFocused","_initializeFocus","activeIndex","_isItemDisabled","makeFocusable","unfocus","focusItem","_updateActiveItemIndex","shouldActivationFollowFocus","horizontalOrientation","trackBy","typeAheadDebounceInterval","_setTypeAhead","_focusNextItem","_focusPreviousItem","_collapseCurrentItem","_expandCurrentItem","_focusFirstItem","_focusLastItem","_activateCurrentItem","_expandAllItemsAtCurrentItemLevel","getActiveItemIndex","getActiveItem","_findNextAvailableItemIndex","_findPreviousAvailableItemIndex","itemOrIndex","emitChangeEvent","startingIndex","_isCurrentItemExpanded","getParent","coerceObservable","getChildren","itemsToExpand","activate","TREE_KEY_MANAGER","TREE_KEY_MANAGER_FACTORY","InteractivityChecker","hasAttribute","isVisible","hasGeometry","getClientRects","isTabbable","frameElement","getFrameElement","getWindow","ownerDocument","getTabIndexValue","tabIndexValue","WEBKIT","IOS","isPotentiallyTabbableIOS","inputType","tabIndex","isFocusable","isPotentiallyFocusable","isHiddenInput","isInputElement","isNativeFormElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","ignoreVisibility","FocusTrap","_checker","_startAnchor","_endAnchor","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","_toggleAnchorTabIndex","deferAnchors","attachAnchors","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","tabbableChild","isEnabled","toggleAnchors","FocusTrapFactory","deferCaptureElements","CdkTrapFocus","_focusTrapFactory","focusTrap","_previouslyFocusedElement","autoCapture","_captureFocus","ngDoCheck","autoCaptureChange","_getFocusedElementPierceShadowDom","buttons","detail","identifier","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","SHIFT","modalityEventListenerOptions","InputModalityDetector","modalityDetected","modalityChanged","mostRecentModality","_modality","_mostRecentTarget","_lastTouchMs","_onKeydown","_onMousedown","_onTouchstart","ngZone","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY","LIVE_ANNOUNCER_DEFAULT_OPTIONS","uniqueIds","_defaultOptions","_liveElement","_previousTimeout","_currentPromise","_currentResolve","elementToken","_createLiveElement","_exposeAnnouncerToModals","previousElements","getElementsByClassName","liveEl","modals","ariaOwns","FocusMonitorDetectionMode","IMMEDIATE","EVENTUAL","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_lastFocusOrigin","_windowFocused","_windowFocusTimeoutId","_originTimeoutId","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_detectionMode","_windowFocusListener","_stopInputModalityDetector","detectionMode","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","monitor","checkChildren","rootNode","_getDocument","cachedInfo","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","_getClosestElementsInfo","currentElement","_originChanged","_setOrigin","_info","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_isLastInteractionFromInputLabel","toggle","isFromInteraction","relatedTarget","Node","_emitOrigin","rootNodeFocusListeners","modality","mostRecentTarget","labels","CdkMonitorFocus","_focusMonitor","_monitorSubscription","_focusOrigin","cdkFocusChange","focusOrigin","HighContrastMode","BLACK_ON_WHITE","WHITE_ON_BLACK","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_hasCheckedHighContrastMode","_breakpointSubscription","_applyBodyHighContrastModeCssClasses","getHighContrastMode","testElement","backgroundColor","documentWindow","computedColor","bodyClasses","mode","ObserversModule","counters","_appId","prefix","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","RTL_LOCALE_PATTERN","_resolveDirectionality","BidiModule","PendingCopy","_textarea","textarea","currentFocus","setSelectionRange","Clipboard","pendingCopy","beginCopy","CDK_COPY_TO_CLIPBOARD_CONFIG","CdkCopyToClipboard","_clipboard","copied","_pending","_currentTimeout","remainingAttempts","attempt","coerceBooleanProperty","coerceNumberProperty","fallbackValue","_isNumberValue","coerceArray","coerceCssPixelValue","elementOrRef","coerceStringArray","sourceValues","sourceValue","trimmedString","DataSource","isDataSource","_ViewRepeaterOperation","REPLACED","INSERTED","MOVED","REMOVED","_VIEW_REPEATER_STRATEGY","_DisposeViewRepeaterStrategy","applyChanges","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","insertContext","templateRef","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","_insertView","viewArgsFactory","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","viewArgs","detachedView","_maybeCacheView","SelectionModel","_multiple","_emitChanges","compareWith","_selection","_deselectedToEmit","_selectedToEmit","_selected","changed","initiallySelectedValues","_markSelected","_verifyValueAssignment","_hasQueuedChanges","_emitChangeEvent","_unmarkSelected","setSelection","oldValues","newSelectedSet","_getConcreteValue","isSelected","flushEvent","_unmarkAll","isMultipleSelection","removed","inputValue","selectedValue","UniqueSelectionDispatcher","_listeners","notify","registered","BACKSPACE","SPACE","modifiers","ctrlKey","metaKey","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_nonce","CSP_NONCE","_matchMedia","matchMedia","noopMatchMedia","BLINK","createEmptyStyleRule","nonce","sheet","insertRule","media","_mediaMatcher","_queries","_destroySubject","isMatched","splitQueries","mediaQuery","_registerQuery","mql","stateObservable","breakpointStates","queries","a1","a2","XSmall","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","TabletLandscape","WebLandscape","MutationObserverFactory","MutationObserver","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","_observeElement","records","shouldIgnoreRecord","addedNodes","removedNodes","_unobserveElement","mutations","characterData","childList","subtree","disconnect","CdkObserveContent","_contentObserver","_unsubscribe","debounce","_debounce","_currentSubscription","SingleBoxSharedResizeObserver","_box","_resizeSubject","_resizeObserver","_elementObservables","ResizeObserver","box","unobserve","SharedResizeObserver","_observers","scrollBehaviorSupported","supportsScrollBehavior","BlockScrollStrategy","_previousHTMLStyles","_previousScrollPosition","_isEnabled","_canBeEnabled","html","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","viewport","CloseScrollStrategy","_scrollDispatcher","_initialScrollPosition","scrollable","getElementRef","_detach","NoopScrollStrategy","isElementScrolledOutsideView","scrollContainers","containerBounds","isElementClippedByScrolling","scrollContainerRect","RepositionScrollStrategy","scrollThrottle","autoClose","overlayRect","ScrollStrategyOptions","ScrollDispatcher","maxHeight","disposeOnNavigation","configKeys","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","BaseOverlayDispatcher","_attachedOverlays","_isAttached","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","ɵOverlayKeyboardDispatcher_BaseFactory","OverlayOutsideClickDispatcher","_cursorOriginalValue","_cursorStyleIsSet","_pointerDownEventTarget","_addEventListeners","_pointerDownListener","_clickListener","_outsidePointerEvents","containsPierceShadowDom","ɵOverlayOutsideClickDispatcher_BaseFactory","supportsShadowRoot","ShadowRoot","_CdkOverlayStyleLoader","getContainerElement","_loadStyles","containerClass","_isTestEnvironment","oppositePlatformContainers","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_animationsDisabled","_backdropElement","_backdropTimeout","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_previousHostParent","_renders","_afterRenderRef","_afterNextRenderRef","untracked","afterRender","backdropElement","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","detachBackdrop","detachmentResult","_detachContentWhenEmpty","isAttached","_disposeScrollStrategy","attachments","getConfig","updatePositionStrategy","sizeConfig","setDirection","addPanelClass","removePanelClass","getDirection","updateScrollStrategy","enablePointer","showingClass","backdropToDetach","cssClasses","isAdd","backdrop","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","_overlayContainer","_isInitialRender","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_originRect","_overlayRect","_viewportRect","_containerRect","_viewportMargin","_scrollables","_preferredPositions","_isDisposed","_boundingBox","_lastPosition","_lastScrollVisibility","_positionChanges","_offsetX","_offsetY","_transformOriginSelector","_appliedPanelClasses","_previousPushAmount","positionChanges","_validatePositions","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_getNarrowedViewportRect","_getOriginRect","originRect","viewportRect","containerRect","flexibleFits","fallback","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","score","weight","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","flexibleDimensions","growAfterOpen","canPush","withLockedPosition","isLocked","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","startX","_isRtl","endX","overlayStartX","overlayStartY","rawOverlayRect","getRoundedBoundingClientRect","offsetX","_getOffset","offsetY","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","scrollVisibility","_getScrollVisibility","compareScrollVisibility","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","changeEvent","xOrigin","yOrigin","transformOrigin","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","horizontalStyleProperty","originBounds","overlayBounds","scrollContainerBounds","overflows","currentOverflow","axis","cssClass","Element","units","wrapperClass","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_alignItems","_xPosition","_xOffset","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","xPosition","xOffset","marginLeft","marginRight","marginTop","marginBottom","OverlayPositionBuilder","_positionBuilder","_directionality","_animationsModuleType","_idGenerator","_appRef","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","EnvironmentInjector","ApplicationRef","DomPortalOutlet","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","CdkConnectedOverlay","_templatePortal","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","_scrollStrategyFactory","_disposeOnNavigation","_updatePositionStrategy","viewportMargin","transformOriginSelector","lockPosition","positionChange","overlayKeydown","overlayOutsideClick","_detachOverlay","_createOverlay","_buildConfig","_getOriginElement","_createPositionStrategy","_getOrigin","takeWhile","inclusive","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","hasV8BreakIterator","v8BreakIterator","supportedInputTypes","_platformId","PLATFORM_ID","isPlatformBrowser","EDGE","TRIDENT","chrome","CSS","ANDROID","candidateInputTypes","getSupportedInputTypes","featureTestInput","supportsPassiveEvents","supportsPassiveEventListeners","RtlScrollAxisType","NORMAL","NEGATED","INVERTED","rtlScrollAxisType","shadowDomIsSupported","scrollToFunction","getRtlScrollAxisType","scrollContainer","containerStyle","overflow","contentStyle","_supportsShadowDom","newActiveElement","composedPath","__karma__","jasmine","jest","Mocha","Portal","_attachedHost","setAttachedHost","ComponentPortal","componentFactoryResolver","projectableNodes","_componentFactoryResolver","DomPortal","BasePortalOutlet","_attachedPortal","_disposeFn","attachComponentPortal","attachTemplatePortal","attachDomPortal","_invokeDisposeFn","setDisposeFn","outletElement","_defaultInjector","_unusedComponentFactoryResolver","componentRef","ngModuleRef","NgModuleRef","createComponent","elementInjector","environmentInjector","attachView","hostView","viewCount","detachView","_getComponentRootNode","anchorNode","CdkPortal","CdkPortalOutlet","_moduleRef","_isInitialized","_attachedRef","attached","attachedRef","appsWithLoaders","_environmentInjector","appRef","resolved","nextHandle","activeHandles","findAndClearHandle","Immediate","setImmediate","clearImmediate","immediateProvider","AsapScheduler","AsapAction","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","scrollableElement","CdkScrollable","scrollDispatcher","_elementScrolled","_applyScrollToOptions","measureScrollOffset","_viewportSize","_change","_changeListener","_updateViewportSize","getViewportRect","documentRect","throttleTime","innerWidth","innerHeight","_CdkTextFieldStyleLoader","listenerOptions","AutofillMonitor","_monitoredElements","animationName","isAutofilled","unlisten","CdkTextareaAutosize","_initialHeight","_minRows","_maxRows","_previousMinRows","_textareaElement","minRows","_setMinHeight","maxRows","_setMaxHeight","resizeToFitContent","_cachedPlaceholderHeight","_cacheTextareaPlaceholderHeight","_cachedLineHeight","_hasFocus","_isViewInited","styleLoader","_handleFocusEvent","_cacheTextareaLineHeight","textareaClone","border","padding","_measureScrollHeight","previousMargin","needsMarginFiller","measuringClass","force","_scrollToCaretPosition","_noopInputHandler","selectionStart","selectionEnd","TextFieldModule","BaseTreeControl","expansionModel","getLevel","isExpandable","dataNode","_trackByValue","toggleDescendants","collapseDescendants","expandDescendants","collapseAll","toBeProcessed","getDescendants","allNodes","descendants","_getDescendants","childrenNodes","CDK_TREE_NODE_OUTLET_NODE","CdkTreeNodeOutlet","_node","CdkTreeNodeOutletContext","CdkTreeNodeDef","when","getTreeControlMissingError","CdkTree","_differs","IterableDiffers","_dataDiffer","_defaultNodeDef","_dataSubscription","_levels","_parents","_ariaSets","_dataSource","_switchDataSource","levelAccessor","childrenAccessor","expansionKey","_nodeOutlet","_nodeDefs","viewChange","MAX_VALUE","_expansionModel","_flattenedNodes","_nodeType","_nodes","_keyManagerNodes","_keyManagerFactory","_viewInit","_initializeKeyManager","ngAfterContentChecked","_updateDefaultNodeDefinition","_subscribeToDataChanges","_checkTreeControlUsage","_initializeDataDiffer","defaultNodeDefs","_setNodeTypeIfUnset","newType","_getExpansionModel","dataStream","_getRenderData","renderingData","_renderDataChanges","expansionChanges","_emitExpansionChanges","renderNodes","flattenedNodes","_computeRenderingData","convertedData","_updateCachedData","renderNodeChanges","_updateKeyManagerItems","_emitExpansionState","keyManagerNodes","_getExpansionKey","_index","dataDiffer","parentData","forEachIdentityChange","_getNodeDef","nodeData","_getLevelAccessor","CdkTreeNode","mostRecentTreeNode","_getChildrenAccessor","_getDirectChildren","_findChildrenByLevel","levelDelta","dataNodeLevel","expectedLevel","currentLevel","_registerNode","_unregisterNode","_getLevel","_getSetSize","_getAriaSet","_getPositionInSet","_getNodeParent","_getNodeChildren","_sendKeydownToKeyManager","_getAllChildrenRecursively","allChildren","nextChildren","parentKey","_findParentForNode","cachedNodes","parentIndex","_flattenNestedNodesWithExpansion","childKey","nestedNodes","_calculateParents","dependencies","_tree","_tabindex","_type","_role","_isExpandable","_inputIsExpandable","_inputIsExpanded","typeaheadLabel","activation","expandedChange","_dataChanges","_shouldFocus","_parentNodeAriaLevel","isLeafNode","_getAriaExpanded","getParentNodeAriaLevel","nodeElement","isNodeElement","numberAttribute","_focusItem","_setActiveItem","CdkNestedTreeNode","_children","nodeOutlet","updateChildrenNodes","_clear","outlet","_getNodeOutlet","outlets","CdkTreeNodePadding","_treeNode","_currentPadding","indentUnits","_level","_setLevelInput","indent","_indent","_setIndentInput","_setPadding","_paddingIndent","nodeLevel","forceChange","paddingProp","resetProp","CdkTreeNodeToggle","recursive","_toggle","CdkTreeModule","_DOM","getDOM","setRootDomAdapter","adapter","DomAdapter","PlatformLocation","historyGo","relativePosition","BrowserPlatformLocation","LOCATION_INITIALIZED","_history","_doc","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","protocol","hostname","port","hash","newPath","pushState","replaceState","go","getState","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_baseHref","_removeListenerFns","prepareExternalUrl","includeHash","externalUrl","HashLocationStrategy","_basePath","_locationStrategy","_urlChangeListeners","_urlChangeSubscription","locationStrategy","baseHref","_stripOrigin","_stripIndexHtml","isCurrentPathEqualTo","_stripBasePath","strippedUrl","_notifyUrlChangeListeners","onUrlChange","fnIndex","onThrow","onReturn","createLocation","ɵɵinject","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RWF","SBD","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Long","Full","NumberSymbol","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDateFormat","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","DateFormat","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","getLocaleNumberSymbol","symbol","NumberSymbols","getLocaleNumberFormat","NumberFormats","checkFullData","ExtraData","LocaleId","extractTime","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Hours","Minutes","Seconds","FractionalSeconds","TranslationType","DayPeriods","Days","Months","Eras","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","timeSetter","ms","getNamedFormat","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","addDateMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","newDate","localeId","getLocaleId","formatValue","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","digits","minusSign","negWrap","neg","strNum","getDatePart","formatFractionalSeconds","localeMinus","extended","getDateTranslation","getLocaleMonthNames","formStyle","MonthsFormat","MonthsStandalone","getLocaleDayNames","DaysFormat","DaysStandalone","currentHours","currentMinutes","rules","getLocaleExtraDayPeriodRules","rule","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleDayPeriods","amPm","DayPeriodsFormat","DayPeriodsStandalone","getLocaleEraNames","erasData","JANUARY","THURSDAY","getThursdayThisIsoWeek","datetime","deltaToThursday","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","getFirstThursdayOfYear","firstDayOfYear","requestedTimezoneOffset","valueOf","NUMBER_FORMAT_REGEXP","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","isFinite","parsedNumber","parseNumber","integerLen","zeros","numStr","exponent","MAX_DIGITS","toPercent","fractionLen","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","reduceRight","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","parseNumberFormat","patternParts","positiveParts","integer","fraction","ch","trunkLen","parseCookieValue","cookieStr","encodeURIComponent","cookie","eqIndex","cookieValue","WS_REGEXP","EMPTY_ARRAY","NgClass","_ngEl","_renderer","initialClasses","rawClass","klass","ngClass","_updateState","_applyStateDiff","nextEnabled","stateEntry","_toggleClass","NgForOfContext","ngForOf","even","odd","NgForOf","_viewContainer","_template","_ngForOf","_ngForOfDirty","ngForTrackBy","_differ","ngForTemplate","_applyChanges","applyViewChange","ilen","ngTemplateContextGuard","NgIf","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","SwitchView","_templateRef","_created","enforceState","created","NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","_ngSwitch","ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","useDefault","NgSwitchCase","_view","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","DashCase","forEachRemovedItem","forEachAddedItem","forEachChangedItem","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","_shouldRecreateView","viewContext","_createContextForwardProxy","_target","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","markForCheckOnValueUpdate","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","KeyValuePipe","differs","differ","keyValues","compareFn","defaultComparator","differChanges","compareFnChanged","forEachItem","makeKeyValuePair","keyValueA","keyValueB","aString","bString","DecimalPipe","_locale","isValue","formatNumber","strToNumber","LOCALE_ID","PercentPipe","formatPercent","CurrencyPipe","_defaultCurrencyCode","currencyCode","currency","getCurrencySymbol","getLocaleCurrencies","Currencies","symbolNarrow","formatCurrency","getNumberOfCurrencyDigits","DEFAULT_CURRENCY_CODE","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","platformId","isPlatformServer","ɵɵdefineInjectable","BrowserViewportScroller","NullViewportScroller","pageXOffset","pageYOffset","XhrFactory","HttpHandler","HttpBackend","normalizedNames","lazyInit","lazyUpdate","addHeaderEntry","Headers","setHeaderEntries","maybeSetNormalizedName","lcName","copyFrom","applyUpdate","base","toDelete","headerValues","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","HttpParams","encoder","updates","cloneFrom","fromString","fromObject","paramParser","rawParams","codec","eqIdx","appendAll","eKey","HttpContext","isArrayBuffer","ArrayBuffer","isBlob","isFormData","HttpRequest","urlWithParams","transferCache","third","fourth","mightHaveBody","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","HttpResponse","HttpErrorResponse","addBody","HttpClient","res$","jsonp","callbackParam","patch","XSSI_PREFIX$1","getResponseUrl$1","xRequestUrl","FetchBackend","fetchImpl","FetchFactory","aborter","AbortController","doRequest","createRequestInit","fetchPromise","silenceSuperfluousUnhandledPromiseRejection","contentLength","chunks","decoder","partialText","receivedLength","reqZone","Zone","TextDecoder","decode","loaded","chunksAll","concatChunks","contentType","parseBody","binContent","Accept","detectedType","totalLength","Uint8Array","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","interceptor","initialRequest","downstreamRequest","HTTP_INTERCEPTOR_FNS","HTTP_ROOT_INTERCEPTOR_FNS","REQUESTS_CONTRIBUTE_TO_STABILITY","legacyInterceptorFnFactory","chain","pendingTasks","ɵPendingTasksInternal","taskId","HttpInterceptorHandler","backend","contributeToStability","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","runInInjectionContext","XSSI_PREFIX","HttpXhrBackend","xhrFactory","ɵloadImpl","xhr","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","getResponseUrl","responseURL","onLoad","originalBody","sentHeaders","onDownProgress","progressEvent","lengthComputable","onUpProgress","progress","DONE","XSRF_ENABLED","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","parseCount","getToken","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","headerName","HttpFeatureKind","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","Fetch","ɵproviders","makeEnvironmentProviders","LEGACY_INTERCEPTOR_FN","makeHttpFeature","ɵkind","defaultEquals","is","activeConsumer","inNotificationPhase","epoch","SIGNAL","setActiveConsumer","consumer","REACTIVE_NODE","lastCleanEpoch","producerNode","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","consumerOnSignalRead","producerAccessed","assertConsumerNode","consumerIsLive","producerRemoveLiveConsumerAtIndex","producerAddLiveConsumer","producerUpdateValueVersion","consumerPollProducersForChange","producerMarkClean","producerNotifyConsumers","consumerMarkDirty","producerUpdatesAllowed","consumerBeforeComputation","consumerAfterComputation","prevConsumer","producer","seenVersion","consumerDestroy","indexOfThis","assertProducerNode","isConsumerNode","lastIdx","idxProducer","createComputed","computation","COMPUTED_NODE","computed","ERRORED","UNSET","COMPUTING","throwInvalidWriteToSignalErrorFn","defaultThrowError","throwInvalidWriteToSignalError","postSignalSetFn","signalSetFn","signalValueChanged","producerIncrementEpoch","SIGNAL_NODE","NOOP_CLEANUP_FN","WATCH_NODE","hasRun","cleanupFn","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","REQUIRED_UNSET_VALUE","INPUT_SIGNAL_NODE","SIGNAL_NODE$1","transformFn","applyValueToInputSignal","signalSetFn$1","createInputSignal","inputValueFn","producerAccessed$1","SIGNAL$1","noSideEffects","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","propName","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","parameters","ngMetadataName","annotationCls","_global","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRefFn","resolveForwardRef","isForwardRef","opts","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ɵprov","ɵinj","ngInjectableDef","ngInjectorDef","_desc","__NG_ELEMENT_ID__","isEnvironmentProviders","NG_COMP_DEF","ɵcmp","NG_DIR_DEF","ɵdir","NG_PIPE_DEF","ɵpipe","NG_MOD_DEF","ɵmod","NG_FACTORY_DEF","NG_ELEMENT_ID","NG_ENV_ID","__NG_ENV_ID__","renderStringify","throwProviderNotFoundError","injectorName","errorMessage","InjectFlags","Default","Host","Self","SkipSelf","Optional","_injectImplementation","getInjectImplementation","setInjectImplementation","impl","injectRootLimpMode","notFoundValue","injectableDef","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","convertToBitFlags","skipSelf","injectArgs","flag","getInjectFlag","attachInjectFlag","decorator","getFactoryDef","throwNotFound","deepForEach","addToArray","removeFromArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","middle","EMPTY_OBJ","ENVIRONMENT_INITIALIZER","INJECTOR$1","INJECTOR_DEF_TYPES","NullInjector","getNgModuleDef","ngModuleDef","getComponentDef","getDirectiveDef","getPipeDef$1","isStandalone","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","collectProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","parents","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","R3Injector","scopes","_ngOnDestroyHooks","_onDestroyHooks","injectorDefTypes","forEachSingleProvider","processProvider","makeRecord","assertNotDestroyed","setActiveConsumer$1","onDestroyHooks","hook","removeOnDestroy","runInContext","previousInjector","previousInjectImplementation","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","formatError","resolveInjectorInitializers","initializers","initializer","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","getUndecoratedInjectableFactory","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","prevInjector","isInInjectionContext","getCurrentInjector","assertInInjectionContext","debugFn","HOST","TVIEW","FLAGS","PARENT","NEXT","T_HOST","HYDRATION","CLEANUP","CONTEXT","INJECTOR","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","ID","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","EFFECTS_TO_SCHEDULE","EFFECTS","REACTIVE_TEMPLATE_CONSUMER","HEADER_OFFSET","NATIVE","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","LContainerFlags","HasTransplantedViews","isLView","isLContainer","isContentQueryHost","tNode","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","SimpleChange","isFirstChange","applyValueToInputField","inputSignalNode","privateName","ɵɵNgOnChangesFeature","ɵɵNgOnChangesFeatureImpl","NgOnChangesFeatureImpl","ngInherit","setInput","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","publicName","declaredName","declaredInputs","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","profiler","hookOrListener","SVG_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","tView","getComponentLViewByIndex","nodeIndex","slotValue","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","markViewForRefresh","markAncestorsForTraversal","requiresRefreshOrTraversal","updateAncestorTraversalFlagsOnAttach","changeDetectionScheduler","getLViewParent","storeLViewOnDestroy","onDestroyCallback","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","_isRefreshingViews","getBindingsEnabled","isInSkipHydrationBlock$1","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","setCurrentTNode","isParent","isCurrentTNodeParent","setCurrentTNodeAsNotParent","isRefreshingViews","setIsRefreshingViews","getBindingRoot","bindingRootIndex","bindingStartIndex","nextBindingIndex","bindingIndex","incrementBindingIndex","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","inI18n","currentLFrame","childLFrame","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","namespaceHTMLInternal","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","hooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","callHookInternal","directive","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","injectImpl","resolving","canSeeViewProviders","componentProviders","providerFactory","isViewProvider","injectImplementation","setUpAttributes","native","namespaceURI","attrName","attrVal","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ChainedInjector","parentInjector","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","footer","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isFactory","throwCyclicDependencyError","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","HostAttributeToken","attributeName","SCHEDULE_IN_ROOT_ZONE_DEFAULT","DestroyRef","injectDestroyRef","NodeInjectorDestroyRef","removeLViewOnDestroy","ChangeDetectionScheduler","ZONELESS_ENABLED","ZONELESS_SCHEDULER_DISABLED","SCHEDULE_IN_ROOT_ZONE","PendingTasksInternal","_hasPendingTasks","hasPendingTasks","EventEmitter_","__isAsync","isAsync","nextFn","errorFn","completeFn","wrapInTimeout","scheduleCallbackWithRafRace","timeoutId","animationFrameId","cleanup","scheduleCallbackWithMicrotask","isAngularZoneProperty","angularZoneInstanceIdProperty","ngZoneInstanceId","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","scheduleInRootZone","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","callbackScheduled","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","scheduleCheckStable","updateMicroTaskStatus","isCheckStableRunning","checkStable","instanceId","Oh","Bd","onInvokeTask","task","applyThis","applyArgs","shouldBeIgnoredByZone","hasApplyArgsData","invokeTask","onLeave","onInvoke","invoke","isSchedulerTick","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","assertInAngularZone","assertNotInAngularZone","runTask","scheduleEventTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","_console","INTERNAL_APPLICATION_ERROR_HANDLER","userErrorHandler","inputFunction","inputRequiredFunction","injectElementRef","createElementRef","unwrapElementRef","symbolIterator","_results","_emitDistinctChangesOnly","_onDirty","_changesDetected","_changes","resultsTree","identityAccessor","newResultFlat","POSITIVE_INFINITY","arrayEquals","valueA","valueB","notifyOnChanges","onDirty","setDirty","hasInSkipHydrationBlockFlag","ChangeDetectionStrategy","OnPush","TRACKED_LVIEWS","uniqueIdCounter","getLViewById","unregisterLView","LContext","lViewId","localRefs","getLContext","mpValue","readPatchedData","isComponentInstance","findViaComponent","componentInstance","componentIndices","components","elementComponentIndex","isDirectiveInstance","findViaDirective","directiveInstance","directiveIndexEnd","traverseNextElement","getDirectivesAtNodeIndex","findViaNativeElement","existingCtx","createLContext","attachPatchData","rElement","MONKEY_PATCH_KEY_NAME","registerLView","getFirstLContainer","getNearestLContainer","getNextLContainer","viewOrContainer","setDocument","getDocument","DEFAULT_APP_ID","PLATFORM_INITIALIZER","PRESERVE_HOST_CONTENT","TracingAction","CHANGE_DETECTION","AFTER_NEXT_RENDER","TracingService","markedFeatures","performanceMarkFeature","performance","mark","AfterRenderPhase","EarlyRead","Write","MixedReadWrite","Read","AfterRenderManager","AFTER_RENDER_PHASES","AfterRenderImpl","sequences","deferredRegistrations","executing","erroredOrDestroyed","pipelinedValue","maybeTrace","afterRun","once","unregister","AfterRenderSequence","unregisterOnDestroy","callbackOrSpec","afterRenderImpl","manager","tracing","manualCleanup","getHooks","earlyRead","mixedReadWrite","_retrieveHydrationInfoImpl","retrieveHydrationInfo","rNode","ViewEncapsulation","Emulated","ShadowDom","policy$1","trustedHTMLFromString","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","DOMParserHelper","inertDocumentHelper","getInertBodyElement","DOMParser","parseFromString","InertDocumentHelper","defaultDoc","inertDocument","implementation","createHTMLDocument","templateEl","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","tags","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","sanitizeChildren","traverseContent","parentNodes","startElement","TEXT_NODE","chars","nodeValue","getFirstChild","endElement","getNextSibling","tagName","getNodeName","elAttrs","elAttr","lower","encodeEntities","previousSibling","clobberedElementError","isClobberedElement","childNode","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","getInertBodyHelper","isDOMParserAvailable","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","HTML","STYLE","SCRIPT","RESOURCE_URL","ɵɵsanitizeHtml","getSanitizer","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ɵɵsanitizeUrlOrResourceUrl","tag","getUrlSanitizer","COMMENT_DISALLOWED","COMMENT_DELIMITER","maybeUnwrapFn","InputFlags","SignalBased","HasDecoratorInputTransform","Important","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","applyToElementOrContainer","lNodeToHandle","beforeNode","lContainer","isComponent","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","applyContainer","parentRElement","applyView","createCommentNode","escapeCommentText","createElementNode","detachViewFromDOM","trackMovedView","declarationContainer","movedViews","detachMovedView","declarationViewIndex","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","consumerDestroy$1","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","lCleanup","targetIdx","destroyHooksFn","effects","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","getInsertInFrontOfRNodeWithNoI18n","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","classIndexOf","classToSearch","foundIndex","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isInlineTemplate","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","ɵɵinvalidFactory","writeToDirectiveInput","inputTransforms","createLView","tHostNode","hydrationInfo","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","isInI18nBlock","getCurrentParentTNode","allocExpando","numSlotsToAlloc","allocIdx","executeTemplate","templateFn","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","componentView","addToEndOfViewTree","getInitialLViewFlagsFromDef","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","directiveDefs","pipeDefs","schemas","pipes","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","captureNodeBindings","aliasMap","bindingsResult","hostDirectiveAliasMap","internalName","inputFlags","finalPublicName","addPropertyBinding","bindings","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","exportsMap","findDirectiveDefMatches","registry","hostDirectiveDefs","findHostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","providersResolver","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","signals","onPush","elementAttributeInternal","setElementAttribute","initialInputData","inputsToStore","inputConfig","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","loadComponentRenderer","currentDef","unwrapLView","textBindingInternal","updateTextNode","renderComponent","hostLView","componentHostIdx","componentTView","syncViewWithBlueprint","hostRNode","renderView","finishViewCreation","renderChildComponents","createAndRenderEmbeddedLView","declarationLView","templateTNode","embeddedTView","embeddedLView","dehydratedView","declarationViewLQueries","getLViewFromLContainer","adjustedIndex","shouldAddViewToDom","addLViewToLContainer","addToDOM","insertView","containerLength","addViewToDOM","parentNativeNode","removeLViewFromLContainer","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","freeConsumers","REACTIVE_LVIEW_CONSUMER_NODE","REACTIVE_NODE$1","TEMPORARY_CONSUMER_NODE","viewShouldHaveReactiveConsumer","runEffectsInView","tryFlushEffects","foundDirtyEffect","detectChangesInternal","notifyErrorHandler","detectChangesInViewWhileDirty","lastIsRefreshingViewsValue","detectChangesInView","retries","refreshView","returnConsumerToPool","currentConsumer","getOrBorrowReactiveLViewConsumer","borrowReactiveLViewConsumer","consumerBeforeComputation$1","getActiveConsumer","getActiveConsumer$1","getOrCreateTemporaryConsumer","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","notifyEffect","consumerAfterComputation$1","maybeReturnReactiveLViewConsumer","detectChangesInViewIfAttached","detectChangesInComponent","shouldRefreshView","consumerPollProducersForChange$1","markViewDirty","dirtyBitsToUse","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","markForRefresh","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","attachToAppRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","createEmbeddedViewImpl","createTemplateRef","_findMatchingDehydratedViewImpl","findMatchingDehydratedView","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","resolveComponentFactory","ComponentFactoryResolver$1","injectRenderer2","nodeAtIndex","Sanitizer","isNgModule","computeStaticStyling","writeToHost","ComponentFactoryResolver","componentDef","ComponentFactory","toRefArray","isInputMap","templateName","componentType","isBoundToModule","refArray","stringifyCSSSelectorList","selectorList","rootSelectorOrNode","realEnvironmentInjector","getStandaloneInjector","rootViewInjector","hostRenderer","elementName","locateHostElement","elementOrSelector","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","changeDetectorRef","previousInputValues","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","insertImpl","componentFactoryOrType","isComponentFactory","isType","componentFactory","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","viewRefsArr","_locateOrCreateAnchorNode","createAnchorNode","commentNode","insertAnchorNode","nativeNextSibling","_populateDehydratedViewsInLContainer","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","splitQueryMultiSelectors","locator","TQueries_","elementStart","elementEnd","queriesForTemplateRef","childQueryIndex","tqueryClone","track","tquery","TQuery_","crossesNgTemplate","_declarationNodeIndex","_appliesToNextNode","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","tNodeIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","loadQueryInternal","createLQuery","storeCleanupWithContext","createContentQuery","createTQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","getQueryResults","signalFn","createSignal","getter","createSignal$1","updateFn","signalUpdateFn","updater","signalUpdateFn$1","asReadonly","signalAsReadonlyFn","readonlyFn","isWritableSignal","createQuerySignalFn","firstOnly","createComputed$1","_dirtyCounter","refreshSignalQuery","_queryIndex","_flatValue","contentChildFn","createSingleResultOptionalQuerySignalFn","contentChild","contentChildRequiredFn","createSingleResultRequiredQuerySignalFn","NgModuleRef$1","NgModuleFactory$1","createNgModule","_parent","_bootstrapComponents","_r3Injector","destroyCbs","runInjectorInitializers","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","createEnvironmentInjector","StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵdefineComponent","componentDefinition","baseDef","getNgDirectiveDef","getExternalStyles","initFeatures","extractDefListOrFactory","getComponentId","hashSelectors","imul","extractDirectiveDef","nonNull","ɵɵdefineNgModule","declarations","transitiveCompileScopes","parseAndConvertBindingsForDefinition","newLookup","minifiedKey","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","hostDirectives","debugInfo","defExtractor","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","mergeInputsWithTransforms","defData","mergeHostAttrsAcrossInheritance","minifiedName","prevViewQuery","prevContentQueries","prevHostBindings","ɵɵHostDirectivesFeature","rawHostDirectives","isEager","createHostDirectiveDef","matchedDefs","configOrFn","trackHostDirectiveDef","hostDirectiveDef","patchDeclaredInputs","exposedInputs","bindingArrayToMap","ɵɵInputTransformsFeature","isListLikeIterable","isJsObject","updateBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","declareTemplate","declarationTView","localRefsIndex","templateFirstCreatePass","tViewConsts","comment","_locateOrCreateContainerAnchor","populateDehydratedViewsInLContainer","ɵɵtemplate","attrsIndex","createContainerAnchorImpl","Console","GLOBAL_PUBLISH_EXPANDO_KEY","publishExternalGlobalUtil","publishUtil","COMPILED","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","_isZoneStable","_callbacks","taskTrackingZone","testabilityGetter","setTestabilityGetter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","isSubscribable","APP_INITIALIZER","initializerFn","ApplicationInitStatus","donePromise","rej","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","EffectScheduler","ZoneAwareEffectScheduler","queuedEffectCount","queues","enqueue","queue","flushQueue","APP_BOOTSTRAP_LISTENER","optionsReducer","objs","_runningTick","_destroyListeners","_views","internalErrorHandler","afterRenderManager","zonelessEnabled","rootEffectScheduler","dirtyFlags","deferredDirtyFlags","tracingSnapshot","externalTestViews","afterTick","allViews","componentTypes","stable","finally","_rendererFactory","componentOrFactory","cf","compRef","_loadComponent","tick","_tick","synchronize","runs","synchronizeOnce","useGlobalCheck","detectChangesInViewIfRequired","syncDirtyFlagsWithViews","warnIfDestroyed","isFirstPass","ɵɵattribute","interpolation1","v0","interpolation2","v1","getBindingIndex","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","tStylingAtIndex","isMap","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classKeyValueArraySet","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","isClassBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","LiveCollection","updateValue","swap","index1","index2","startIdx","endIdx","endItem","startItem","prevIndex","newIdx","valuesMatching","liveIdx","liveValue","attachPreviouslyDetached","prevCollection","detachedItems","createOrAttach","liveCollection","initLiveItemsInTheFuture","at","UniqueValueMultiKeyMap","kvMap","_vMap","prevValue","vMap","ɵɵconditional","matchingTemplateIndex","contextValue","prevMatchingTemplateIndex","prevContainer","getLContainer","nextLContainerIndex","nextContainer","getExistingTNode","RepeaterContext","$index","$count","ɵɵrepeaterTrackByIndex","ɵɵrepeaterTrackByIdentity","RepeaterMetadata","hasEmptyBlock","ɵɵrepeaterCreate","trackByUsesComponentInstance","emptyTemplateFn","emptyDecls","emptyVars","emptyTagName","emptyAttrsIndex","boundTrackBy","LiveCollectionLContainerImpl","operationsCounter","needsIndexUpdate","detachExistingView","recordCreate","recordDestroy","updateIndexes","getExistingLViewFromLContainer","ɵɵrepeater","collection","metadataSlotIdx","hostTView","containerIndex","itemTemplateTNode","reconcile","newCollection","liveKeysInTheFuture","liveStartIdx","liveEndIdx","newEndIdx","liveStartValue","newStartValue","isStartMatching","liveEndValue","newEndValue","isEndMatching","liveStartKey","liveEndKey","newStartKey","newEndKey","newCollectionIterator","newIterationResult","liveKey","isCollectionEmpty","emptyTemplateIndex","lContainerForEmpty","emptyTemplateTNode","ɵɵelementStart","elementStartFirstCreatePass","_locateOrCreateElementNode","hasDirectives","isDetachedByI18n","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","hasClassInput","hasStyleInput","ɵɵelement","getNamespace$1","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","plural","LOCALE_DATA","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","getLocalePluralCase","LocaleDataIndex","PluralCase","ng","common","locales","FirstDayOfWeek","WeekendRange","CurrencyCode","CurrencySymbol","CurrencyName","DEFAULT_LOCALE_ID","LOCALE_ID$1","stashEventListener","listenerFn","ɵɵlistener","useCapture","eventTargetResolver","listenerInternal","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","executeListenerWithErrorHandling","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","newArray","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","fallbackTemplateFn","fallbackDecls","fallbackVars","fallbackIndex","isNodeCreationMode","insertFallbackContent","fallbackTNode","fallbackLContainer","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","ɵɵcontentQuery","ɵɵviewQuery","createViewQuery","ɵɵqueryRefresh","isCreationMode","ɵɵloadQuery","ɵɵcontentQuerySignal","bindQueryToSignal","_queryList","ɵɵqueryAdvance","indexOffset","ɵɵreference","getContextLView","ɵɵtext","textNative","_locateOrCreateTextNode","createTextNode","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtwoWayProperty","ɵɵtwoWayBindingSet","canWrite","ɵɵtwoWayListener","resolveProvider","lInjectablesBlueprint","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","ɵɵsetComponentScope","ɵɵpureFunction0","slotOffset","pureFn","getBinding","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","exp3","pureFunction3Internal","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","bindingRoot","bindingUpdated3","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","v2","ɵɵpipeBind3","v3","ɵɵtemplateRefExtractor","Version","major","minor","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","NgZoneChangeDetectionScheduler","applicationRef","_onMicrotaskEmptySubscription","runningTick","internalProvideZoneChangeDetection","ngZoneFactory","ignoreChangesOutsideZone","getNgZoneOptions","ngZoneChangeDetectionScheduler","ZoneStablePendingTask","eventCoalescing","runCoalescing","ChangeDetectionSchedulerImpl","taskService","disableScheduling","zoneIsDefined","schedulerTickApplyArgs","__scheduler_tick__","subscriptions","angularZoneId","cancelScheduledCallback","useMicrotaskScheduler","pendingRenderTaskId","shouldScheduleTick","scheduleCallback","getGlobalLocale","$localize","PLATFORM_DESTROY_LISTENERS","isApplicationBootstrapConfig","moduleRef","PlatformRef","_modules","bootstrapModuleFactory","moduleFactory","allAppProviders","getNgZone","ngZoneToUse","ngZoneEventCoalescing","ngZoneRunCoalescing","createNgModuleRefWithProviders","envInjector","r3Injector","exceptionHandler","onErrorSubscription","destroyListener","onPlatformDestroyListeners","platformInjector","allPlatformModules","_callAndReportToErrorHandler","initStatus","setLocaleId","rootComponent","moduleDoBootstrap","ngDoBootstrap","compilerOptions","compileNgModuleFactory","destroyListeners","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","setThrowInvalidWriteToSignalError$1","runPlatformInitializers","inits","createPlatformInjector","assertPlatform","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","supports","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","platformCore","ApplicationModule","nonReactiveReadsFn","ViewContext","injectViewContext","MicrotaskEffectScheduler","EffectHandle","effectFn","watcher","allowSignalWrites","createWatch","registerOnCleanup","isInNotificationPhase","destroyWatchNode","isWatchNodeDestroyed","createWatch$1","onCleanup","runEffect","useMicrotaskEffectsByDefault","EffectRefImpl","microtaskEffect","cdr","forceRoot","createRootEffect","ROOT_EFFECT_NODE","createViewEffect","VIEW_EFFECT_NODE","onDestroyFn","BASE_EFFECT_NODE","registerCleanupFn","prevNode","prevRefreshingViews","maybeCleanup","reflectComponentType","destroyed$","toObservable","BaseControlValueAccessor","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","actual","maxValidator","requiredValidator","requiredTrueValidator","emailValidator","minLengthValidator","requiredLength","actualLength","maxLengthValidator","patternValidator","nullValidator","regexStr","requiredPattern","actualValue","compose","validators","composeAsync","isPresent","mergeErrors","arrayOfErrors","executeValidators","normalizeValidators","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","untouched","statusChanges","_composedValidatorFn","_composedAsyncValidatorFn","_setValidators","_setAsyncValidators","asyncValidator","_onDestroyCallbacks","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","formDirective","NgControl","valueAccessor","AbstractControlStatus","_cd","isTouched","_touched","isUntouched","_pristine","_status","isInvalid","isPending","isSubmitted","_submitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","ControlEvent","ValueChangeEvent","PristineChangeEvent","TouchedChangeEvent","StatusChangeEvent","FormSubmittedEvent","FormResetEvent","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","asyncValidators","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_updateOn","_asyncValidationSubscription","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","statusReactive","pristineReactive","touchedReactive","_events","updateOn","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearAsyncValidators","sourceControl","onlySelf","_updateTouched","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","_onDisabledChange","changeFn","setParent","_setInitialStatus","shouldHaveEmitted","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_updateControlsErrors","currPath","_find","changedControl","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","newPristine","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","FormGroup","_setUpControls","registerControl","removeControl","setControl","controlName","_reduceChildren","_syncPendingControls","subtreeUpdated","_reduceValue","initValue","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","model","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","submittedReactive","_directives","_findContainer","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","onReset","resetForm","removeListItem","isFormControlState","formState","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","AbstractFormGroupDirective","_checkParentType","ɵAbstractFormGroupDirective_BaseFactory","formControlBinding$1","NgModel","resolvedPromise","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","ɵNgNoValidate","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","formDirectiveProvider","_submittedReactive","_oldForm","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","isFormControl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","ɵRequiredValidator_BaseFactory","ɵCheckboxRequiredValidator_BaseFactory","MAX_LENGTH_VALIDATOR","MaxLengthValidator","toInteger","ɵMaxLengthValidator_BaseFactory","ɵInternalFormsSharedModule","FormArray","_registerControl","removeAt","isAbstractControlOptions","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","NonNullableFormBuilder","controlsConfig","ɵUntypedFormBuilder_BaseFactory","warnOnNgModelWithFormControl","MAT_BUTTON_CONFIG","HOST_SELECTOR_MDC_CLASS_PAIR","attribute","mdcClasses","MatButtonBase","_animationMode","_rippleLoader","MatRippleLoader","_isFab","_disableRipple","_updateRippleDisabled","ariaDisabled","disabledInteractive","_StructuralStylesLoader","configureRipple","destroyRipple","_getAriaDisabled","_getDisabledAttribute","setDisabled","MatAnchorBase","_haltDisabledEvents","stopImmediatePropagation","ɵMatAnchorBase_BaseFactory","MatButton","ɵMatButton_BaseFactory","MatAnchor","ɵMatAnchor_BaseFactory","MatIconButton","centered","MatRippleModule","MAT_CHECKBOX_DEFAULT_OPTIONS","MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY","clickAction","TransitionCheckState","Init","Checked","Unchecked","Indeterminate","MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR","MatCheckbox","MatCheckboxChange","checked","_inputElement","_createChangeEvent","isChecked","_getAnimationTargetElement","_animationClasses","uncheckedToChecked","uncheckedToIndeterminate","checkedToUnchecked","checkedToIndeterminate","indeterminateToChecked","indeterminateToUnchecked","ariaDescribedby","ariaExpanded","ariaControls","_uniqueId","inputId","labelPosition","indeterminateChange","_labelElement","_currentAnimationClass","_currentCheckState","_controlValueAccessorChangeFn","_validatorChangeFn","_syncIndeterminate","_indeterminate","_checked","_transitionCheckState","_isRippleDisabled","_onLabelTextChange","newState","oldState","_getAnimationClassForCheckStateTransition","animationClass","_handleInputClick","_onInteractionEvent","nativeCheckbox","_onInputClick","_onTouchTargetClick","_preventBubblingFromLabel","checkbox_r2","MatRipple","_MatInternalFormField","MatChip_Conditional_3_Template","MatChip_Conditional_7_Template","MatChipRow_Conditional_0_Template","MatChipRow_Conditional_2_Template","MatChipRow_Conditional_4_Conditional_0_Template","MatChipRow_Conditional_4_Conditional_1_Template","MatChipRow_Conditional_4_Template","contentEditInput","MatChipRow_Conditional_5_Template","MatChipRow_Conditional_7_Template","MAT_CHIPS_DEFAULT_OPTIONS","separatorKeyCodes","MAT_CHIP_AVATAR","MAT_CHIP_TRAILING_ICON","MAT_CHIP_REMOVE","MAT_CHIP","MatChipAction","_parentChip","isInteractive","_isPrimary","_allowFocusWhenDisabled","_getTabindex","_handlePrimaryActionInteraction","_isEditing","MatChipRemove","ɵMatChipRemove_BaseFactory","MatChip","_globalRippleOptions","MAT_RIPPLE_GLOBAL_OPTIONS","_isBasicChip","_hasFocusInternal","_pendingFocus","_actionChanges","_allLeadingIcons","_allTrailingIcons","_allRemoveIcons","ariaDescription","_ariaDescriptionId","_chipListDisabled","_textElement","removable","highlighted","basicChipAttrName","leadingIcon","trailingIcon","removeIcon","primaryAction","animationMode","_monitorFocus","chip","_hasTrailingIcon","_getSourceAction","_getActions","hasFocus","MatChipEditInput","getNativeElement","_moveCursorToEndOfInput","sel","MatChipRow","_editStartPending","edited","defaultEditInput","_onEditFinish","_startEditing","_handleDoubleclick","_getEditInput","MatChipSet","_lastDestroyedFocusedChipIndex","_defaultRole","chipFocusChanges","_getChipStream","chipDestroyedChanges","chipRemovedChanges","_syncChipsState","_chips","_explicitRole","focused","_hasFocusedChip","_chipActions","_setUpFocusManagement","_trackChipSetChanges","_trackDestroyedFocusedChip","_originatesFromChip","_isValidIndex","_allowFocusEscape","mappingFunction","chips","_redirectDestroyedChipFocus","chipIndex","chipToFocus","MatChipGridChange","MatChipGrid","controlType","_chipInput","_errorStateTracker","_ariaDescribedbyIds","stateChanges","_required","shouldLabelFloat","errorStateMatcher","matcher","chipBlurChanges","valueChange","errorState","parentFormGroup","defaultErrorStateMatcher","_ErrorStateTracker","_blur","updateErrorState","registerInput","inputElement","setDescribedByIds","onContainerClick","_propagateChanges","_markAsTouched","_focusLastChip","eligibleActions","valueToEmit","MatFormFieldControl","MatChipInput","chipGrid","_chipGrid","addOnBlur","chipEnd","_keydown","_emitChipEnd","_focus","_isSeparatorKey","chipInput","_onInput","MatOption_Conditional_0_Template","MatOption_Conditional_5_Template","MatOption_Conditional_6_Template","AnimationCurves","AnimationDurations","_defaultMatcher","_parentFormGroup","_parentForm","_stateChanges","MAT_DATE_LOCALE_FACTORY","NOT_IMPLEMENTED","_localeChanges","localeChanges","getValidDateOrNull","compareDate","second","compareTime","sameDate","firstValid","secondValid","sameTime","clampDate","ISO_8601_REGEX","TIME_REGEX","NativeDateAdapter","useUtcForDisplay","_matDateLocale","_format","weekday","Locale","firstDay","getWeekInfo","weekInfo","_createDateWithOverflow","_2digit","userValue","_parseTimeString","withoutExtras","inRange","MAT_NATIVE_DATE_FORMATS","hour","minute","provideNativeDateAdapter","RippleState","FADING_IN","VISIBLE","FADING_OUT","HIDDEN","RippleRef","_animationForciblyDisabledThroughCss","fadeOut","fadeOutRipple","passiveCapturingEventOptions$1","RippleEventManager","addHandler","handlersForEvent","handlersForElement","_delegateEventHandler","removeHandler","handlers","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveCapturingEventOptions","pointerDownEvents","pointerUpEvents","_MatRippleStylesLoader","RippleRenderer","_triggerElement","_isPointerDown","_activeRipples","_mostRecentTransientRipple","_lastTouchStartEvent","_pointerUpEventsRegistered","fadeInRipple","animationConfig","distanceToFurthestCorner","distX","distY","sqrt","ripple","transitionDuration","computedStyles","userTransitionDuration","animationForciblyDisabledThroughCss","transitionProperty","rippleRef","persistent","eventListeners","onTransitionEnd","fallbackTimer","_finishRippleTransition","onTransitionCancel","_destroyRipple","rippleEl","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_removeTriggerEvents","_eventManager","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","isFakeMousedown","rippleDisabled","clientX","clientY","rippleConfig","terminateOnPointerUp","unbounded","_setupTriggerEventsIfEnabled","_trigger","_rippleRenderer","_globalOptions","globalOptions","launch","configOrX","MatPseudoCheckbox","MatPseudoCheckboxModule","isUserInput","_signalDisableRipple","_mostRecentViewValue","_text","viewValue","_emitSelectionChangeEvent","_getTabIndex","_inert","optionIndex","optionsArray","groupCounter","optionOffset","optionHeight","currentScrollPosition","panelHeight","eventListenerOptions","rippleInteractionEvents","matRippleUninitialized","matRippleClassName","matRippleCentered","matRippleDisabled","_hosts","_onInteraction","hosts","hasSetUpEvents","eventTarget","HTMLElement","_createRipple","isNoopAnimations","_forTrack0","$item","_trackRow","_forTrack1","MatCalendarBody_Conditional_0_Template","_cellPadding","numCols","MatCalendarBody_For_2_Conditional_1_Template","_firstRowOffset","labelMinRequiredCells","MatCalendarBody_For_2_For_3_Template","item_r3","_cellClicked","_emitActiveDateChange","ɵ$index_14_r4","ɵ$index_7_r5","_cellWidth","_isActiveCell","_isRangeStart","compareValue","_isRangeEnd","_isInRange","_isComparisonBridgeStart","_isComparisonBridgeEnd","_isComparisonStart","_isComparisonEnd","_isInComparisonRange","_isPreviewStart","_isPreviewEnd","_isInPreview","_isSelected","todayValue","_getDescribedby","_isComparisonIdentical","MatCalendarBody_For_2_Template","row_r6","MatMonthView_For_4_Template","day_r1","MatCalendar_ng_template_0_Template","MatCalendar_Case_2_Template","_dateSelected","_dragStarted","_dragEnded","dateFilter","maxDate","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","_activeDrag","MatCalendar_Case_3_Template","_monthSelectedInYearView","_goToDateInView","MatCalendar_Case_4_Template","_yearSelectedInMultiYearView","MatDatepickerContent_ng_template_2_Template","MatDatepickerToggle_Conditional_2_Template","MatDatepickerIntl","calendarLabel","openCalendarLabel","closeCalendarLabel","prevMonthLabel","nextMonthLabel","prevYearLabel","nextYearLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","startDateLabel","endDateLabel","comparisonDateLabel","formatYearRange","formatYearRangeLabel","uniqueIdCounter$1","MatCalendarCell","passiveEventOptions","MatCalendarBody","_intl","_skipNextFocus","_focusActiveCellAfterViewChecked","startValue","endValue","activeCell","_focusActiveCell","isRange","cellAspectRatio","previewStart","previewEnd","selectedValueChange","previewChange","activeDateChange","dragStarted","dragEnded","_startDateLabelId","_endDateLabelId","_comparisonStartDateLabelId","_comparisonEndDateLabelId","_didDragSinceMouseDown","comparisonDateAccessibleName","idGenerator","_touchmoveHandler","_enterHandler","_leaveHandler","_mousedownHandler","_mouseupHandler","_touchendHandler","cell","columnChanges","rowIndex","colIndex","cellNumber","movePreview","_scheduleFocusActiveCellAfterViewChecked","isStart","isEnd","isInRange","previousCell","nextCell","nextRow","_getCellFromElement","getActualTouchTarget","getCellElement","cellElement","isTableCell","rangeEnabled","touchLocation","DateRange","_disableStructuralEquivalency","MatDateSelectionModel","_adapter","_selectionChanged","updateSelection","_isValidDateInstance","MatSingleDateSelectionModel","MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER","MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY","MAT_DATE_RANGE_SELECTION_STRATEGY","MatMonthView","_dateFormats","_dateAdapter","_rangeStrategy","_rerenderSubscription","_selectionKeyPressed","_activeDate","oldActiveDate","validDate","_hasSameMonthAndYear","_init","_setRanges","_minDate","_maxDate","activeDrag","selectedChange","_userSelection","_matCalendarBody","_monthLabel","_weeks","_firstWeekOffset","_rangeStart","_rangeEnd","_comparisonRangeStart","_comparisonRangeEnd","_previewStart","_previewEnd","_isRange","_todayDate","_weekdays","comparisonChange","_clearPreview","selectedDate","_getDateFromDayOfMonth","rangeStartDate","rangeEndDate","_getDateInCurrentMonth","_updateActiveDate","_handleCalendarBodyKeydown","_canSelect","_handleCalendarBodyKeyup","_getCellCompareValue","monthLabel","firstOfMonth","_initWeekdays","_createWeekCells","_previewChanged","previewRange","createPreview","dragRange","dragDropResult","firstDayOfWeek","narrowWeekdays","weekdays","dateNames","_shouldEnableDate","cellClasses","d2","MatMultiYearView","isSameMultiYearView","_setSelectedYear","yearSelected","_years","_todayYear","_selectedYear","minYearOfPage","getActiveOffset","_createCellForYear","_yearSelected","selectedYear","_getDateFromYear","yearsPerPage","_getActiveCell","activeMonth","yearName","_shouldEnableYear","dateAdapter","year1","year2","startingYear","getStartingYear","euclideanModulo","MatYearView","_setSelectedMonth","monthSelected","_months","_yearLabel","_todayMonth","_selectedMonth","_monthSelected","selectedMonth","_getDateFromMonth","_getMonthInCurrentYear","monthNames","_createCellForMonth","normalizedDate","monthName","_shouldEnableMonth","activeYear","_isYearAndMonthAfterMaxDate","_isYearAndMonthBeforeMinDate","maxYear","maxMonth","minYear","minMonth","MatCalendarHeader","MatCalendar","periodButtonText","_formatMinAndMaxYearLabels","periodButtonDescription","periodButtonLabel","prevButtonLabel","nextButtonLabel","currentPeriodClicked","previousClicked","nextClicked","previousEnabled","_isSameView","maxYearOfPage","_periodButtonLabelId","headerComponent","_calendarHeaderPortal","_intlChanges","_moveFocusOnNextTick","startAt","_startAt","viewChanged","_userDragDrop","monthView","yearView","multiYearView","_clampedActiveDate","_currentView","viewChangedResult","focusActiveCell","minDateChange","maxDateChange","changeRequiringRerender","_getCurrentViewComponent","updateTodaysDate","normalizedYear","normalizedMonth","tmp_1_0","matDatepickerAnimations","transformPanel","fadeInCalendar","MAT_DATEPICKER_SCROLL_STRATEGY","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY","MatDatepickerContent","_globalModel","_rangeSelectionStrategy","_subscriptions","_model","_calendar","datepicker","_isAbove","_animationState","_isAnimating","_closeButtonText","_closeButtonFocused","_actionsPortal","_dialogLabelId","intl","touchUi","_handleUserSelection","newSelection","selectionFinished","_handleUserDragDrop","_startExitAnimation","_handleAnimationEvent","_getSelected","_applyPendingSelection","_assignActions","forceRerender","_selectYear","_selectMonth","_viewChanged","calendarHeaderComponent","_getMinDate","_getMaxDate","_getDateFilter","MatDatepickerBase","_inputStateChanges","datepickerInput","getStartValue","getThemePalette","yPosition","restoreFocus","openedStream","closedStream","_panelClass","_opened","_componentRef","_focusedElementBeforeOpen","_backdropHarnessClass","_setConnectedPositions","_destroyOverlay","registerActions","removeActions","_openOverlay","canRestoreFocus","completeClose","_forwardContentValues","getOverlayLabelId","isDialog","_getDialogStrategy","_getDropdownStrategy","_getCloseStream","primaryX","secondaryX","primaryY","secondaryY","ctrlShiftMetaModifiers","MatDatepicker","ɵMatDatepicker_BaseFactory","MatDatepickerInputEvent","targetElement","MatDatepickerInputBase","_getValueFromModel","_assignValueProgrammatically","_parentDisabled","blur","dateChange","_validatorOnChange","_cvaOnChange","_valueChangesSubscription","_localeSubscription","_parseValidator","_lastValueValid","matDatepickerParse","_filterValidator","controlValue","_matchesFilter","matDatepickerFilter","_minValidator","_maxValidator","_getValidators","_registerModel","_assignValue","_shouldHandleChangeEvent","_isValidValue","_formatValue","dateInputsHaveChanged","_openPopup","lastValueWasValid","hasChanged","_assignValueToModel","MAT_DATEPICKER_VALUE_ACCESSOR","MatDatepickerInput","MAT_DATEPICKER_VALIDATORS","_closedSubscription","_openedSubscription","matDatepicker","_datepicker","_ariaOwns","_min","validValue","_max","_dateFilter","wasMatchingValue","modelValue","MAT_INPUT_VALUE_ACCESSOR","MatDatepickerToggleIcon","MatDatepickerToggle","_customIcon","_button","defaultTabIndex","parsedTabIndex","_watchStateChanges","_open","datepickerStateChanged","inputStateChanged","datepickerToggled","CdkDialogContainer_ng_template_0_Template","DialogConfig","ariaDescribedBy","ariaModal","closeOnDestroy","closeOnOverlayDetachments","templateContext","CdkDialogContainer","_interactivityChecker","_focusTrap","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledByQueue","_isDestroyed","_addAriaLabelledBy","_removeAriaLabelledBy","_contentAttached","_initializeFocusTrap","_handleBackdropClicks","_captureInitialFocus","_trapFocus","_restoreFocus","_recaptureFocus","_containsFocus","_forceFocus","_focusByCssSelector","elementToFocus","_focusDialogContainer","focusConfig","focusTargetElement","DialogRef","containerInstance","closedSubject","DIALOG_SCROLL_STRATEGY","DIALOG_DATA","DEFAULT_DIALOG_CONFIG","Dialog","_parentDialog","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","openDialogs","afterOpened","afterAllClosed","_getAfterAllClosed","componentOrTemplateRef","getDialogById","dialogContainer","_attachContainer","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","_removeOpenDialog","reverseForEach","userInjector","containerType","containerPortal","_createInjector","contentRef","fallbackInjector","overlayContainer","DialogModule","MatDialogContainer_ng_template_2_Template","delayFocusTrap","enterAnimationDuration","exitAnimationDuration","OPEN_CLASS","OPENING_CLASS","CLOSING_CLASS","MatDialogContainer","_animationStateChanged","_animationsEnabled","_actionSectionCount","_hostElement","_enterAnimationDuration","parseCssTime","_exitAnimationDuration","_animationTimer","_startOpenAnimation","TRANSITION_DURATION_PROPERTY","_requestAnimationFrame","_waitForAnimationToComplete","_finishDialogOpen","_finishDialogClose","_updateActionSectionCount","_clearAnimationClasses","_openAnimationDone","ɵMatDialogContainer_BaseFactory","MatDialogState","OPEN","CLOSING","CLOSED","_containerInstance","_afterOpened","_beforeClosed","_result","_closeFallbackTimeout","_closeDialogVia","dialogResult","beforeClosed","interactionType","MAT_DIALOG_SCROLL_STRATEGY","_dialog","dialogConfigClass","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","cdkRef","cdkConfig","_closeDialogs","MatDialogClose","_matDialogClose","getClosestDialog","proxiedChange","_matDialogCloseResult","_onButtonClick","screenX","screenY","MatDialogLayoutSection","_dialogRef","_onAdd","_onRemove","MatDialogTitle","ɵMatDialogTitle_BaseFactory","MatDialogContent","MatDialogActions","align","ɵMatDialogActions_BaseFactory","MatDivider","vertical","inset","_inset","MatFormField_ng_template_0_Conditional_0_Conditional_2_Template","MatFormField_ng_template_0_Conditional_0_Template","_shouldLabelFloat","_hasOutline","_labelId","disableAutomaticLabeling","hideRequiredMarker","MatFormField_ng_template_0_Template","_hasFloatingLabel","MatFormField_Conditional_4_Template","MatFormField_Conditional_6_Conditional_1_ng_template_0_Template","MatFormField_Conditional_6_Conditional_1_Template","labelTemplate_r3","MatFormField_Conditional_6_Template","_forceDisplayInfixLabel","MatFormField_Conditional_7_Template","MatFormField_Conditional_8_Template","MatFormField_Conditional_10_ng_template_0_Template","MatFormField_Conditional_10_Template","MatFormField_Conditional_12_Template","MatFormField_Conditional_13_Template","MatFormField_Conditional_14_Template","MatFormField_Case_16_Template","_subscriptAnimationState","MatFormField_Case_17_Conditional_1_Template","_hintLabelId","hintLabel","MatFormField_Case_17_Template","MatLabel","MAT_ERROR","MatError","MatHint","MAT_PREFIX","MatPrefix","_isTextSelector","_isText","MAT_SUFFIX","MatSuffix","FLOATING_LABEL_PARENT","MatFormFieldFloatingLabel","floating","_floating","monitorResize","_handleResize","_monitorResize","_subscribeToResize","getWidth","estimateScrollWidth","offsetParent","_handleLabelResized","ACTIVATE_CLASS","DEACTIVATING_CLASS","MatFormFieldLineRipple","_handleTransitionEnd","deactivate","isDeactivating","MatFormFieldNotchedOutline","_notch","_setNotchWidth","labelWidth","matFormFieldAnimations","transitionMessages","autofilled","userAriaDescribedBy","MatFormField","_textField","_iconPrefixContainer","_textPrefixContainer","_iconSuffixContainer","_textSuffixContainer","_floatingLabel","_notchedOutline","_lineRipple","_formFieldControl","_prefixChildren","_suffixChildren","_errorChildren","_hintChildren","_labelChild","_hideRequiredMarker","_appearance","_needsOutlineLabelOffsetUpdate","_subscriptSizing","_hintLabel","_processHints","_hasIconPrefix","_hasTextPrefix","_hasIconSuffix","_hasTextSuffix","_explicitFormFieldControl","_isFocused","_previousControl","_valueChanges","_describedByChanges","_updateFocusState","_assertFormFieldControl","_initializeSubscript","_initializePrefixAndSuffix","_initializeOutlineLabelOffsetSubscriptions","_initializeControl","previousControl","prevErrorState","prevDescribedBy","currentErrorState","currentDescribedBy","_syncDescribedByIds","_checkPrefixAndSuffixTypes","_validateHints","_updateOutlineLabelOffset","_shouldAlwaysFloat","_shouldForward","_getDisplayedMessages","_refreshOutlineNotchWidth","startHint","hint","endHint","floatingLabel","_isAttachedToDom","iconPrefixContainer","textPrefixContainer","iconSuffixContainer","textSuffixContainer","iconPrefixContainerWidth","textPrefixContainerWidth","iconSuffixContainerWidth","textSuffixContainerWidth","tmp_16_0","MAT_INPUT_INVALID_TYPES","MAT_INPUT_CONFIG","MatInput","_autofillMonitor","_uid","_previousNativeValue","_inputValueAccessor","_signalBasedValueAccessor","_previousPlaceholder","_webkitBlinkWheelListenerAttached","_formFieldDescribedBy","_isServer","_isNativeSelect","_isTextarea","_isInFormField","_validateType","_ensureWheelDefaultBehavior","readonly","_readonly","_neverEmptyInputTypes","accessor","_iOSKeyupListener","_webkitBlinkWheelListener","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","_focusChanged","isFocused","_getPlaceholder","_isNeverEmpty","_isBadInput","validity","badInput","selectElement","firstOption","existingDescribedBy","toAssign","_isInlineSelect","_getReadonlyAttribute","MatMenuItem_Conditional_4_Template","MatMenu_ng_template_0_Template","_onAnimationStart","_onAnimationDone","_panelAnimationState","MAT_MENU_PANEL","MatMenuItem","_parentMenu","_hovered","_focused","_highlighted","_triggersSubmenu","addItem","_checkDisabled","_handleMouseEnter","icons","_setHighlighted","isHighlighted","_setTriggersSubmenu","triggersSubmenu","MAT_MENU_CONTENT","MatMenuContent","_outlet","_attached","matMenuAnimations","transformMenu","fadeInItems","MAT_MENU_DEFAULT_OPTIONS","MAT_MENU_DEFAULT_OPTIONS_FACTORY","overlapTrigger","MatMenu","_yPosition","_firstItemFocusRef","_allItems","_directDescendantItems","parentMenu","setPositionClasses","lazyContent","previousPanelClass","_previousPanelClass","newClassList","_updateDirectDescendants","focusedItem","itemsList","focusFirstItem","menuPanel","resetActiveItem","setElevation","_depth","posX","posY","_startAnimation","_resetAnimation","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_MENU_SCROLL_STRATEGY_FACTORY","PANELS_TO_TRIGGERS","MatMenuTrigger","_menuItemInstance","_menuOpen","_hoverSubscription","_menuCloseSubscription","_parentMaterialMenu","_parentInnerPadding","_handleTouchStart","_openedBy","_deprecatedMatMenuTriggerFor","_menu","_destroyMenu","menuData","menuOpened","onMenuOpen","menuClosed","onMenuClose","_handleHover","_ownsMenu","menuOpen","toggleMenu","closeMenu","openMenu","_setPosition","_getPortal","_menuClosingActions","_initMenu","_setIsMenuOpen","previousTrigger","_subscribeToPositions","originFallbackX","overlayFallbackY","originFallbackY","overlayFallbackX","firstItem","parentClose","hover","_handleMousedown","MatPaginator_Conditional_2_Conditional_3_For_4_Template","pageSizeOption_r3","MatPaginator_Conditional_2_Conditional_3_Template","_changePageSize","selectRef_r4","_formFieldAppearance","_pageSizeLabelId","selectConfig","disableOptionCentering","_displayedPageSizeOptions","MatPaginator_Conditional_2_Conditional_4_Template","MatPaginator_Conditional_2_Template","itemsPerPageLabel","MatPaginator_Conditional_6_Template","_buttonClicked","_previousButtonsDisabled","firstPageLabel","MatPaginator_Conditional_13_Template","getNumberOfPages","_nextButtonsDisabled","lastPageLabel","MatPaginatorIntl","nextPageLabel","previousPageLabel","getRangeLabel","MAT_PAGINATOR_INTL_PROVIDER","MAT_PAGINATOR_INTL_PROVIDER_FACTORY","parentIntl","MatPaginator","_initializedStream","pageIndex","_pageIndex","_length","_pageSize","_updateDisplayedPageSizeOptions","_pageSizeOptions","hidePageSize","showFirstLastButtons","nextPage","hasNextPage","_navigate","previousPage","hasPreviousPage","firstPage","lastPage","maxPageIndex","previousPageIndex","_emitPageEvent","MatSelect","MatTooltip","MatRadioChange","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","MatRadioGroup","MAT_RADIO_GROUP","MAT_RADIO_DEFAULT_OPTIONS","MAT_RADIO_DEFAULT_OPTIONS_FACTORY","_changeDetector","_name","_labelPosition","_buttonChanges","_radios","_updateRadioButtonNames","_markRadiosForCheck","_updateSelectedRadioFromValue","_checkSelectedRadioButton","_disabledInteractive","radio","_touch","_markForCheck","MatRadioButton","_radioDispatcher","radioGroup","_setDisabled","_removeUniqueSelectionListener","_previousTabIndex","_rippleTrigger","_noopAnimations","_updateTabIndex","_onInputInteraction","groupValueChanged","MatSelect_Conditional_4_Template","MatSelect_Conditional_5_Conditional_1_Template","MatSelect_Conditional_5_Conditional_2_Template","triggerValue","MatSelect_Conditional_5_Template","customTrigger","MatSelect_ng_template_10_Template","_panelDoneAnimatingStream","_getPanelTheme","matSelectAnimations","transformPanelWrap","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","MAT_SELECT_TRIGGER","MatSelectChange","_parentFormField","_liveAnnouncer","_positions","_scrollOptionIntoView","_positioningSettled","_getChangeEvent","_panelOpen","_compareWith","o1","o2","_triggerAriaLabelledBy","_destroy","_selectionModel","_preferredOverlayOrigin","_overlayWidth","_valueId","_overlayPanelClass","_overlayDir","_initializeSelection","typeaheadDebounceInterval","sortComparator","canSelectNullableOptions","optionSelectionChanges","openedChange","_openedStream","_closedStream","selectionChange","_panelDoneAnimating","_getOverlayWidth","_initKeyManager","_resetOptions","newAriaLabelledby","_getTriggerAriaLabelledby","_highlightCorrectOption","selectedOptions","_handleOpenKeydown","_handleClosedKeydown","isOpenKey","previouslySelectedOption","hasDeselectedOptions","previouslyFocusedIndex","_onAttached","_setSelectionByValue","_selectOptionByValue","_sortValues","correspondingOption","preferredOrigin","changedOrDestroyed","_onSelect","wasSelected","_getAriaActiveDescendant","fallbackOverlayOrigin_r4","MatSlideToggle_Conditional_10_Template","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","disableToggleValue","hideIcon","MAT_SLIDE_TOGGLE_VALUE_ACCESSOR","MatSlideToggle","MatSlideToggleChange","buttonId","_switchElement","toggleChange","_getAriaLabelledBy","switch_r2","SimpleSnackBar_Conditional_2_Template","MatSnackBarContainer_ng_template_4_Template","MAX_TIMEOUT","MatSnackBarRef","_afterDismissed","_onAction","_durationTimeoutId","_dismissedByAction","_onExit","_finishDismiss","dismissWithAction","closeWithAction","_dismissAfter","dismissedByAction","afterDismissed","_onEnter","onAction","MatSnackBarConfig","announcementMessage","MatSnackBarLabel","MatSnackBarActions","MatSnackBarAction","SimpleSnackBar","hasAction","matSnackBarAnimations","snackBarState","MatSnackBarContainer","snackBarConfig","_trackedModals","_announceDelay","_announceTimeoutId","_onAnnounce","_live","_label","_liveElementId","_assertNotAttached","_afterPortalAttached","onAnimationEnd","_completeExit","_screenReaderAnnounce","_clearFromModals","panelClasses","_exposeToModals","labelClass","inertElement","liveElement","focusedElement","MAT_SNACK_BAR_DEFAULT_OPTIONS","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","simpleSnackBarComponent","snackBarContainerComponent","handsetCssClass","_openedSnackBarRef","_attach","openFromTemplate","_attachSnackBarContainer","containerRef","userConfig","_animateSnackBar","isLeft","isRight","MatSortHeader_Conditional_3_Template","MatSort","sortables","sortChange","getNextSortDirection","sortDirectionCycle","getSortDirectionCycle","sortOrder","nextDirectionIndex","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY","MatSortHeader","_sort","_columnDef","_ariaDescriber","_renderChanges","_animationModule","_recentlyCleared","_sortButton","arrowPosition","sortActionDescription","_sortActionDescription","_updateSortActionDescription","_toggleOnInteraction","wasSorted","_isSorted","prevDirection","_getAriaSortAttribute","_renderArrow","newDescription","CdkStep_ng_template_0_Template","CdkStepHeader","CdkStepLabel","STEPPER_GLOBAL_OPTIONS","CdkStep","_stepperOptions","_stepper","CdkStepper","_displayDefaultIndicatorType","stepLabel","_childForms","stepControl","interactedStream","completed","_completedOverride","_getDefaultCompleted","_customError","_getDefaultError","stepperOptions","displayDefaultIndicatorType","_stateChanged","_markAsInteracted","_showError","showError","_steps","_stepHeader","_sortedHeaders","linear","_selectedIndex","_anyControlsInvalidOrPending","_updateSelectedItemIndex","selectedIndexChange","_groupId","_orientation","DOCUMENT_POSITION_FOLLOWING","_layoutDirection","_getStepContentId","_getAnimationDirection","_getIndicatorType","isCurrentStep","_isCurrentStep","_getDefaultIndicatorLogic","_getGuidelineLogic","_getFocusIndex","stepsArray","previouslySelectedIndex","previouslySelectedStep","stepperElement","CdkStepperPrevious","CdkStepperModule","ttWindow","getMatIconNameNotFoundError","iconName","getMatIconFailedToSanitizeUrlError","getMatIconFailedToSanitizeLiteralError","literal","SvgIconConfig","svgText","svgElement","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","_addSvgIconConfig","addSvgIconResolver","resolver","cleanLiteral","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","classNames","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","cachedIcon","cloneSvg","_loadSvgIconFromConfig","svg","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","_setSvgAttributes","_toSvgElement","_svgElementFromString","div","viewBox","iconConfig","getMatIconNoHttpProviderError","inProgressFetch","configNamespace","isSafeUrlWithOptions","MAT_ICON_DEFAULT_OPTIONS","MAT_ICON_LOCATION","MAT_ICON_LOCATION_FACTORY","getPathname","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","MatIcon","_iconRegistry","_defaultColor","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_previousFontSetClass","_previousFontIconClass","_svgName","_svgNamespace","_previousPath","_elementsWithExternalReferences","_currentIconFetch","_splitIconName","cachedElements","_prependPathToReferences","_usingFontIcon","_setSvgElement","_cacheChildrenWithExternalReferences","layoutElement","fontSetClasses","elementsWithFuncIri","elementWithReference","rawName","MatIconModule","MatStepHeader_Conditional_3_Template","iconOverrides","_getIconContext","MatStepHeader_Conditional_4_Case_0_Template","_getDefaultTextForState","MatStepHeader_Conditional_4_Case_1_Conditional_0_Template","completedLabel","MatStepHeader_Conditional_4_Case_1_Conditional_1_Template","editableLabel","MatStepHeader_Conditional_4_Case_1_Template","MatStepHeader_Conditional_4_Template","MatStepHeader_Conditional_6_Template","MatStepHeader_Conditional_7_Template","MatStepHeader_Conditional_8_Template","optionalLabel","MatStepHeader_Conditional_9_Template","MatStep_ng_template_0_ng_template_1_Template","MatStep_ng_template_0_Template","a0","animationDuration","MatStepper_Conditional_0_Template","MatStepper_Case_1_For_3_Conditional_1_Template","MatStepper_Case_1_For_3_Template","step_r1","ɵ$index_8_r2","ɵ$count_8_r3","stepTemplate_r4","MatStepper_Case_1_For_6_Template","ctx_r5","step_r7","ɵ$index_16_r8","_getAnimationDuration","MatStepper_Case_1_Template","MatStepper_Case_2_For_1_Template","step_r10","ɵ$index_22_r11","ɵ$count_22_r12","MatStepper_Case_2_Template","MatStepper_ng_template_3_Template","step_r14","i_r15","_stepIsNavigable","_iconOverrides","MatStepLabel","ɵMatStepLabel_BaseFactory","MatStepperIntl","MAT_STEPPER_INTL_PROVIDER","MAT_STEPPER_INTL_PROVIDER_FACTORY","MatStepHeader","_intlSubscription","_stringLabel","_templateLabel","matStepperAnimations","horizontalStepTransition","verticalStepTransition","MatStepperIcon","MatStepContent","MatStep","_errorStateMatcher","_lazyContent","ɵMatStep_BaseFactory","MatStepper","_icons","animationDone","headerPosition","_animationDuration","MatStepperPrevious","ɵMatStepperPrevious_BaseFactory","MatTab_ng_template_0_Template","MatTabBody_ng_template_2_Template","MatTabGroup_For_3_Conditional_6_ng_template_0_Template","MatTabGroup_For_3_Conditional_6_Template","tab_r4","templateLabel","MatTabGroup_For_3_Conditional_7_Template","textLabel","MatTabGroup_For_3_Template","ɵ$index_3_r5","tabHeader_r7","_tabFocusChanged","tabNode_r8","_getTabLabelId","fitInkBarToContent","_tabs","_getTabContentId","MatTabGroup_Conditional_4_Template","MatTabGroup_For_8_Template","_removeTabBodyWrapperHeight","_setTabBodyWrapperHeight","tab_r10","ɵ$index_23_r11","bodyClass","contentTabIndex","MAT_TAB_CONTENT","MatTabContent","MAT_TAB_LABEL","MAT_TAB","MatTabLabel","_closestTab","ɵMatTabLabel_BaseFactory","MAT_TAB_GROUP","MatTab","_closestTabGroup","_setTemplateLabelInput","_explicitContent","_implicitContent","_contentPortal","ACTIVE_CLASS","NO_TRANSITION_CLASS","MatInkBar","_currentItem","hide","deactivateInkBar","alignToElement","correspondingItem","activateInkBar","InkBarItem","_inkBarElement","_inkBarContentElement","_fitToContent","_appendInkBarElement","previousIndicatorClientRect","currentClientRect","widthDelta","_createInkBarElement","documentNode","inkBarElement","inkBarContentElement","MatTabLabelWrapper","getOffsetLeft","offsetLeft","getOffsetWidth","ɵMatTabLabelWrapper_BaseFactory","MatPaginatedTabHeader","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","_tabLabelCount","_scrollDistanceChanged","_currentTextContent","disablePagination","selectFocusedIndex","indexFocused","_sharedResizeObserver","_stopInterval","_previousPaginator","_handlePaginatorPress","_nextPaginator","dirChange","viewportResize","realign","updatePagination","_alignInkBarToSelectedTab","_getLayoutDirection","_itemsResized","_getMaxScrollDistance","newFocusIndex","_setTabFocus","tabItems","resizeObserver","contentRect","_scrollToLabel","_checkScrollingControls","_updateTabScrollPosition","focusIndex","_itemSelected","_onContentChanges","_checkPaginationEnabled","containerEl","_tabListContainer","scrollDistance","translateX","_tabList","_scrollTo","_scrollHeader","_handlePaginatorClick","labelIndex","selectedLabel","viewLength","labelBeforePos","labelAfterPos","_tabListInner","beforeVisiblePos","afterVisiblePos","selectedLabelWrapper","_inkBar","mouseEvent","maxScrollDistance","MatTabHeader","ɵMatTabHeader_BaseFactory","MAT_TABS_CONFIG","matTabsAnimations","translateTab","MatTabBodyPortal","MatTabBody","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","isCentering","_content","_afterLeavingCenter","_positionIndex","_dirChangeSubscription","_translateTabComplete","_onCentering","_onCentered","_portalHost","_computePositionAnimationState","_computePositionFromOrigin","_onTranslateTabStarted","MatTabGroup","_allTabs","_tabBodyWrapper","_tabHeader","_indexToSelect","_lastFocusedTabIndex","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","_fitInkBarToContent","stretchTabs","alignTabs","dynamicHeight","stringValue","_contentTabIndex","_backgroundColor","focusChange","selectedTabChange","indexToSelect","_clampTabIndex","isFirstRun","_subscribeToAllTabChanges","_subscribeToTabLabels","selectedTab","realignInkBar","focusTab","MatTabChangeEvent","tabHeight","tabHeader","MAT_TOOLTIP_SCROLL_STRATEGY","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY","MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY","hideDelay","touchendHideDelay","PANEL_CLASS","passiveListenerOptions","_tooltipInstance","_positionAtOrigin","_tooltipClass","_viewInitialized","_pointerExitEventsInitialized","_tooltipComponent","TooltipComponent","_currentPosition","_cssClassPrefix","_ariaDescriptionPending","_updatePosition","show","positionAtOrigin","_setupPointerEnterEventsIfNeeded","_syncAriaDescription","_showDelay","_hideDelay","_mouseLeaveHideDelay","touchGestures","oldMessage","_isTooltipVisible","_updateTooltipMessage","tooltipClass","_setTooltipClass","_passiveListeners","_touchstartTimeout","_cancelPendingAnimations","afterHidden","existingStrategy","scrollableAncestors","_updateCurrentPositionClass","_handleBodyInteraction","disableTooltipInteractivity","_addOffset","main","isLtr","originPosition","_invertPosition","overlayPosition","_platformSupportsMouseEvents","_setupPointerExitEventsIfNeeded","_disableNativeGesturesIfNecessary","touchLongPressShowDelay","_addListeners","exitListeners","newTarget","_wheelListener","touchendListener","elementUnderPointer","gestures","msUserSelect","webkitUserSelect","MozUserSelect","webkitUserDrag","touchAction","_isMultiline","_showTimeoutId","_hideTimeoutId","_tooltip","_closeOnInteraction","_isVisible","_onHide","_showAnimation","_hideAnimation","_toggleVisibility","_handleMouseLeave","_finalizeAnimation","_onShow","_isTooltipMultiline","_handleAnimationEnd","toVisible","tooltip","showClass","hideClass","MatTreeNode","tabIndexInputBinding","_tabIndexInputBinding","_getTabindexAttribute","isNoopTreeKeyManager","keyManager","_isNoopTreeKeyManager","MatTreeNodeDef","ɵMatTreeNodeDef_BaseFactory","MatNestedTreeNode","_tabIndex","ɵMatNestedTreeNode_BaseFactory","MatTreeNodeOutlet","MatTree","ɵMatTree_BaseFactory","MatTreeNodeToggle","ɵMatTreeNodeToggle_BaseFactory","collectionViewer","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","ɵsetRootDomAdapter","onAndCancel","evt","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","getBaseElementHref","baseElement","relativePath","baseURI","resetBaseElement","getCookie","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_plugins","_eventNameToPlugin","plugin","_findPluginFor","getZone","EventManagerPlugin","APP_ID_ATTRIBUTE_NAME","removeElements","createStyleElement","styleElement","createLinkElement","linkElement","SharedStylesHost","appId","isServer","addServerStyles","HTMLLinkElement","usage","addStyles","urls","addUsage","removeStyles","removeUsage","usages","creator","addElement","addHost","hostNode","removeHost","NAMESPACE_URIS","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","compId","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","platformIsServer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","applyStyles","ShadowDomRenderer","throwOnSyntheticProps","createElementNS","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","decoratePreventDefault","hostEl","styleEl","styleUrls","styleUrl","linkEl","nodeOrShadowRoot","contentAttr","hostAttr","shimContentAttribute","componentShortId","shimHostAttribute","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","decrement","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","Meta","_dom","addTag","forceCreation","_getOrCreateElement","addTags","getTag","attrSelector","getTags","updateTag","_parseSelector","_setMetaElementAttributes","removeTag","removeTagElement","_containsAttributes","getElementsByTagName","_getMetaKeyMap","META_KEYS_MAP","httpEquiv","getTitle","newTitle","__ngConditionalFactory__","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","takeLast","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segments","segmentGroup","hasChildren","posParams","consumed","shallowEqual","getDataKeys","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","pathCompareMap","exact","equalSegmentGroups","containee","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","_queryParamMap","UrlSegmentGroup","DEFAULT_SERIALIZER","serialize","serializePaths","UrlSegment","_parameterMap","parameterMap","serializePath","as","bs","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","primary","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","MATRIX_PARAM_SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","matchMatrixKeySegments","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","fe","squashSegmentGroup","newChildren","childCandidate","grandChildOutlet","grandChild","mergeTrivialChildren","isUrlTree","createSegmentGroupFromRoute","targetGroup","rootSegmentGroup","createSegmentGroupFromRouteRecursive","childOutlets","childSnapshot","createUrlTreeFromSegmentGroup","commands","computeNavigation","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","segmentPath","urlPart","partIndex","toRoot","findStartingPositionForTargetGroup","Position","isMatrixParams","createPositionApplyingDoubleDots","ci","dd","newSegmentGroup","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldRoot","oldSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","pathIndex","commandIndex","curr","slicedCommands","createNewSegmentGroup","getOutlets","childrenOfEmptyChild","createNewSegmentChildren","IMPERATIVE_NAVIGATION","EventType","NavigationCancel","RoutesRecognized","ResolveStart","ResolveEnd","GuardsCheckStart","GuardsCheckEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","ChildActivationEnd","ActivationStart","ActivationEnd","NavigationSkipped","RouterEvent","navigationTrigger","restoredState","NavigationCancellationCode","Redirect","SupersededByNewNavigation","NoDataFromResolver","GuardRejected","NavigationSkippedCode","IgnoredSameUrlNavigation","IgnoredByUrlHandlingStrategy","shouldActivate","routerEvent","BeforeActivateRoutes","RedirectRequest","navigationBehaviorOptions","getOutlet","getClosestRouteInjector","_loadedInjector","OutletContext","rootInjector","attachRef","ChildrenOutletContexts","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","Tree","_root","pathFromRoot","findNode","cc","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","createEmptyStateSnapshot","activated","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","urlSubject","paramsSubject","queryParamsSubject","fragmentSubject","dataSubject","_futureSnapshot","_routerState","_paramMap","futureSnapshot","getInherited","paramsInheritanceStrategy","inherited","_resolvedData","hasStaticTitle","_resolve","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","ROUTER_OUTLET_DATA","RouterOutlet","activatedComponentRef","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","routerOutletData","parentContexts","changeDetector","inputBinder","INPUT_BINDER","supportsBindingToComponentInputs","isTrackedInParentContexts","initializeOutletWithName","unsubscribeFromRouteData","activateWith","isActivated","activatedRoute","activatedRouteData","cmp","bindActivatedRouteToOutletComponent","childContexts","OutletInjector","outletData","__ngOutletInjector","RoutedComponentInputBinder","outletDataSubscriptions","subscribeToRouteData","dataSubscription","mirror","createNode","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","RedirectCommand","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","redirect","navigationCancelingError","cancellationCode","isNavigationCancelingError","ActivateRoutes","futureState","currState","forwardEvent","inputBindingEnabled","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","treeNode","activateRoutes","stored","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","isRedirect","redirectIfUrlTree","NoMatch","AbsoluteRedirect","urlTree","noMatch$1","ApplyRedirects","lineralizeSegments","applyRedirectCommands","redirectToFn","newRedirect","newTree","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","getOrCreateRouteInjectorIfNeeded","currentInjector","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","isCanMatch","createWildcardMatchResult","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","primarySegment","NoLeftoversInUrl","Recognizer","configLoader","rootComponentType","applyRedirects","absoluteRedirectCount","allowRedirects","noMatchError","recognize","rootSnapshot","routeState","createUrlTreeFromSnapshot","processSegmentGroup","parentRoute","processSegment","sortedConfig","sortByMatchingOutlets","scan","outletChildren","last$1","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","localeCompare","processSegmentAgainstRoute","noLeftoversInUrl","rawSegment","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","_loadedComponent","getResolve","newSegments","getChildConfig","childConfig","childInjector","matchedOnOutlet","_loadedRoutes","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","cfg","canLoadFails","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","flattenRouteTree","switchTap","nextResult","TitleStrategy","buildTitle","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","updateTitle","ROUTER_CONFIGURATION","ɵEmptyOutletComponent","standardizeConfig","ROUTES","RouterConfigLoader","componentLoaders","childrenLoaders","onLoadStartListener","onLoadEndListener","compiler","loadRunner","maybeUnwrapDefaultExport","factoryOrRoutes","rawRoutes","requireStandaloneComponents","isWrappedDefaultExport","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","newUrlPart","wholeUrl","CREATE_VIEW_TRANSITION","VIEW_TRANSITION_OPTIONS","createViewTransition","transitionOptions","startViewTransition","skipNextTransition","resolveViewTransitionStarted","viewTransitionStarted","createRenderPromise","onViewTransitionCreated","NAVIGATION_ERROR_HANDLER","NavigationTransitions","currentNavigation","lastSuccessfulNavigation","transitionAbortSubject","rootContexts","titleStrategy","urlHandlingStrategy","navigationErrorHandler","navigationId","hasRequestedNavigation","afterPreactivation","handleNavigationRequest","setupNavigations","initialUrlTree","initialRouterState","currentUrlTree","currentRawUrl","extractedUrl","rawUrl","targetSnapshot","currentRouterState","targetRouterState","guardsResult","overallTransitionState","cancelNavigationTransition","initialUrl","targetBrowserUrl","browserUrl","previousNavigation","urlTransition","navigated","isUpdatingInternalState","isUpdatedBrowserUrl","onSameUrlNavigation","serializer","recognize$1","finalUrl","routesRecognized","navStart","skipLocationChange","replaceUrl","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivateObservables","closestInjector","isCanDeactivate","isBoolean","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivateObservables","isCanActivate","guardsEnd","resolveStart","dataResolved","resolveData","routesWithResolversToRun","routesNeedingDataUpdates","newRoute","routesProcessed","runResolve","resolveNode","getResolver","resolvedData","resolveEnd","loadComponents","loadedComponent","createRouterState","isRedirectingNavigationCancelingError","navigationError","navigationErrorHandlerResult","ee","resolveNavigationPromiseOnError","navCancel","currentBrowserUrl","isBrowserTriggeredNavigation","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ɵDefaultRouteReuseStrategy_BaseFactory","StateManager","HistoryStateManager","canceledNavigationResolution","urlUpdateStrategy","getCurrentUrlTree","rawUrlTree","getRawUrlTree","currentPageId","lastSuccessfulId","browserPageId","ɵrouterPageId","getRouterState","stateMemento","createStateMemento","registerNonRouterCurrentEntryChangeListener","handleRouterEvent","setBrowserUrl","restoreHistory","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","ɵHistoryStateManager_BaseFactory","NavigationResult","COMPLETE","FAILED","REDIRECTING","afterNextNavigation","exactMatchOptions","subsetMatchOptions","stateManager","disposed","nonRouterCurrentEntryChangeSubscription","ɵConsole","navigationTransitions","componentInputBindingEnabled","resetConfig","subscribeToNavigationEvents","eventsSubscription","mergedTree","scheduleNavigation","isPublicRouterEvent","resetRootComponentType","setUpLocationChangeListener","navigateToSyncWithBrowser","stateCopy","parseUrl","serializeUrl","getCurrentNavigation","navigationExtras","preserveFragment","relativeToUrlSegmentGroup","defaultQueryParamsHandling","removeEmptyProps","validateCommands","matchOptions","priorPromise","RouterLink","tabIndexAttribute","onChanges","updateHref","setTabIndexIfNotOnNativeEl","newTabIndex","applyAttributeValue","routerLinkInput","routerLink","commandsOrUrlTree","RouterLinkActive","links","routerEventsSubscription","linkInputChangesSubscription","_isActive","routerLinkActiveOptions","ariaCurrentWhenActive","isActiveChange","subscribeToEachLinkOnChanges","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","RouterPreloader","preloadingStrategy","setUpPreloading","preload","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","scrollEventsSubscription","lastId","lastSource","restoredId","anchorScrolling","createScrollEvents","consumeScrollEvents","scheduleScrollEvent","routerFeature","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","withViewTransitions","skipInitialTransition","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","provideForRootGuard","useHash","scrollOffset","provideInitialNavigation","bindToComponentInputs","enableViewTransitions","ROUTER_INITIALIZER","locationInitialized","Slot","cacheInfoMap","getCacheInfo","rv","attachCache","caches","oldListeners","onNextChange","PROTOCOL_ERRORS_SYMBOL","graphQLResultHasProtocolErrors","isApolloError","ApolloError","protocolErrors","clientErrors","extraInfo","__spreadArray","generateErrorMessage","passthrough","toLink","isTerminating","ret","leftLink","rightLink","createOperation","starting","transformOperation","transformedOperation","getOperationName","validateOperation","OPERATION_FIELDS","firstLink","nextLink","setOnError","scheduledCleanup","clean","AutoCleanedWeakCache","AutoCleanedStrongCache","StrongCache","globalCaches","registerGlobalCache","getSize","getApolloClientMemoryInternals","_getApolloClientMemoryInternals","limits","sizes","linkInfo","queryManager","getDocumentInfo","transformCache","documentTransforms","transformInfo","documentTransform","_getInMemoryCacheMemoryInternals","_getApolloCacheMemoryInternals","addTypenameDocumentTransform","inMemoryCache","getWrapperInformation","fragmentRegistry","findFragmentSpreads","fragmentQueryDocuments","isWrapper","isDefined","recurseTransformInfo","performWork","cacheSizeSymbol","for","maybe","product","HermesInternal","canUseSymbol","canUseAsyncIteratorSymbol","usingJSDOM","sortingMap","stableObjectReplacer","proto","everyKeyInOrder","unsortedKey","sortedKey","sortedObject_1","cloneDeepHelper","copy_1","copy_2","objects","prefixCounts","makeUniqueId","mergeDeep","defaultReconciler","reconciler","isObject","pastCopies","targetValue","shallowCopyForMerge","space","undefId","__WEBPACK_DEFAULT_EXPORT__","genericMessage","InvariantError","framesToPop","verbosityLevels","verbosityLevel","wrapConsoleMethod","arg0","getHandledErrorMsg","getFallbackErrorMsg","originalInvariant","optionalParams","messageArgs","thunk","resultCache","getCacheKey","cached","stableCacheKeys_1","cacheKeys","checkDocument","transformedDocument","otherTransform","getInclusionDirectives","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","evaledValue","nameSet","uniqueCount","visit","Directive","BREAK","hasClientExports","actualFragmentName","symTable","queryDef","getFragmentDefinition","fragmentDef","queryDoc","defaultValues","valueToObjectRepresentation","printCache","origPrint","isDocumentNode","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","directivesObj","KNOWN_DIRECTIVES","storeKeyNameStringify","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","setStringify","argObj_1","fragments_1","isInlineFragment","TYPENAME_FIELD","nullIfDocIsEmpty","makeInUseGetterFunction","inUse","fragmentSpreads","removeDirectivesFromDocument","getInUseByOperationName","getInUseByFragmentName","getInUse","operationCount","directiveMatcher","getDirectiveMatcher","configs","tests","testConfig","shouldRemoveField","nodeDirectives","originalFragmentDefsByPath","firstVisitMadeChanges","fieldOrInlineFragmentVisitor","docWithoutDirectiveSubtrees","Field","InlineFragment","VariableDefinition","Variable","_key","_path","FragmentSpread","FragmentDefinition","leave","populateTransitiveVars","transitiveVars","childFragmentName","allFragmentNamesUsed","enterVisitor","fragmentWillBeRemoved","OperationDefinition","usedVariableNames_1","varDef","SelectionSet","buildQueryFromSelectionSet","modifiedDoc","removeClientSetsFromDocument","ɵNG_PIPE_DEF","DESTROY","DECORATOR_APPLIED","getSymbol","destroyMethodName","createSubjectOnTheInstance","completeSubjectOnTheInstance","decorateNgOnDestroy","arrayName","unsubscribeIfPropertyIsArrayLike","checkProperties","blackList","decorateProviderDirectiveOrComponent","decoratePipe","markAsDecorated","CheckerHasBeenSet","NG_DEV_MODE","overrideNonDirectiveInstanceMethod","originalDestroy","ensureClassIsDecorated","destroy$","setupSubjectUnsubscribedChecker","isAngularInTestMode","lContext","ɵgetLContext","cleanupHasBeenExecuted$","createMessage","getTinymce","tinymce","Events","onBeforePaste","onCompositionEnd","onCompositionStart","onCompositionUpdate","onContextMenu","onCopy","onCut","onDblclick","onDrag","onDragDrop","onDragEnd","onDragGesture","onDragOver","onDrop","onFocus","onFocusIn","onFocusOut","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onActivate","onAddUndo","onBeforeAddUndo","onBeforeExecCommand","onBeforeGetContent","onBeforeRenderUI","onBeforeSetContent","onClearUndos","onDeactivate","onExecCommand","onGetContent","onHide","onInit","onInput","onInitNgModel","onLoadContent","onNodeChange","onPostProcess","onPostRender","onPreInit","onPreProcess","onProgressState","onRedo","onResizeEditor","onSaveContent","onSetAttrib","onObjectResizeStart","onObjectResized","onObjectSelected","onSetContent","onShow","onUndo","onVisualAid","validEvents","listenTinyMCEEvent","parseStringProperty","unique","isTextarea","normalizePluginArray","mergePlugins","initPlugins","inputPlugins","isNullOrUndefined","ScriptLoader","params$","scriptTag","referrerPolicy","reinitialize","EDITOR_COMPONENT_VALUE_ACCESSOR","EditorComponent","cdRef","tinymceScriptSrc","cloudChannel","apiKey","licenseKey","outputFormat","modelEvents","allowedEvents","ignoreEvents","_editor","setMode","onTouchedCallback","onChangeCallback","setContent","uuid","initialise","getScriptSrc","existingElement","finalInit","license_key","initEditor","bindHandlers","ignoredEvents","getValidEvents","eventEmitter","isObserved","emitOnChange","getContent","defaultDispose","newest","oldest","getNode","_WeakRef","WeakRef","deref","_WeakMap","_FinalizationRegistry","FinalizationRegistry","unfinalizedNodes","finalizationScheduled","keyRef","deleteNode","scheduleFinalization","fnToStr","previousComparisons","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","aIterator","aKey","aValue","byteLength","aCode","nativeCodeSuffix","isDefinedKey","bSet","defaultMakeData","weakness","makeData","getChildTrie","peekArray","mapFor","removeArray","weak","strong","isObjRef","queueScheduler","QueueScheduler","QueueAction","NetworkStatus","setVariables","fetchMore","poll","isNetworkRequestInFlight","networkStatus","serializeFetchParameter","serialized","parseError","readerIterator","responseIterator","isNodeResponse","isAsyncIterableIterator","isReadableStream","isStreamableBlob","arrayBuffer","promiseIterator","isNodeReadableStream","nodeStreamIterator","waiting","onData","shiftedArr","pair","onEnd","getNext","throwServerError","isExecutionPatchIncrementalResult","isApolloPayloadResult","mergeIncrementalData","prevResult","mergedData","incremental","parent_1","parseHeaders","headerText","headersInit","name_1","parseJsonBody","bodyText","getResult","fallbackHttpConfig","preserveHeaderCase","defaultPrinter","printer","fromError","backupFetch","createHttpLink","linkOptions","preferredFetch","includeUnusedVariables","requestOptions","fetcher","checkFetcher","linkConfig","fetchOptions","chosenURI","fallbackURI","selectURI","clientAwarenessHeaders","contextHeaders","contextConfig","transformedQuery","controller","selectHttpOptionsAndBodyInternal","removeDuplicateHeaders","normalizedHeaders_1","headerData","originalName","normalizedHeaders","filterOperationVariables","unusedNames","definitionIsSubscription","hasDefer","acceptHeader","rewriteURIForGET","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","currentFetch","observerNext","ctype","readMultipartBody","boundaryVal","boundary","running","searchFrom","bi","contentType_1","__generator","sent","hasNext","parseAndCheckHttpResponse","asyncMap","catchFn","promiseQueue","makeCallback","examiner","both","graphQLResultHasError","getGraphQLErrorsFromResult","incrementalResult","iterateObserversSafely","observersWithMethod","fixObservableSubclass","subclass","species","isPromiseLike","Concast","addObserver","removeObserver","nextResultListeners","deliverLastMessage","nextOrError","beforeNext","called","equalByQuery","aData","aRest","bData","bRest","equalBySelectionSet","aResult","bResult","seenSelections","selectionHasNonreactiveDirective","resultKey","aResultChild","bResultChild","childSelectionSet","aChildIsArray","bChildIsArray","length_1","directiveIsNonreactive","ObservableQuery","queryInfo","subObserver","_observer","defaultSubscriptionObserverErrorCallback","reobserve","tearDownQuery","waitForOwnResult","skipCacheDataFor","isTornDown","defaultFetchPolicy","_f","initialFetchPolicy","queryId","generateQueryId","opDef","queryName","lastQuery","removeQuery","resetDiff","getCurrentResult","saveAsLastResult","lastResult","getLastResult","hasForcedResolvers","updateWatch","getDiff","partial","partialRefetch","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","newResult","hasNonreactiveDirective","getLast","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","reobserveOptions","pollInterval","resetLastWrite","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","notifyOnNetworkStatusChange","updatedQuerySet","fetchQuery","fetchMoreResult","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","setOptions","silentSetOptions","mergedOptions","broadcastQueries","startPolling","updatePolling","stopPolling","applyNextFetchPolicy","nextFetchPolicy","newNetworkStatus","setObservableQuery","fetchConcastWithInfo","ssrMode","pollingInfo","maybeFetch","skipPollAttempt","reobserveAsConcast","useDisposableConcast","oldVariables","oldFetchPolicy","finishWaitingForOwnResult","concast","reportResult","fromLink","resubscribeAfterError","lastError","isDifferent","errorResult","hasObservers","stopQuery","obsQuery","currentFetchPolicy","isSelectionNode","LocalState","resolvers","fragmentMatcher","selectionsToResolveCache","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","addExportedVariables","document_1","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","rootValue_1","rootValue","mainDefinition","selectionsToResolve","definitionOperation","defaultOperationType","execContext","collectSelectionsToResolve","resolveSelectionSet","isClientFieldDescendant","resultsToMerge","resolveField","fieldResult","fragmentResult","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","isClientField","resolveSubSelectedArray","isSingleASTNode","collectByDefinition","definitionNode","matches_1","__","___","spread","fragmentSelections","destructiveMethodCounts","wrapDestructiveCacheMethod","cancelNotifyTimeout","notifyTimeout","QueryInfo","lastRequestId","stopped","observableQuery","getDiffOptions","oq","updateLastDiff","setDiff","oldDiff","oqListener","shouldNotify","watchOptions","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","shouldWriteResult","errorPolicy","diffOptions","markReady","markError","ignoreErrors","writeWithErrors","IGNORE","QueryManager","queryDeduplication","onBroadcast","localState","defaultContext","fetchCancelFns","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","defaultDocumentTransform","mutationStore","stopQueryNoBroadcast","cancelPendingFetches","mutationId","mutationStoreValue","isOptimistic","optimisticResponse","updateQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","_g","_h","keepRootFields","_j","generateMutationId","getVariables","markMutationOptimistic","getObservableFromLink","storeResult","markMutationResult","cacheWrites","skipCache","asQuery","updateQueries_1","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","isFinalResult","isExecutionPatchResult","isExecutionPatchInitialResult","include","getQueryStore","cacheEntry","defaultVars","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","getQuery","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","hasErrors","hasProtocolErrors","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","forceFetch","printedServerQuery_1","varJson_1","getResultsFromLink","requestId","linkDocument","aqr","containsDataFromLink","normalized","fromVariables","sourcesWithInfo","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resultsFromLink","newContext","mergeOptions","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","disableNetworkFetches","devToolsHookCb","dataWithOptimisticResults","windowWithDevTools","devtoolsSymbol","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","ua","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","promiseFn","ZoneScheduler","fixObservable","wrapWithZone","QueryRef","wrapped","useInitialLoading","currentResult","APOLLO_FLAGS","APOLLO_NAMED_OPTIONS","ApolloBase","useMutationLoading","ensureClient","watchFragment","extra","useZone","checkInstance","apolloOptions","apolloNamedOptions","createDefault","isNamed","createNamed","use","removeClient","gql$1","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","seenValues","formatObjectValue","previouslySeenValues","customInspectFn","getCustomFn","nodejsCustomInspectSymbol","customValue","formatArray","formatObject","getObjectTag","defineInspect","classObject","toJSON","_proto2","isNode","maybeNode","rawString","commonIndent","getBlockStringIndentation","_commonIndent","isFirstLine","isEmptyLine","startLine","isBlank","endLine","printBlockString","indentation","preferMultipleLines","isSingleLine","printAsMultipleLines","printDocASTReducer","Name","varDefs","argsLine","Argument","_ref4","_ref5","_ref6","_ref7","IntValue","_ref8","FloatValue","_ref9","StringValue","_ref10","isBlockString","BooleanValue","_ref11","NullValue","EnumValue","_ref12","ListValue","_ref13","ObjectValue","_ref14","ObjectField","_ref15","_ref16","NamedType","_ref17","ListType","_ref18","NonNullType","_ref19","SchemaDefinition","addDescription","_ref20","OperationTypeDefinition","_ref21","ScalarTypeDefinition","_ref22","ObjectTypeDefinition","_ref23","FieldDefinition","_ref24","hasMultilineItems","InputValueDefinition","_ref25","InterfaceTypeDefinition","_ref26","UnionTypeDefinition","_ref27","EnumTypeDefinition","_ref28","EnumValueDefinition","_ref29","InputObjectTypeDefinition","_ref30","DirectiveDefinition","_ref31","SchemaExtension","_ref32","ScalarTypeExtension","_ref33","ObjectTypeExtension","_ref34","InterfaceTypeExtension","_ref35","UnionTypeExtension","_ref36","EnumTypeExtension","_ref37","InputObjectTypeExtension","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","QueryDocumentKeys","visitorKeys","inArray","edits","isLeaving","isEdited","_Object$keys2","editOffset","editKey","editValue","_visitorKeys$node$kin","visitFn","getVisitFn","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","RECAPTCHA_LANGUAGE","RECAPTCHA_BASE_URL","RECAPTCHA_NONCE","RECAPTCHA_V3_SITE_KEY","RECAPTCHA_LOADER_OPTIONS","loadScript","renderMode","onBeforeLoad","onLoaded","ng2recaptchaloaded","grecaptcha","script","onBeforeLoadNonce","nonceValue","newLoadScript","v3SiteKey","RecaptchaLoaderService","toNonNullObservable","RecaptchaComponent","errorMode","render","renderRecaptcha","grecaptchaReset","widget","executeRequested","getResponse","__unsafe_widgetValue","expired","captchaResponseCallback","renderOptions","expired-callback","sitekey","tabindex","RecaptchaCommonModule","RecaptchaModule","RecaptchaValueAccessorDirective","requiresControllerReset","onResolve","RecaptchaFormsModule","breaks","gfm","pedantic","silent","tokenizer","walkTokens","changeDefaults","newDefaults","noopTest","valSource","caret","getRegex","codeRemoveIndent","outputLinkReplace","indentCodeCompensation","beginningSpace","endingHash","startingSpaceChar","endingSpaceChar","nonSpaceChar","newLineCharGlobal","tabCharGlobal","multipleSpaceGlobal","blankLine","doubleBlankLine","blockquoteStart","blockquoteSetextReplace","blockquoteSetextReplace2","listReplaceTabs","listReplaceNesting","listIsTask","listReplaceTask","anyLine","hrefBrackets","tableDelimiter","tableAlignChars","tableRowBlankLine","tableAlignRight","tableAlignCenter","tableAlignLeft","startATag","endATag","startPreScriptTag","endPreScriptTag","startAngleBracket","endAngleBracket","pedanticHrefTitle","unicodeAlphaNumeric","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","unescapeTest","percentDecode","findPipe","splitPipe","slashPipe","carriageReturn","spaceLine","notSpaceStart","endingNewline","listItemRegex","bull","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","hr","bullet","lheadingCore","lheading","lheadingGfm","_paragraph","_blockLabel","_tag","_comment","paragraph","blockNormal","blockquote","fences","gfmTable","blockGfm","blockPedantic","br","_punctuation","_punctuationOrSpace","_notPunctuationOrSpace","punctuation","_punctuationGfmStrongEm","emStrongLDelimCore","emStrongLDelim","emStrongLDelimGfm","emStrongRDelimAstCore","emStrongRDelimAst","emStrongRDelimAstGfm","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","inlineNormal","_backpedal","blockSkip","del","escape","marked_esm_link","reflinkSearch","inlinePedantic","inlineGfm","inlineBreaks","normal","escapeReplacements","getEscapeReplacement","encode","cleanUrl","splitCells","tableRow","cells","escaped","rtrim","invert","suffLen","outputLink","cap","inLink","inlineTokens","_Tokenizer","codeBlockStyle","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","depth","inBlockquote","currentLines","currentRaw","currentText","blockTokens","oldToken","newText","newToken","isordered","ordered","loose","itemRegex","endsWithBlankLine","endEarly","itemContents","nextLine","trimStart","rawLine","nextLineWithoutTabs","ischecked","istask","lastItem","trimEnd","spacers","hasMultipleLineBreaks","aligns","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","emStrong","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","inlineText","_Lexer","inlineQueue","lex","lexInline","lastParagraphClipped","extTokenizer","cutSrc","startBlock","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","startInline","_Renderer","langString","parseInline","listitem","itemBody","checkbox","tablecell","tablerow","em","cleanHref","out","image","_TextRenderer","_Parser","textRenderer","anyToken","renderers","genericToken","textToken","_Hooks","preprocess","markdown","postprocess","processAllTokens","provideLexer","provideParser","markedInstance","Marked","parseMarkdown","Renderer","TextRenderer","Tokenizer","Hooks","tableToken","childTokens","pack","prevRenderer","extLevel","rendererFunc","tokenizerFunc","prevTokenizer","hooksFunc","prevHook","passThroughHooks","packWalktokens","blockType","origOpt","marked","getDefaults","_getDefaults","ClipboardButtonComponent","_buttonClick$","copied$","copiedText$","onCopyToClipboardClick","CLIPBOARD_OPTIONS","PrismPlugin","CommandLine","LineHighlight","LineNumbers","MARKED_EXTENSIONS","MARKED_OPTIONS","MERMAID_OPTIONS","SECURITY_CONTEXT","MarkdownService","DEFAULT_MARKED_OPTIONS","clipboardOptions","mermaidOptions","securityContext","DEFAULT_KATEX_OPTIONS","delimiters","DEFAULT_MERMAID_OPTIONS","startOnLoad","DEFAULT_CLIPBOARD_OPTIONS","buttonComponent","DEFAULT_PARSE_OPTIONS","decodeHtml","emoji","mermaid","markedOptions","disableSanitizer","DEFAULT_RENDER_OPTIONS","katex","katexOptions","_reload$","parseOptions","extendsRendererForExtensions","extendsRendererForMermaid","trimIndentation","decoded","emojified","parseEmoji","parseMarked","renderKatex","renderMermaid","renderClipboard","highlight","getSource","handleExtension","Prism","highlightAllUnder","noLanguageElements","extendedRenderer","ɵNgxMarkdownRendererExtendedForExtensions","ɵNgxMarkdownRendererExtendedForMermaid","defaultCode","urlProtocolIndex","urlWithoutProtocol","lastSlashIndex","lastUrlSegment","lastDotIndex","joypixels","shortnameToUnicode","renderMathInElement","ClipboardJS","buttonTemplate","preElements","preElement","preWrapperElement","toolbarWrapperElement","embeddedViewRef","clipboardInstance","insertAdjacentElement","onmouseenter","onmouseleave","mermaidElements","indentStart","lineIdentStart","MarkdownComponent","_disableSanitizer","_inline","_emoji","_katex","_mermaid","lineHighlight","_lineHighlight","lineNumbers","_lineNumbers","commandLine","_commandLine","markdownService","loadContent","handleSrc","handleData","handleTransclusion","parsedOptions","getClipboardOptions","handlePlugins","clipboardButtonComponent","clipboardButtonTemplate","setPluginClass","setPluginOptions","dataFilterOutput","filterOutput","dataHost","dataPrompt","prompt","dataOutput","dataUser","dataLine","dataLineOffset","lineOffset","dataStart","attributeValue","toLispCase","upperChars","provideMarkdown","markdownModuleConfig","getMarkedExtensionProvider","markedExtensions","markedExtension","isTypedProvider","_papa","setLocalChunkSize","setRemoteChunkSize","setDefaultDelimiter","badDelimiters","recordSeparator","unitSeparator","workersSupported","currentContext","MISSING_VALUE","idCounter","globalKey","globalHost","slots","saved","noContext","parentEntrySlot","arrayFromSet","maybeUnsubscribe","entryOrDep","emptySetPool","assert","optionalMessage","valueIs","valueGet","valueCopy","Entry","childValues","dirtyChildren","recomputing","mightBeDirty","rememberParent","recompute","reallyRecompute","forgetChildren","recomputeNewValue","maybeSubscribe","setClean","reportClean","reportDirty","eachParent","forgetChild","dependOn","forgetDeps","reportDirtyChild","reportCleanChild","normalizeResult","oldValueCopy","parentCount","parentWasClean","childValue","removeDirtyChild","dc","EntryMethods","depsByKey","entryMethodName","defaultKeyTrie","defaultMakeCacheKey","originalFunction","cacheOption","dirtyKey","peekKey","forgetKey","_arrayLikeToArray","arr2","hasSymbols","hasSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","hostReportError","cleanupSubscription","_cleanup","closeSubscription","notifySubscription","onNotify","flushSubscription","subscriptionObserver","SubscriptionObserver","_subscriber","_proto3","_this3","_this4","_this5","_len","startNext","_this6","outer","inner","completeIfDone","_step","_iterator","_createForOfIteratorHelperLoose","allowArrayLike","it","_unsupportedIterableToArray","_len2","_key2","asyncGeneratorStep","_throw","extendStatics","propertyIsEnumerable","decorators","decorate","paramIndex","__metadata","metadataKey","metadataValue","_arguments","generator","fulfilled","rejected","throw","adopt","trys","ops","Iterator","verb","ar","AsyncIterator","awaitReturn","fulfill","settle","__values","SuppressedError"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./apps/certmetrics-candidate-portal/src/environments/environment.beta.ts","./node_modules/@angular/animations/fesm2022/browser.mjs","./node_modules/@angular/platform-browser/fesm2022/animations.mjs","./node_modules/@apollo/client/cache/core/cache.js","./node_modules/@apollo/client/cache/core/types/common.js","./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","./node_modules/@apollo/client/cache/inmemory/helpers.js","./node_modules/@apollo/client/cache/inmemory/entityStore.js","./node_modules/@apollo/client/cache/inmemory/object-canon.js","./node_modules/@apollo/client/cache/inmemory/readFromStore.js","./node_modules/@apollo/client/cache/inmemory/key-extractor.js","./node_modules/@apollo/client/cache/inmemory/policies.js","./node_modules/@apollo/client/cache/inmemory/writeToStore.js","./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","./node_modules/@apollo/client/invariantErrorCodes.js","./node_modules/@apollo/client/dev/loadErrorMessageHandler.js","./node_modules/@apollo/client/link/core/concat.js","./node_modules/@apollo/client/link/error/index.js","./node_modules/@apollo/client/link/batch/batching.js","./node_modules/@apollo/client/link/batch/batchLink.js","./node_modules/apollo-angular/fesm2022/ngApolloLinkHttp.mjs","./libs/graphql/src/lib/graphql.module.ts","./apps/certmetrics-candidate-portal/src/app/app-routing.module.ts","./libs/ui/src/lib/directives/ats-overlay-container.directive.ts","./libs/shared/ui/src/components/rtl-support/rtl-support.component.ts","./apps/certmetrics-candidate-portal/src/app/app.component.ts","./apps/certmetrics-candidate-portal/src/app/app.component.html","./apps/certmetrics-candidate-portal/src/app/app.module.ts","./node_modules/@apollo/client/dev/loadErrorMessages.js","./node_modules/@apollo/client/dev/setErrorMessageHandler.js","./apps/certmetrics-candidate-portal/src/main.ts","./libs/api/certmetrics/src/lib/enums/ce-progress-status.enum.ts","./libs/api/certmetrics/src/lib/enums/portal-type.enum.ts","./libs/api/certmetrics/src/lib/graphql.ts","./libs/api/certmetrics/src/lib/utilities/candidate-fulfillments.utility.ts","./libs/cm/core/src/lib/apollo-cache-config.ts","./libs/cm/core/src/lib/classes/cm-viewport-scroller.ts","./libs/cm/core/src/lib/classes/hidden-form-post.class.ts","./libs/cm/core/src/lib/data/cm-split-pascal-exceptions.ts","./libs/cm/core/src/lib/core.module.ts","./libs/cm/core/src/lib/initializers/form-error-focus.initializer.ts","./libs/cm/core/src/lib/data/error-mappings.ts","./libs/cm/core/src/lib/guards/auth-redirect.guard.ts","./libs/cm/core/src/lib/guards/auth.guard.ts","./libs/cm/core/src/lib/guards/crcat-type.guard.ts","./libs/cm/core/src/lib/guards/creq-type.guard.ts","./libs/cm/core/src/lib/guards/feature.guard.ts","./libs/cm/core/src/lib/guards/intent.guard.ts","./libs/cm/core/src/lib/guards/localization.guard.ts","./libs/cm/core/src/lib/guards/public-features.guard.ts","./libs/cm/core/src/lib/guards/unauthenticated.guard.ts","./libs/cm/core/src/lib/guards/unsaved-changes.guard.ts","./libs/cm/core/src/lib/interceptors/auth-token.interceptor.ts","./libs/cm/core/src/lib/interceptors/loading.interceptor.ts","./libs/cm/core/src/lib/interceptors/logging.interceptor.ts","./libs/cm/core/src/lib/models/address-type.enum.ts","./libs/cm/core/src/lib/models/app-user-type.enum.ts","./libs/cm/core/src/lib/models/boolean-pipe-localizations.ts","./libs/cm/core/src/lib/data/error-ignore-list.ts","./libs/cm/core/src/lib/models/intercept-headers.ts","./libs/cm/core/src/lib/models/error-handler.class.ts","./libs/cm/core/src/lib/models/guard.ts","./libs/cm/core/src/lib/models/ingress-type.enum.ts","./libs/cm/core/src/lib/models/route-guard.abstract.ts","./libs/cm/core/src/lib/models/sso.enum.ts","./libs/cm/core/src/lib/models/user-service.class.ts","./libs/cm/core/src/lib/pipes/cm-boolean.pipe.ts","./libs/cm/core/src/lib/pipes/cm-localize.pipe.ts","./libs/cm/core/src/lib/services/auth.service.ts","./node_modules/rxjs/dist/esm/internal/operators/retry.js","./libs/cm/core/src/lib/services/cm-form-error.service.ts","./libs/cm/core/src/lib/services/cookie-policy.service.ts","./libs/cm/core/src/lib/services/features.service.ts","./libs/cm/core/src/lib/services/missing-localization.service.ts","./libs/cm/core/src/lib/services/routing-error.service.ts","./libs/cm/core/src/lib/services/sso.service.ts","./libs/cm/core/src/lib/services/theme.service.ts","./libs/cm/core/src/lib/services/localization.service.ts","./libs/cm/core/src/lib/services/settings.service.ts","./libs/cm/core/src/lib/services/timeout.service.ts","./libs/cm/core/src/lib/tokens/core-config.token.ts","./libs/cm/core/src/lib/tokens/loc-portal-type.token.ts","./libs/cm/navigation/src/lib/navigation.service.ts","./libs/cm/ui/src/lib/components/cm-continue-modal/cm-continue-modal.component.ts","./libs/cm/ui/src/lib/components/cm-continue-modal/cm-continue-modal.component.html","./libs/cm/ui/src/lib/components/cm-cookie/cookie-modal.component.ts","./libs/cm/ui/src/lib/components/cm-cookie/cookie-modal.component.html","./libs/cm/ui/src/lib/components/cm-creq-upload/points-message-display/points-message-display.component.html","./libs/cm/ui/src/lib/components/cm-creq-upload/points-message-display/points-message-display.component.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/selection-list/selection-list.component.html","./libs/cm/ui/src/lib/components/cm-creq-upload/selection-list/selection-list.component.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/upload-confirmation/upload-confirmation.component.html","./libs/cm/ui/src/lib/components/cm-creq-upload/upload-confirmation/upload-confirmation.component.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/upload-form/upload-form.component.html","./libs/cm/ui/src/lib/components/cm-creq-upload/upload-form/upload-form.component.ts","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilKeyChanged.js","./libs/cm/ui/src/lib/components/cm-delete-confirmation/cm-delete-confirmation.component.html","./libs/cm/ui/src/lib/components/cm-delete-confirmation/cm-delete-confirmation.component.ts","./libs/cm/ui/src/lib/components/cm-inline-alert/inline-alert.component.html","./libs/cm/ui/src/lib/components/cm-inline-alert/inline-alert.component.ts","./libs/cm/ui/src/lib/components/cm-localize-modal/localize-modal.component.html","./libs/cm/ui/src/lib/components/cm-localize-modal/localize-modal.component.ts","./node_modules/rxjs/dist/esm/internal/operators/pluck.js","./libs/cm/ui/src/lib/components/cm-multiselect-modal/cm-multiselect-modal.component.html","./libs/cm/ui/src/lib/components/cm-multiselect-modal/cm-multiselect-modal.component.ts","./libs/cm/ui/src/lib/components/cm-reload-confirmation/cm-reload-confirmation.component.ts","./libs/cm/ui/src/lib/components/cm-reload-confirmation/cm-reload-confirmation.component.html","./libs/cm/ui/src/lib/components/cm-search/cm-search.component.html","./libs/cm/ui/src/lib/components/cm-search/cm-search.component.ts","./libs/cm/ui/src/lib/components/cm-supported-culture-menu/cm-supported-culture-menu.component.ts","./libs/cm/ui/src/lib/components/cm-table/cm-table-row/cm-table-row.component.ts","./libs/cm/ui/src/lib/components/cm-table/cm-table-row/cm-table-row.component.html","./libs/cm/ui/src/lib/services/table.service.ts","./libs/cm/ui/src/lib/components/cm-table/cm-table.component.html","./libs/cm/ui/src/lib/components/cm-table/cm-table.component.ts","./libs/cm/ui/src/lib/components/cm-ui-bug/ui-bug.component.ts","./libs/cm/ui/src/lib/components/cm-ui-bug/ui-bug.component.html","./libs/cm/ui/src/lib/components/cm-unsaved-confirmation/cm-unsaved-confirmation.component.ts","./libs/cm/ui/src/lib/components/cm-unsaved-confirmation/cm-unsaved-confirmation.component.html","./libs/cm/ui/src/lib/pipes/time.pipe.ts","./libs/cm/ui/src/lib/pipes/culture.pipe.ts","./libs/cm/ui/src/lib/pipes/secure-image.pipe.ts","./libs/cm/ui/src/lib/services/cm-reload.service.ts","./libs/cm/ui/src/lib/services/page-header.service.ts","./libs/cm/ui/src/lib/services/page-title.service.ts","./libs/cm/ui/src/lib/services/route.service.ts","./libs/cm/ui/src/lib/cm-ui.module.ts","./libs/cm/ui/src/lib/services/cm-ui.service.ts","./libs/cm/ui/src/lib/services/form.service.ts","./libs/cm/ui/src/lib/validators/error-state-matcher/cm-error-state-matcher.class.ts","./libs/cm/ui/src/lib/components/cm-address-form/cm-address-form.component.html","./libs/cm/ui/src/lib/components/cm-address-form/cm-address-form.component.ts","./libs/cm/ui/src/lib/components/cm-announcement-detail/cm-announcement-detail.component.html","./libs/cm/ui/src/lib/components/cm-announcement-detail/cm-announcement-detail.component.ts","./libs/cm/ui/src/lib/components/cm-cert-logic-tree/cm-cert-logic-tree.component.html","./libs/cm/ui/src/lib/components/cm-cert-logic-tree/cm-cert-logic-tree.component.ts","./libs/cm/ui/src/lib/components/cm-cert-logic-tree/cm-cert-logic-view.component.html","./libs/cm/ui/src/lib/components/cm-cert-logic-tree/cm-cert-logic-view.component.ts","./libs/cm/ui/src/lib/components/cm-context-overlay/context-overlay.component.html","./libs/cm/ui/src/lib/components/cm-context-overlay/context-overlay.component.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/creq-upload.component.html","./libs/cm/ui/src/lib/components/cm-creq-upload/creq-upload.component.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/creq-upload.locs.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/creq-upload.service.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/default-documentation-validators.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/points-message-display/points-message-display.locs.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/selection-form/selection-form.component.html","./libs/cm/ui/src/lib/components/cm-creq-upload/selection-form/selection-form.component.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/selection-form/selection-form.locs.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/upload-confirmation/upload-confirmation.locs.ts","./libs/cm/ui/src/lib/components/cm-creq-upload/upload-form/upload-form.locs.ts","./libs/cm/ui/src/lib/components/cm-dash/cm-dash.component.ts","./libs/cm/ui/src/lib/components/cm-dash/cm-dash.component.html","./libs/cm/ui/src/lib/components/cm-file-upload/cm-file-upload.component.html","./libs/cm/ui/src/lib/components/cm-file-upload/cm-file-upload.component.ts","./libs/cm/ui/src/lib/components/cm-key-val/key-val-list.component.ts","./libs/cm/ui/src/lib/components/cm-key-val/key-val-list.component.html","./libs/cm/ui/src/lib/components/cm-key-val/key-val.component.html","./libs/cm/ui/src/lib/components/cm-key-val/key-val.component.ts","./libs/cm/ui/src/lib/components/cm-loader/cm-loader.component.ts","./libs/cm/ui/src/lib/components/cm-loader/cm-loader.component.html","./libs/cm/ui/src/lib/components/cm-loading-dialog/cm-loading-dialog.component.ts","./libs/cm/ui/src/lib/components/cm-loading-dialog/cm-loading-dialog.component.html","./libs/cm/ui/src/lib/components/cm-loading-icon/cm-loading-icon.component.html","./libs/cm/ui/src/lib/components/cm-loading-icon/cm-loading-icon.component.ts","./libs/cm/ui/src/lib/components/cm-localize-modal/localize-modal.locs.ts","./libs/cm/ui/src/lib/components/cm-multiselect/cm-multiselect.component.html","./libs/cm/ui/src/lib/components/cm-multiselect/cm-multiselect.component.ts","./libs/cm/ui/src/lib/components/cm-not-found/cm-not-found.component.ts","./libs/cm/ui/src/lib/components/cm-not-found/cm-not-found.component.html","./libs/cm/ui/src/lib/components/cm-notifications/cm-notifications.component.ts","./libs/cm/ui/src/lib/components/cm-notifications/sm-snackbar-a11y/cm-snackbar-a11y.component.html","./libs/cm/ui/src/lib/components/cm-notifications/sm-snackbar-a11y/cm-snackbar-a11y.component.ts","./libs/cm/ui/src/lib/components/cm-progress-indicator/cm-progress-indicator.component.ts","./libs/cm/ui/src/lib/components/cm-progress-indicator/cm-progress-indicator.component.html","./libs/cm/ui/src/lib/components/cm-select-supported-language/cm-select-supported-lang.component.html","./libs/cm/ui/src/lib/components/cm-select-supported-language/cm-select-supported-lang.component.ts","./libs/cm/ui/src/lib/components/cm-timeout/cm-timeout-modal/cm-timeout-modal.component.ts","./libs/cm/ui/src/lib/components/cm-timeout/cm-timeout-modal/cm-timeout-modal.component.html","./libs/cm/ui/src/lib/components/cm-timeout/cm-timeout.component.ts","./libs/cm/ui/src/lib/directives/cm-context-overlay.directive.ts","./libs/cm/ui/src/lib/directives/cm-current-link.directive.ts","./libs/cm/ui/src/lib/directives/cm-data-label.directive.ts","./libs/cm/ui/src/lib/directives/cm-file-download.directive.ts","./libs/cm/ui/src/lib/directives/cm-inner-html-spacing.directive.ts","./libs/cm/ui/src/lib/directives/cm-internalize.directive.ts","./libs/cm/ui/src/lib/directives/cm-link-button.directive.ts","./libs/cm/ui/src/lib/directives/cm-link-description.directive.ts","./libs/cm/ui/src/lib/directives/cm-localize.directive.ts","./libs/cm/ui/src/lib/directives/cm-log-form.directive.ts","./libs/cm/ui/src/lib/directives/cm-mark-asterisk.directive.ts","./libs/cm/ui/src/lib/directives/cm-sso.directive.ts","./libs/cm/ui/src/lib/directives/cm-vertical-scroller.directive.ts","./libs/cm/ui/src/lib/models/cm-ui-bug-type.enum.ts","./libs/cm/ui/src/lib/models/cert-logic.gql.ts","./libs/cm/ui/src/lib/models/cm-image-not-found.enum.ts","./libs/cm/ui/src/lib/models/cm-modal.ts","./libs/cm/ui/src/lib/models/cm-option.interface.ts","./libs/cm/ui/src/lib/models/cm-pager.class.ts","./libs/cm/ui/src/lib/models/cm-table-tools.enum.ts","./libs/cm/ui/src/lib/pipes/date.pipe.ts","./libs/cm/ui/src/lib/pipes/link-from-root.pipe.ts","./libs/cm/ui/src/lib/pipes/localize-enum.pipe.ts","./libs/cm/ui/src/lib/services/page-history.service.ts","./libs/cm/ui/src/lib/validators/numeric-validator-variants.enum.ts","./libs/cm/ui/src/lib/validators/affiliation-email.validator.ts","./libs/cm/ui/src/lib/validators/array-no-match.validator.ts","./libs/cm/ui/src/lib/validators/combined-strings-length.validator.ts","./libs/cm/ui/src/lib/validators/date-comparitor.validator.ts","./libs/cm/ui/src/lib/validators/email-format.validator.ts","./libs/cm/ui/src/lib/validators/factor-points.validator.ts","./libs/cm/ui/src/lib/validators/files/file-extension.validator.ts","./libs/cm/ui/src/lib/validators/files/files-from-control.function.ts","./libs/cm/ui/src/lib/validators/files/get-file-size.function.ts","./libs/cm/ui/src/lib/validators/files/file-size-total.validator.ts","./libs/cm/ui/src/lib/validators/files/file-size.validator.ts","./libs/cm/ui/src/lib/validators/files/file-type.validator.ts","./libs/cm/ui/src/lib/validators/form/all-or-none.validator.ts","./libs/cm/ui/src/lib/validators/form/at-least-one.validator.ts","./libs/cm/ui/src/lib/validators/form/numeric-order.validator.ts","./libs/cm/ui/src/lib/validators/image-ratio.validator.ts","./libs/cm/ui/src/lib/validators/less-than-equal-to.validator.ts","./libs/cm/ui/src/lib/validators/numeric.validator.ts","./libs/cm/ui/src/lib/validators/password-match.validator.ts","./libs/cm/ui/src/lib/validators/password-name-and-login-exclusions.validator.ts","./libs/cm/ui/src/lib/validators/password-name-and-login-form-exclusions.validator.ts","./libs/cm/ui/src/lib/validators/unique-from.validator.ts","./libs/cm/ui/src/lib/validators/vue/vue-postal-code.validator.ts","./libs/cm/ui/src/lib/validators/validators.ts","./libs/cm/ui/src/lib/validators/mixed-characters.validator.ts","./libs/cm/ui/src/lib/validators/triple-sequential-characters.validator.ts","./libs/cm/ui/src/lib/validators/spaces-only.validator.ts","./libs/cm/ui/src/lib/validators/url.validator.ts","./libs/cm/ui/src/lib/validators/vue/vue-phone-usa-canada.validator.ts","./libs/cm/ui/src/lib/validators/vue/vue-phone-zeros.validator.ts","./libs/cm/ui/src/lib/validators/single-byte.validator.ts","./libs/core/client/src/lib/services/client.service.ts","./libs/core/client/src/lib/models/client.ts","./libs/core/client/src/lib/models/client-initializer.ts","./libs/core/culture/src/lib/models/culture.ts","./libs/core/culture/src/lib/models/culture-initializer.ts","./libs/core/culture/src/lib/services/culture.service.ts","./libs/core/localization/src/data/enums/badge-type.locs.ts","./libs/core/localization/src/data/enums/bcat-grant-type.locs.ts","./libs/core/localization/src/data/enums/benefit-catalog-type.locs.ts","./libs/core/localization/src/data/enums/benefit-status.locs.ts","./libs/core/localization/src/data/enums/cand-restrict-type.locs.ts","./libs/core/localization/src/data/enums/cateid-type.locs.ts","./libs/core/localization/src/data/enums/ccat-extension-type.locs.ts","./libs/core/localization/src/data/enums/ccat-path-type.locs.ts","./libs/core/localization/src/data/enums/cert-catalog-status.locs.ts","./libs/core/localization/src/data/enums/cert-status.locs.ts","./libs/core/localization/src/data/enums/cfc-rule.locs.ts","./libs/core/localization/src/data/enums/ch-type.locs.ts","./libs/core/localization/src/data/enums/cpr-state.locs.ts","./libs/core/localization/src/data/enums/cpr-type.locs.ts","./libs/core/localization/src/data/enums/crcat-type.locs.ts","./libs/core/localization/src/data/enums/creq-review-state.locs.ts","./libs/core/localization/src/data/enums/creq-status.locs.ts","./libs/core/localization/src/data/enums/e-transaction-item-cat-type.locs.ts","./libs/core/localization/src/data/enums/e-transaction-state.locs.ts","./libs/core/localization/src/data/enums/eligible-exam-action-type.locs.ts","./libs/core/localization/src/data/enums/enum-loc-keys.ts","./libs/core/localization/src/data/enums/enum.locs.ts","./libs/core/localization/src/data/enums/ex-auth-state.locs.ts","./libs/core/localization/src/data/enums/exam-grade-label.locs.ts","./libs/core/localization/src/data/enums/exam-state.locs.ts","./libs/core/localization/src/data/enums/fcat-queue-type.locs.ts","./libs/core/localization/src/data/enums/fulfillment-status.locs.ts","./libs/core/localization/src/data/errors/self-merge-errors.locs.ts","./libs/core/localization/src/data/errors.locs.ts","./libs/core/localization/src/data/feature/exams/exams-data.locs.ts","./libs/core/localization/src/data/index.ts","./libs/core/localization/src/data/shared-data.ts","./libs/core/localization/src/data/system.locs.ts","./libs/core/localization/src/data/agreement.loc.ts","./libs/core/localization/src/legacy/index.ts","./libs/core/localization/src/localization.module.ts","./libs/core/localization/src/models/localization.ts","./libs/utility/src/lib/types/self-map-object-keys.ts","./libs/core/localization/src/models/map-loc-keys.fn.ts","./libs/core/localization/src/models/error-maps.ts","./libs/core/localization/src/services/client-localization.query.ts","./libs/core/localization/src/services/localization.mutation.ts","./libs/core/localization/src/services/localization.service.ts","./libs/core/logging/src/lib/log-level.enum.ts","./libs/core/logging/src/lib/logging-config.token.ts","./libs/core/logging/src/lib/logging.module.ts","./libs/core/logging/src/lib/logging.service.ts","./libs/core/routing/src/lib/services/cm-routing.service.ts","./libs/core/routing/src/lib/functions/routing.ts","./libs/core/settings/src/lib/settings-config.token.ts","./libs/core/settings/src/lib/services/settings.service.ts","./libs/core/settings/src/lib/guards/existing-culture.guard.ts","./libs/core/settings/src/lib/guards/language-param.guard.ts","./libs/core/settings/src/lib/mocks/values.mock.ts","./libs/core/settings/src/lib/resolvers/client-match.resolver.ts","./libs/core/storage/src/lib/storage-domain.token.ts","./libs/core/storage/src/lib/storage.module.ts","./libs/core/storage/src/lib/storage.services.ts","./libs/core/system/src/services/cm-events.service.ts","./libs/data/localizations/src/cp/index.ts","./libs/cp/core/src/lib/services/candidate-requirements.service.ts","./libs/cp/core/src/lib/guards/candidate-requirements.guard.ts","./libs/cp/core/src/lib/guards/load-once.guard.ts","./libs/cp/core/src/lib/guards/sso.guard.ts","./libs/cp/core/src/lib/services/cp-user.service.ts","./libs/cp/core/src/lib/cp-core.module.ts","./libs/cp/feature/achievements/src/lib/achievements-meta.ts","./libs/cp/feature/achievements/src/lib/cp-achievements.module.locs.ts","./libs/cp/feature/achievements/src/lib/ecert/achievement-ecert.locs.ts","./libs/cp/feature/achievements/src/lib/logos/logos.component.locs.ts","./libs/cp/feature/benefits/src/lib/benefits.module.locs.ts","./libs/cp/feature/benefits/src/lib/components/benefit-claim/benefit-claim.locs.ts","./libs/cp/feature/benefits/src/lib/components/benefit-detail/benefit-detail.locs.ts","./libs/cp/feature/benefits/src/lib/components/benefit-info/benefit-info.locs.ts","./libs/cp/feature/benefits/src/lib/components/benefits-catalog/benefits-catalog.locs.ts","./libs/cp/feature/benefits/src/lib/components/create-lineup/create-line-up.locs.ts","./libs/cp/feature/benefits/src/lib/components/lineup-modal/lineup-modal.locs.ts","./libs/cp/feature/catalogs/src/lib/catalogs.module.locs.ts","./libs/cp/feature/catalogs/src/lib/cert-catalog/cert-catalog.locs.ts","./libs/cp/feature/catalogs/src/lib/exam-catalog/exam-catalog.locs.ts","./libs/cp/feature/certs/src/lib/cert-detail/cert-detail.locs.ts","./libs/cp/feature/certs/src/lib/cert-status/cert-status.locs.ts","./libs/cp/feature/certs/src/lib/certs.module.locs.ts","./libs/cp/feature/certs/src/lib/fulfillment-history/address-confirmation/address-confirmation.locs.ts","./libs/cp/feature/ecommerce/src/lib/history/components/ecommerce-history/ecommerce-history.locs.ts","./libs/cp/feature/ecommerce/src/lib/storefront/components/storefront/storefront.locs.ts","./libs/cp/feature/history/src/lib/components/creq-data-manager/creq-locs.ts","./libs/cp/feature/history/src/lib/components/exams/exams.locs.ts","./libs/cp/feature/history/src/lib/history.module.locs.ts","./libs/cp/feature/home/src/lib/home.module.locs.ts","./libs/cp/feature/home/src/lib/news-articles/news-articles.locs.ts","./libs/cp/feature/login/src/lib/components/forgot-password/forgot-password.locs.ts","./libs/cp/feature/login/src/lib/components/login/login.locs.ts","./libs/cp/feature/login/src/lib/login.module.locs.ts","./libs/cp/feature/other-achievements/src/lib/components/other-achievement-add/other-achievement-add.locs.ts","./libs/cp/feature/other-achievements/src/lib/components/other-achievement-edit/other-achievement-edit.locs.ts","./libs/cp/feature/other-achievements/src/lib/components/other-achievement-form/other-achievement-form.locs.ts","./libs/cp/feature/other-achievements/src/lib/components/other-achievements/other-achievements.locs.ts","./libs/cp/feature/profile/src/lib/mailing-addresses/cp-profile-address-form.locs.ts","./libs/cp/feature/profile/src/lib/my-information/my-information.locs.ts","./libs/cp/feature/profile/src/lib/profile-routing.module.locs.ts","./libs/cp/feature/profile/src/lib/profile.module.locs.ts","./libs/cp/feature/profile/src/lib/self-merge/self-merge-route.locs.ts","./libs/cp/feature/profile/src/lib/self-merge/self-merge-validate/self-merge-validate.locs.ts","./libs/cp/feature/profile/src/lib/self-merge/self-merge/self-merge.locs.ts","./libs/cp/feature/public/src/lib/components/employee-registration/employee-registration.locs.ts","./libs/cp/feature/public/src/lib/components/first-time-login/first-time-login.locs.ts","./libs/cp/feature/public/src/lib/components/public-badge/public-badge.locs.ts","./libs/cp/feature/public/src/lib/components/self-registration/self-registration.locs.ts","./libs/cp/feature/public/src/lib/components/sso-error/sso-error.locs.ts","./libs/cp/feature/public/src/lib/components/sso-ingress-error/sso-ingress-error.locs.ts","./libs/cp/feature/public/src/lib/public-meta.ts","./libs/cp/feature/public/src/lib/public.module.locs.ts","./libs/cp/feature/schedule/src/lib/modules/exam-scheduling/components/schedule-exam/schedule-exam.locs.ts","./libs/cp/feature/schedule/src/lib/modules/exam-scheduling/exam-scheduling.module.locs.ts","./libs/cp/feature/schedule/src/lib/modules/sso-egress/components/sso-certiverse/sso-certiverse.component.locs.ts","./libs/cp/feature/schedule/src/lib/modules/sso-egress/components/sso-kryterion/sso-kryterion.locs.ts","./libs/cp/feature/schedule/src/lib/modules/sso-egress/components/sso-testwise/sso-testwise.locs.ts","./libs/cp/feature/schedule/src/lib/modules/sso-egress/components/sso-vue/sso-vue.locs.ts","./libs/cp/feature/schedule/src/lib/modules/sso-egress/sso-egress.module.locs.ts","./libs/cp/feature/share/src/lib/badge-detail/badge-detail.locs.ts","./libs/cp/feature/share/src/lib/share.module.locs.ts","./libs/cp/feature/sso/src/lib/components/authorize/authorize.locs.ts","./libs/cp/shared/data-management/src/components/cp-data-empty/cp-data-empty.locs.ts","./libs/cp/shared/data-management/src/components/cp-data-filter/cp-data-filter.locs.ts","./libs/cp/shared/data-management/src/components/cp-data-pagination/cp-data-pagination.locs.ts","./libs/cp/shared/data-management/src/components/cp-data-view-toggle/cp-data-view-toggle.locs.ts","./libs/cp/shared/ui/src/lib/modules/components/banned-landing-page/banned-landing-page.locs.ts","./libs/cp/shared/ui/src/lib/modules/dashboard/components/appointment-card/apppointment-card.locs.ts","./libs/cp/shared/ui/src/lib/modules/dashboard/components/appointments/apppointment.locs.ts","./libs/cp/ui/src/lib/components/latest-agreement-modal/latest-agreement-modal.component.ts","./libs/cp/ui/src/lib/components/latest-agreement-modal/latest-agreement-modal.component.html","./libs/cp/ui/src/lib/components/logout/logout.component.ts","./libs/cp/ui/src/lib/services/page-description.service.ts","./libs/cp/ui/src/lib/services/page-action.service.ts","./libs/cp/ui/src/lib/components/page-description/page-description.component.html","./libs/cp/ui/src/lib/components/page-description/page-description.component.ts","./libs/cp/ui/src/lib/components/view-footer/view-footer.component.ts","./libs/cp/ui/src/lib/components/view-footer/view-footer.component.html","./libs/cp/ui/src/lib/components/view-header/view-header.component.html","./libs/cp/ui/src/lib/components/view-header/view-header.component.ts","./libs/cp/ui/src/lib/models/filter-nav.ts","./libs/cp/ui/src/lib/components/navigation/navigation.component.html","./libs/cp/ui/src/lib/components/navigation/navigation.component.ts","./libs/cp/ui/src/lib/components/view-sidebar/view-sidebar.component.html","./libs/cp/ui/src/lib/components/view-sidebar/view-sidebar.component.ts","./libs/cp/ui/src/lib/components/view/view.component.html","./libs/cp/ui/src/lib/components/view/view.component.ts","./libs/cp/ui/src/lib/services/card-grid.service.ts","./libs/cp/ui/src/lib/components/card-grid/card-grid.component.html","./libs/cp/ui/src/lib/components/card-grid/card-grid.component.ts","./libs/cp/ui/src/lib/cp-ui.module.ts","./libs/cp/ui/src/lib/components/badge-detail-view/badge-detail-view.component.html","./libs/cp/ui/src/lib/components/badge-detail-view/badge-detail-view.component.ts","./libs/cp/ui/src/lib/components/cards/cp-card.component.html","./libs/cp/ui/src/lib/components/cards/cp-card.component.ts","./libs/cp/ui/src/lib/components/cp-announcement/cp-announcement.component.html","./libs/cp/ui/src/lib/components/cp-announcement/cp-announcement.component.ts","./libs/cp/ui/src/lib/components/cp-logo-agreement/cp-logo-agreement.component.ts","./libs/cp/ui/src/lib/components/cp-logo-agreement/cp-logo-agreement.component.html","./libs/cp/ui/src/lib/components/creq-detail/creq-detail.component.html","./libs/cp/ui/src/lib/components/creq-detail/creq-detail.component.ts","./libs/cp/ui/src/lib/components/creq-edit/creq-edit.component.html","./libs/cp/ui/src/lib/components/creq-edit/creq-edit.component.ts","./libs/cp/ui/src/lib/components/divider/divider.component.ts","./libs/cp/ui/src/lib/components/divider/divider.component.html","./libs/cp/ui/src/lib/components/navigation/navigation.locs.ts","./libs/cp/ui/src/lib/components/page-section/cp-page-section-title.component.html","./libs/cp/ui/src/lib/components/page-section/cp-page-section-title.component.ts","./libs/cp/ui/src/lib/components/page-section/cp-page-section.component.html","./libs/cp/ui/src/lib/components/page-section/cp-page-section.component.ts","./libs/cp/ui/src/lib/components/password-confirmation-form/password-confirmation-form.component.html","./libs/cp/ui/src/lib/components/password-confirmation-form/password-confirmation-form.component.ts","./libs/cp/ui/src/lib/components/requirement-forms/cert-agreement/cert-agreement.component.html","./libs/cp/ui/src/lib/components/requirement-forms/cert-agreement/cert-agreement.component.ts","./libs/cp/ui/src/lib/components/requirement-forms/mailing-address/cp-requirement-address-form.locs.ts","./libs/cp/ui/src/lib/components/requirement-forms/mailing-address/mailing-address.component.html","./libs/cp/ui/src/lib/components/requirement-forms/mailing-address/mailing-address.component.ts","./libs/cp/ui/src/lib/components/requirement-forms/name-confirmation/name-confirmation.component.html","./libs/cp/ui/src/lib/components/requirement-forms/name-confirmation/name-confirmation.component.ts","./libs/cp/ui/src/lib/components/requirement-forms/name-confirmation/name-confirmation.locs.ts","./libs/cp/ui/src/lib/components/requirement-forms/personal-info/personal-info-form.component.html","./libs/cp/ui/src/lib/components/requirement-forms/personal-info/personal-info-form.component.ts","./libs/cp/ui/src/lib/components/requirement-forms/personal-info/personal-info-form.locs.ts","./libs/feature/affiliation/src/services/candidate-affiliation.gql.ts","./libs/feature/affiliation/src/services/candidate-affiliation.service.ts","./libs/feature/affiliation/src/components/candidate-affiliation-form.sp-locs.ts","./libs/feature/affiliation/src/components/candidate-affiliation-form.locs.ts","./libs/feature/affiliation/src/components/candidate-affiliation-form.query.ts","./libs/feature/affiliation/src/components/candidate-affiliation-form.component.html","./libs/feature/affiliation/src/components/candidate-affiliation-form.component.ts","./libs/cp/ui/src/lib/components/requirement-forms/profile-affiliations/profile-affiliations.component.ts","./libs/cp/ui/src/lib/components/requirement-forms/profile-affiliations/profile-affiliations.component.html","./libs/cp/ui/src/lib/components/requirement-forms/profile-affiliations/profile-affiliations.locs.ts","./libs/cp/ui/src/lib/components/requirement-forms/profile-settings/profile-settings.component.html","./libs/cp/ui/src/lib/components/requirement-forms/profile-settings/profile-settings.component.ts","./libs/cp/ui/src/lib/components/section/cp-section.component.ts","./libs/cp/ui/src/lib/components/section/cp-section.component.html","./libs/cp/ui/src/lib/components/sponsor-setting-multiselect/sponsor-setting-multiselect.component.html","./libs/cp/ui/src/lib/components/sponsor-setting-multiselect/sponsor-setting-multiselect.component.ts","./libs/cp/ui/src/lib/components/sponsor-setting-single/sponsor-setting-single.component.html","./libs/cp/ui/src/lib/components/sponsor-setting-single/sponsor-setting-single.component.ts","./libs/cp/ui/src/lib/cp-ui-module.locs.ts","./libs/cp/ui/src/lib/directives/subsection.directive.ts","./libs/feature/affiliation/src/components/candidate-affiliation-form.cp-locs.ts","./libs/icons/src/lib/icons.module.ts","./libs/icons/src/lib/icon.component.html","./libs/icons/src/lib/icon.component.ts","./libs/icons/src/lib/icons/add.ts","./libs/icons/src/lib/icons/arrow-down.ts","./libs/icons/src/lib/icons/arrow-left.ts","./libs/icons/src/lib/icons/arrow-right.ts","./libs/icons/src/lib/icons/arrow-up.ts","./libs/icons/src/lib/icons/attachment.ts","./libs/icons/src/lib/icons/audio-listen.ts","./libs/icons/src/lib/icons/back.ts","./libs/icons/src/lib/icons/badge.ts","./libs/icons/src/lib/icons/badge-view.ts","./libs/icons/src/lib/icons/calendar.ts","./libs/icons/src/lib/icons/candidates.ts","./libs/icons/src/lib/icons/certificate.ts","./libs/icons/src/lib/icons/check.ts","./libs/icons/src/lib/icons/circle.ts","./libs/icons/src/lib/icons/circle-check.ts","./libs/icons/src/lib/icons/circle-close.ts","./libs/icons/src/lib/icons/clipboard.ts","./libs/icons/src/lib/icons/close.ts","./libs/icons/src/lib/icons/cog.ts","./libs/icons/src/lib/icons/collapse.ts","./libs/icons/src/lib/icons/csv.ts","./libs/icons/src/lib/icons/dash.ts","./libs/icons/src/lib/icons/database.ts","./libs/icons/src/lib/icons/database-broken.ts","./libs/icons/src/lib/icons/dev.ts","./libs/icons/src/lib/icons/download.ts","./libs/icons/src/lib/icons/email-send.ts","./libs/icons/src/lib/icons/ex.ts","./libs/icons/src/lib/icons/exit.ts","./libs/icons/src/lib/icons/expand.ts","./libs/icons/src/lib/icons/external.ts","./libs/icons/src/lib/icons/facebook.ts","./libs/icons/src/lib/icons/file-info.ts","./libs/icons/src/lib/icons/filter.ts","./libs/icons/src/lib/icons/filter-closed.ts","./libs/icons/src/lib/icons/folder-checked.ts","./libs/icons/src/lib/icons/folder-closed.ts","./libs/icons/src/lib/icons/folder-dash.ts","./libs/icons/src/lib/icons/folder-open.ts","./libs/icons/src/lib/icons/fullscreen-collapse.ts","./libs/icons/src/lib/icons/fullscreen-expand.ts","./libs/icons/src/lib/icons/grid.ts","./libs/icons/src/lib/icons/hamburger.ts","./libs/icons/src/lib/icons/help.ts","./libs/icons/src/lib/icons/home.ts","./libs/icons/src/lib/icons/image-not-found.ts","./libs/icons/src/lib/icons/info.ts","./libs/icons/src/lib/icons/key-lock.ts","./libs/icons/src/lib/icons/link.ts","./libs/icons/src/lib/icons/linked-in.ts","./libs/icons/src/lib/icons/linkedin.ts","./libs/icons/src/lib/icons/logout.ts","./libs/icons/src/lib/icons/look.ts","./libs/icons/src/lib/icons/move.ts","./libs/icons/src/lib/icons/nav-bars.ts","./libs/icons/src/lib/icons/nav-dots.ts","./libs/icons/src/lib/icons/not-available.ts","./libs/icons/src/lib/icons/pdf.ts","./libs/icons/src/lib/icons/pencil.ts","./libs/icons/src/lib/icons/permissions.ts","./libs/icons/src/lib/icons/reload.ts","./libs/icons/src/lib/icons/reports.ts","./libs/icons/src/lib/icons/search.ts","./libs/icons/src/lib/icons/settings.ts","./libs/icons/src/lib/icons/share.ts","./libs/icons/src/lib/icons/small-ex.ts","./libs/icons/src/lib/icons/sort-asc.ts","./libs/icons/src/lib/icons/sort-desc.ts","./libs/icons/src/lib/icons/speech.ts","./libs/icons/src/lib/icons/square.ts","./libs/icons/src/lib/icons/square-check.ts","./libs/icons/src/lib/icons/stage.ts","./libs/icons/src/lib/icons/table.ts","./libs/icons/src/lib/icons/translate.ts","./libs/icons/src/lib/icons/trash.ts","./libs/icons/src/lib/icons/twitter.ts","./libs/icons/src/lib/icons/user-exit.ts","./libs/icons/src/lib/icons/users.ts","./libs/icons/src/lib/icons/view.ts","./libs/icons/src/lib/icons/view-none.ts","./libs/icons/src/lib/icons/warning.ts","./libs/icons/src/lib/icons/zoom-in.ts","./libs/icons/src/lib/icons/zoom-out.ts","./libs/logger/src/lib/log-level.enum.ts","./libs/logger/src/lib/logger.module.ts","./libs/logger/src/lib/logger.service.ts","./libs/notifications/src/lib/notice-type.enum.ts","./libs/notifications/src/lib/notifications.module.ts","./libs/notifications/src/lib/notifications.service.ts","./libs/shared/pages/src/components/access-denied/access-denied.locs.ts","./libs/shared/pages/src/components/not-found/not-found.locs.ts","./libs/shared/pages/src/components/session-expired/session-expired.locs.ts","./libs/shared/pages/src/library.locs.ts","./node_modules/@angular/material/fesm2022/autocomplete.mjs","./libs/shared/ui/src/components/autocomplete/autocomplete.component.html","./libs/shared/ui/src/components/autocomplete/autocomplete.component.ts","./libs/shared/ui/src/directives/mini-button.directive.ts","./libs/shared/ui/src/forms/directives/trim-whitespace.directive.ts","./libs/shared/ui/src/directives/cm-csv-export.directive.ts","./libs/shared/ui/src/pipes/safe-html.pipe.ts","./libs/shared/ui/src/services/ingress.service.ts","./libs/shared/ui/src/utility/cm-date.ts","./libs/shared/ui/src/localization/components/html-localize-form/html-localize-form.locs.ts","./libs/shared/ui/src/localization/components/inlining-localization/inlining-localization.locs.ts","./libs/shared/ui/src/localization/components/html-localize-form/html-localize-form.component.html","./libs/shared/ui/src/localization/components/html-localize-form/html-localize-form.component.ts","./libs/shared/ui/src/localization/components/localization-dialog/localization-dialog.component.html","./libs/shared/ui/src/localization/components/localization-dialog/localization-dialog.component.ts","./libs/shared/ui/src/localization/components/localization-dialog/localization-dialog.locs.ts","./libs/shared/ui/src/localization/components/inlining-localization/inlining-localization.component.ts","./libs/shared/ui/src/localization/components/inlining-localization/inlining-localization.component.html","./libs/shared/ui/src/localization/components/localize/localize.component.html","./libs/shared/ui/src/localization/components/localize/localize.component.ts","./libs/shared/ui/src/localization/pipes/is-legacy-loc.pipe.ts","./libs/shared/ui/src/localization/pipes/localize-boolean.pipe.ts","./libs/shared/ui/src/localization/pipes/localize.pipe.ts","./libs/shared/ui/src/localization/services/localization-view.service.ts","./libs/shared/ui/src/localization/shared.locs.ts","./libs/shared/ui/src/modules/accessibility/directives/cm-tooltip-label.directive.ts","./libs/shared/ui/src/modules/accessibility/accessibility.module.ts","./libs/shared/ui/src/vendor/tinymce-config.ts","./libs/store/src/lib/store.module.ts","./libs/store/src/lib/store.service.ts","./libs/ui/src/lib/models/ats-overlay-container.ts","./node_modules/@angular/cdk/fesm2022/drag-drop.mjs","./node_modules/date-fns/toDate.mjs","./node_modules/date-fns/constructFrom.mjs","./node_modules/date-fns/getDaysInMonth.mjs","./node_modules/date-fns/constants.mjs","./node_modules/date-fns/parseISO.mjs","./node_modules/date-fns/_lib/defaultOptions.mjs","./node_modules/date-fns/getDefaultOptions.mjs","./node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","./node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","./node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","./node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","./node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","./node_modules/date-fns/locale/_lib/buildMatchFn.mjs","./node_modules/date-fns/locale/en-US/_lib/match.mjs","./node_modules/date-fns/locale/en-US.mjs","./node_modules/date-fns/locale/en-US/_lib/localize.mjs","./node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","./node_modules/date-fns/_lib/format/longFormatters.mjs","./node_modules/date-fns/_lib/protectedTokens.mjs","./node_modules/date-fns/parse/_lib/Setter.mjs","./node_modules/date-fns/transpose.mjs","./node_modules/date-fns/parse/_lib/Parser.mjs","./node_modules/date-fns/parse/_lib/constants.mjs","./node_modules/date-fns/parse/_lib/utils.mjs","./node_modules/date-fns/startOfWeek.mjs","./node_modules/date-fns/getWeekYear.mjs","./node_modules/date-fns/startOfISOWeek.mjs","./node_modules/date-fns/getWeek.mjs","./node_modules/date-fns/startOfWeekYear.mjs","./node_modules/date-fns/getISOWeekYear.mjs","./node_modules/date-fns/getISOWeek.mjs","./node_modules/date-fns/startOfISOWeekYear.mjs","./node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","./node_modules/date-fns/addDays.mjs","./node_modules/date-fns/setDay.mjs","./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","./node_modules/date-fns/parse/_lib/parsers.mjs","./node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","./node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","./node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","./node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","./node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","./node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","./node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","./node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","./node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","./node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","./node_modules/date-fns/setWeek.mjs","./node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","./node_modules/date-fns/setISOWeek.mjs","./node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","./node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","./node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","./node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","./node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","./node_modules/date-fns/setISODay.mjs","./node_modules/date-fns/getISODay.mjs","./node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","./node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","./node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","./node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","./node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","./node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","./node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","./node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","./node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","./node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","./node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","./node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","./node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","./node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","./node_modules/date-fns/parse.mjs","./node_modules/date-fns/startOfDay.mjs","./node_modules/date-fns/_lib/addLeadingZeros.mjs","./node_modules/date-fns/_lib/format/lightFormatters.mjs","./node_modules/date-fns/_lib/format/formatters.mjs","./node_modules/date-fns/getDayOfYear.mjs","./node_modules/date-fns/differenceInCalendarDays.mjs","./node_modules/date-fns/startOfYear.mjs","./node_modules/date-fns/isDate.mjs","./node_modules/date-fns/isValid.mjs","./node_modules/date-fns/format.mjs","./node_modules/date-fns/addMonths.mjs","./node_modules/@angular/material-date-fns-adapter/fesm2022/material-date-fns-adapter.mjs","./node_modules/date-fns/getYear.mjs","./node_modules/date-fns/getMonth.mjs","./node_modules/date-fns/getDate.mjs","./node_modules/date-fns/getDay.mjs","./node_modules/date-fns/addYears.mjs","./node_modules/date-fns/formatISO.mjs","./node_modules/date-fns/set.mjs","./node_modules/date-fns/setMonth.mjs","./node_modules/date-fns/getHours.mjs","./node_modules/date-fns/getMinutes.mjs","./node_modules/date-fns/getSeconds.mjs","./node_modules/date-fns/addSeconds.mjs","./node_modules/date-fns/addMilliseconds.mjs","./libs/ui/src/lib/models/date-adapter.ts","./libs/ui/src/lib/ui.module.ts","./libs/utility/src/lib/factories/multi-guard.factory.ts","./libs/utility/src/lib/operators/negate-object.operator.ts","./libs/utility/src/lib/operators/not-null-or-undefined.operator.ts","./libs/utility/src/lib/classes/ats-utility.class.ts","./libs/utility/src/lib/classes/ats-csv.class.ts","./libs/utility/src/lib/classes/ats-date.class.ts","./libs/utility/src/lib/classes/ats-guid.class.ts","./libs/utility/src/lib/classes/ats-regex.class.ts","./libs/utility/src/lib/classes/object-utlity.class.ts","./libs/utility/src/lib/classes/unsubscribable.class.ts","./libs/utility/src/lib/directives/copy-element-to-clipboard.directive.ts","./libs/utility/src/lib/directives/document-event.directive.ts","./libs/utility/src/lib/directives/responsive.directive.ts","./libs/utility/src/lib/directives/scroll-into-view.directive.ts","./libs/utility/src/lib/functions/boolean-utility.ts","./libs/utility/src/lib/functions/not-null-or-undefined.ts","./libs/utility/src/lib/functions/order-enum-by-index.ts","./libs/utility/src/lib/functions/map-enum-keys.ts","./libs/utility/src/lib/functions/to-cm-date.fn.ts","./libs/utility/src/lib/functions/track-by-property.ts","./libs/utility/src/lib/models/ats-date-unit.enum.ts","./libs/utility/src/lib/models/ats-file-types.enum.ts","./libs/utility/src/lib/models/ats-og-meta.enum.ts","./libs/utility/src/lib/operators/sort.operator.ts","./libs/utility/src/lib/pipes/array-has-item.pipe.ts","./libs/utility/src/lib/pipes/boolean.pipe.ts","./libs/utility/src/lib/pipes/file-reader.pipe.ts","./libs/utility/src/lib/pipes/filter-by-id.pipe.ts","./libs/utility/src/lib/pipes/reverse-array.pipe.ts","./libs/utility/src/lib/pipes/is-string.pipe.ts","./libs/utility/src/lib/pipes/order-by-prop.ts","./libs/utility/src/lib/pipes/safe-html.pipe.ts","./libs/utility/src/lib/pipes/split-pascal.pipe.ts","./libs/utility/src/lib/pipes/to-string.pipe.ts","./libs/utility/src/lib/pipes/track-by-property.pipe.ts","./libs/utility/src/lib/services/file-upload.service.ts","./libs/utility/src/lib/services/operator.service.ts","./libs/utility/src/lib/services/responsive.service.ts","./libs/utility/src/lib/services/utility.service.ts","./libs/utility/src/lib/tokens/utility-config.token.ts","./libs/utility/src/lib/pipes/filter-by-prop.pipe.ts","./libs/utility/src/lib/utility.module.ts","./node_modules/graphql/jsutils/isObjectLike.mjs","./node_modules/graphql/polyfills/symbols.mjs","./node_modules/graphql/language/location.mjs","./node_modules/graphql/language/printLocation.mjs","./node_modules/graphql/error/GraphQLError.mjs","./node_modules/graphql/error/syntaxError.mjs","./node_modules/graphql/language/tokenKind.mjs","./node_modules/graphql/jsutils/devAssert.mjs","./node_modules/graphql/language/source.mjs","./node_modules/graphql/language/directiveLocation.mjs","./node_modules/graphql/language/lexer.mjs","./node_modules/graphql/language/parser.mjs","./node_modules/graphql-tag/lib/index.js","./node_modules/papaparse/papaparse.min.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/firstValueFrom.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/iif.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/combineLatest.js","./node_modules/rxjs/dist/esm/internal/operators/combineLatestWith.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/@angular/animations/fesm2022/animations.mjs","./node_modules/@angular/cdk/fesm2022/a11y.mjs","./node_modules/@angular/cdk/fesm2022/bidi.mjs","./node_modules/@angular/cdk/fesm2022/clipboard.mjs","./node_modules/@angular/cdk/fesm2022/coercion.mjs","./node_modules/@angular/cdk/fesm2022/coercion/private.mjs","./node_modules/@angular/cdk/fesm2022/collections.mjs","./node_modules/@angular/cdk/fesm2022/keycodes.mjs","./node_modules/@angular/cdk/fesm2022/layout.mjs","./node_modules/@angular/cdk/fesm2022/observers.mjs","./node_modules/@angular/cdk/fesm2022/observers/private.mjs","./node_modules/@angular/cdk/fesm2022/overlay.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@angular/cdk/fesm2022/platform.mjs","./node_modules/@angular/cdk/fesm2022/portal.mjs","./node_modules/@angular/cdk/fesm2022/private.mjs","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/@angular/cdk/fesm2022/scrolling.mjs","./node_modules/@angular/cdk/fesm2022/text-field.mjs","./node_modules/rxjs/dist/esm/internal/operators/reduce.js","./node_modules/@angular/cdk/fesm2022/tree.mjs","./node_modules/@angular/common/fesm2022/common.mjs","./node_modules/@angular/common/fesm2022/http.mjs","./node_modules/@angular/core/fesm2022/primitives/signals.mjs","./node_modules/@angular/core/fesm2022/core.mjs","./node_modules/@angular/core/fesm2022/rxjs-interop.mjs","./node_modules/@angular/forms/fesm2022/forms.mjs","./node_modules/@angular/material/fesm2022/button.mjs","./node_modules/@angular/material/fesm2022/checkbox.mjs","./node_modules/@angular/material/fesm2022/chips.mjs","./node_modules/@angular/material/fesm2022/core.mjs","./node_modules/@angular/material/fesm2022/datepicker.mjs","./node_modules/@angular/cdk/fesm2022/dialog.mjs","./node_modules/@angular/material/fesm2022/dialog.mjs","./node_modules/@angular/material/fesm2022/divider.mjs","./node_modules/@angular/material/fesm2022/form-field.mjs","./node_modules/@angular/material/fesm2022/input.mjs","./node_modules/@angular/material/fesm2022/menu.mjs","./node_modules/@angular/material/fesm2022/paginator.mjs","./node_modules/@angular/material/fesm2022/radio.mjs","./node_modules/@angular/material/fesm2022/select.mjs","./node_modules/@angular/material/fesm2022/slide-toggle.mjs","./node_modules/@angular/material/fesm2022/snack-bar.mjs","./node_modules/@angular/material/fesm2022/sort.mjs","./node_modules/@angular/cdk/fesm2022/stepper.mjs","./node_modules/@angular/material/fesm2022/icon.mjs","./node_modules/@angular/material/fesm2022/stepper.mjs","./node_modules/@angular/material/fesm2022/tabs.mjs","./node_modules/@angular/material/fesm2022/tooltip.mjs","./node_modules/@angular/material/fesm2022/tree.mjs","./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2022/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","./node_modules/@apollo/client/errors/index.js","./node_modules/@apollo/client/link/core/ApolloLink.js","./node_modules/@apollo/client/link/utils/createOperation.js","./node_modules/@apollo/client/link/utils/transformOperation.js","./node_modules/@apollo/client/link/utils/validateOperation.js","./node_modules/@apollo/client/utilities/caching/caches.js","./node_modules/@apollo/client/utilities/caching/getMemoryInternals.js","./node_modules/@apollo/client/utilities/caching/sizes.js","./node_modules/@apollo/client/utilities/common/arrays.js","./node_modules/@apollo/client/utilities/common/canUse.js","./node_modules/@apollo/client/utilities/common/canonicalStringify.js","./node_modules/@apollo/client/utilities/common/cloneDeep.js","./node_modules/@apollo/client/utilities/common/compact.js","./node_modules/@apollo/client/utilities/common/makeUniqueId.js","./node_modules/@apollo/client/utilities/common/mergeDeep.js","./node_modules/@apollo/client/utilities/common/objects.js","./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","./node_modules/@apollo/client/utilities/globals/global.js","./node_modules/@apollo/client/utilities/globals/index.js","./node_modules/ts-invariant/lib/invariant.js","./node_modules/@apollo/client/utilities/globals/invariantWrappers.js","./node_modules/@apollo/client/utilities/globals/maybe.js","./node_modules/@apollo/client/utilities/graphql/DocumentTransform.js","./node_modules/@apollo/client/utilities/graphql/directives.js","./node_modules/@apollo/client/utilities/graphql/fragments.js","./node_modules/@apollo/client/utilities/graphql/getFromAST.js","./node_modules/@apollo/client/utilities/graphql/print.js","./node_modules/@apollo/client/utilities/graphql/storeUtils.js","./node_modules/@apollo/client/utilities/graphql/transform.js","./node_modules/@apollo/client/version.js","./node_modules/@ngneat/until-destroy/fesm2022/ngneat-until-destroy.mjs","./node_modules/@tinymce/tinymce-angular/fesm2022/tinymce-tinymce-angular.mjs","./node_modules/@wry/caches/lib/strong.js","./node_modules/@wry/caches/lib/weak.js","./node_modules/@wry/equality/lib/index.js","./node_modules/@wry/trie/lib/index.js","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/@apollo/client/core/networkStatus.js","./node_modules/@apollo/client/link/core/execute.js","./node_modules/@apollo/client/link/http/serializeFetchParameter.js","./node_modules/@apollo/client/link/http/iterators/reader.js","./node_modules/@apollo/client/link/http/responseIterator.js","./node_modules/@apollo/client/link/http/iterators/async.js","./node_modules/@apollo/client/link/http/iterators/promise.js","./node_modules/@apollo/client/link/http/iterators/nodeStream.js","./node_modules/@apollo/client/link/utils/throwServerError.js","./node_modules/@apollo/client/utilities/common/incrementalResult.js","./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","./node_modules/@apollo/client/link/http/checkFetcher.js","./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","./node_modules/@apollo/client/link/utils/fromError.js","./node_modules/@apollo/client/link/http/createHttpLink.js","./node_modules/@apollo/client/link/http/selectURI.js","./node_modules/@apollo/client/link/utils/filterOperationVariables.js","./node_modules/@apollo/client/link/http/rewriteURIForGET.js","./node_modules/@apollo/client/link/http/HttpLink.js","./node_modules/@apollo/client/utilities/observables/asyncMap.js","./node_modules/@apollo/client/utilities/common/errorHandling.js","./node_modules/@apollo/client/utilities/observables/iteration.js","./node_modules/@apollo/client/utilities/observables/subclassing.js","./node_modules/@apollo/client/utilities/observables/Concast.js","./node_modules/@apollo/client/core/equalByQuery.js","./node_modules/@apollo/client/core/ObservableQuery.js","./node_modules/graphql/language/predicates.mjs","./node_modules/@apollo/client/core/LocalState.js","./node_modules/@apollo/client/core/QueryInfo.js","./node_modules/@apollo/client/core/QueryManager.js","./node_modules/@apollo/client/utilities/common/mergeOptions.js","./node_modules/@apollo/client/core/ApolloClient.js","./node_modules/apollo-angular/fesm2022/ngApollo.mjs","./node_modules/graphql/jsutils/inspect.mjs","./node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","./node_modules/graphql/jsutils/defineInspect.mjs","./node_modules/graphql/jsutils/invariant.mjs","./node_modules/graphql/language/ast.mjs","./node_modules/graphql/language/blockString.mjs","./node_modules/graphql/language/kinds.mjs","./node_modules/graphql/language/printer.mjs","./node_modules/graphql/language/visitor.mjs","./node_modules/ng-recaptcha-2/fesm2022/ng-recaptcha-2.mjs","./node_modules/marked/lib/marked.esm.js","./node_modules/ngx-markdown/fesm2022/ngx-markdown.mjs","./node_modules/ngx-papaparse/fesm2022/ngx-papaparse.mjs","./node_modules/optimism/node_modules/@wry/trie/lib/index.js","./node_modules/@wry/context/lib/slot.js","./node_modules/optimism/lib/context.js","./node_modules/optimism/lib/helpers.js","./node_modules/optimism/lib/entry.js","./node_modules/optimism/lib/dep.js","./node_modules/optimism/lib/index.js","./node_modules/zen-observable-ts/module.js","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["export const environment = {\r\n\tproduction: false,\r\n\tbeta: true,\r\n\tlocal: false,\r\n\tstoreDomain: 'certmetrics.com',\r\n\tapiUrl: 'https://beta-api.certmetrics.com',\r\n\tgraphQLUrl: 'https://beta-api.certmetrics.com/gql',\r\n\tlogging: 0,\r\n\tcpUrl: 'https://beta-cp.certmetrics.com/',\r\n\tspUrl: 'https://beta-sp.certmetrics.com/',\r\n\trecaptcha: {\r\n\t\tsiteKey: '6Lcs-cMoAAAAAAsNdXH_zigMR03nIyh4wYQzmz_X',\r\n\t},\r\n};\r\n","/**\n * @license Angular v19.0.4\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, AnimationMetadataType, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode &&\n \"animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))\");\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map((err) => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map((err) => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors\n .map((err) => err.message)\n .join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${errors\n .map((err) => err.message)\n .join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode &&\n `Unable to build the animation due to the following errors: ${errors\n .map((err) => err.message)\n .join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && \"The requested animation doesn't exist or has already been destroyed\");\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode &&\n `Unable to create the animation due to the following errors:${errors\n .map((err) => err.message)\n .join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors\n .map((err) => err.message)\n .join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors\n .map((err) => err.message)\n .join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map((err) => err.message).join('\\n- ')}`);\n}\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach((kf) => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue = normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, (value = defaultValue));\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nconst documentElement = /* @__PURE__ */ (() => typeof document === 'undefined' ? null : document.documentElement)();\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? 'WebkitAppearance' in _CACHED_BODY.style : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nfunction containsElement(elm1, elm2) {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\nfunction invokeQuery(element, selector, multi) {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @publicApi\n *\n * `AnimationDriver` implentation for Noop animations\n */\nclass NoopAnimationDriver {\n /**\n * @returns Whether `prop` is a valid CSS property\n */\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n /**\n *\n * @returns Whether elm1 contains elm2.\n */\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n /**\n * @returns Rhe parent of the given element or `null` if the element is the `document`\n */\n getParentElement(element) {\n return getParentElement(element);\n }\n /**\n * @returns The result of the query selector on the element. The array will contain up to 1 item\n * if `multi` is `false`.\n */\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n /**\n * @returns The `defaultValue` or empty string\n */\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n /**\n * @returns An `NoopAnimationPlayer`\n */\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NoopAnimationDriver });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n /**\n * @deprecated Use the NoopAnimationDriver class.\n */\n static NOOP = new NoopAnimationDriver();\n}\n\nclass AnimationStyleNormalizer {\n}\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration')\n ? timings\n : parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map((kf) => new Map(Object.entries(kf)));\n}\nfunction normalizeStyles(styles) {\n return Array.isArray(styles) ? new Map(...styles) : new Map(styles);\n}\nfunction setStyles(element, styles, formerStyles) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\nfunction eraseStyles(element, styles) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach((varName) => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while ((match = PARAM_REGEX.exec(value))) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = `${value}`;\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach((prop) => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case AnimationMetadataType.Trigger:\n return visitor.visitTrigger(node, context);\n case AnimationMetadataType.State:\n return visitor.visitState(node, context);\n case AnimationMetadataType.Transition:\n return visitor.visitTransition(node, context);\n case AnimationMetadataType.Sequence:\n return visitor.visitSequence(node, context);\n case AnimationMetadataType.Group:\n return visitor.visitGroup(node, context);\n case AnimationMetadataType.Animate:\n return visitor.visitAnimate(node, context);\n case AnimationMetadataType.Keyframes:\n return visitor.visitKeyframes(node, context);\n case AnimationMetadataType.Style:\n return visitor.visitStyle(node, context);\n case AnimationMetadataType.Reference:\n return visitor.visitReference(node, context);\n case AnimationMetadataType.AnimateChild:\n return visitor.visitAnimateChild(node, context);\n case AnimationMetadataType.AnimateRef:\n return visitor.visitAnimateRef(node, context);\n case AnimationMetadataType.Query:\n return visitor.visitQuery(node, context);\n case AnimationMetadataType.Stagger:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective',\n]);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings\n .filter(Boolean)\n .map((warning) => warning)\n .join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\n\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue\n .split(/\\s*,\\s*/)\n .forEach((str) => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n return;\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n _driver;\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = (visitDslNode(this, normalizeAnimationEntry(metadata), context));\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [\n ...context.unsupportedCSSPropertiesFound.keys(),\n ]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = (context.queryCount = 0);\n let depCount = (context.depCount = 0);\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach((def) => {\n this._resetContextStyleTimingState(context);\n if (def.type == AnimationMetadataType.State) {\n const stateDef = def;\n const name = stateDef.name;\n name\n .toString()\n .split(/\\s*,\\s*/)\n .forEach((n) => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == AnimationMetadataType.Transition) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: AnimationMetadataType.Trigger,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null,\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach((style) => {\n if (style instanceof Map) {\n style.forEach((value) => {\n extractStyleParams(value).forEach((sub) => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n context.errors.push(invalidState(metadata.name, [...missingSubs.values()]));\n }\n }\n return {\n type: AnimationMetadataType.State,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null,\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: AnimationMetadataType.Transition,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options),\n };\n }\n visitSequence(metadata, context) {\n return {\n type: AnimationMetadataType.Sequence,\n steps: metadata.steps.map((s) => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options),\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map((step) => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: AnimationMetadataType.Group,\n steps,\n options: normalizeAnimationOptions(metadata.options),\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles\n ? metadata.styles\n : style({});\n if (styleMetadata.type == AnimationMetadataType.Keyframes) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: AnimationMetadataType.Animate,\n timings: timingAst,\n style: styleAst,\n options: null,\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(new Map(Object.entries(styleTuple)));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach((styleData) => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: AnimationMetadataType.Style,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null,\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach((tuple) => {\n if (typeof tuple === 'string')\n return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime &&\n startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, { startTime, endTime });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: AnimationMetadataType.Keyframes, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map((styles) => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : generatedOffset * i) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: AnimationMetadataType.Reference,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options),\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: AnimationMetadataType.AnimateChild,\n options: normalizeAnimationOptions(metadata.options),\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: AnimationMetadataType.AnimateRef,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options),\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector = parentSelector.length\n ? parentSelector + ' ' + selector\n : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: AnimationMetadataType.Query,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options),\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full'\n ? { duration: 0, delay: 0, easing: 'full' }\n : resolveTiming(metadata.timings, context.errors, true);\n return {\n type: AnimationMetadataType.Stagger,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null,\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find((token) => token == SELF_TOKEN)\n ? true\n : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector\n .replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, (match) => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? { ...obj } : null;\n}\nclass AnimationAstBuilderContext {\n errors;\n queryCount = 0;\n depCount = 0;\n currentTransition = null;\n currentQuery = null;\n currentQuerySelector = null;\n currentAnimateTimings = null;\n currentTime = 0;\n collectedStyles = new Map();\n options = null;\n unsupportedCSSPropertiesFound = new Set();\n constructor(errors) {\n this.errors = errors;\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach((styleTuple) => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n }\n else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some((v) => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = { ...options };\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline,\n };\n}\n\nclass ElementInstructionMap {\n _map = new Map();\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, (existingInstructions = []));\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```ts\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```ts\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```ts\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter((timeline) => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length\n ? timelines.map((timeline) => timeline.buildKeyframes())\n : [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number'\n ? animationDelay\n : resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach((instruction) => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime = Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == AnimationMetadataType.Style) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach((s) => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach((s) => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach((timeline) => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params\n ? interpolateParams(strValue, context.params, context.errors)\n : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = (context.currentAnimateTimings = this._visitTiming(ast.timings, context));\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == AnimationMetadataType.Keyframes) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = context.currentTimeline.duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach((step) => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === AnimationMetadataType.Style ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n tl.currentTime - startingTime + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n _driver;\n element;\n subInstructions;\n _enterClassName;\n _leaveClassName;\n errors;\n timelines;\n parentContext = null;\n currentTimeline;\n currentAnimateTimings = null;\n previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n subContextCount = 0;\n options = {};\n currentQueryIndex = 0;\n currentQueryTotal = 0;\n currentStaggerTime = 0;\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach((name) => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = (options['params'] = {});\n Object.keys(oldParams).forEach((name) => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: '',\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) {\n // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements =\n limit < 0\n ? elements.slice(elements.length + limit, elements.length)\n : elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n _driver;\n element;\n startTime;\n _elementTimelineStylesLookup;\n duration = 0;\n easing = null;\n _previousKeyframe = new Map();\n _currentKeyframe = new Map();\n _keyframes = new Map();\n _styleSummary = new Map();\n _localTimelineStyles = new Map();\n _globalTimelineStyles;\n _pendingStyles = new Map();\n _backFill = new Map();\n _currentEmptyStepKeyframe = null;\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, { time: this.currentTime, value });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0)\n return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = new Map([...this._backFill, ...keyframe]);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = [...preStyleProps.values()];\n const postProps = [...postStyleProps.values()];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n keyframes;\n preStyleProps;\n postStyleProps;\n _stretchStartingKeyframe;\n timings;\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = new Map(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = new Map(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = new Map(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach((token) => {\n if (token === '*') {\n allProperties ??= allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n }\n else {\n for (let [prop, val] of token) {\n styles.set(prop, val);\n }\n }\n });\n return styles;\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors,\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n _triggerName;\n ast;\n _stateStyles;\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = (this.ast.options && this.ast.options.params) || EMPTY_OBJECT;\n const currentAnimationParams = (currentOptions && currentOptions.params) || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = (nextOptions && nextOptions.params) || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n const timelines = skipAstBuild\n ? []\n : buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach((tl) => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach((tl) => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach((prop) => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach((prop) => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, [...queriedElements.values()], preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing',\n ]);\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({ keyframes }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach((keyframe) => {\n const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n }\n else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +\n ' not animatable properties: ' +\n Array.from(invalidNonAnimatableProps).join(', ') +\n '\\n' +\n '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some((fn) => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = { ...defaults };\n Object.entries(userParams).forEach(([key, value]) => {\n if (value != null) {\n result[key] = value;\n }\n });\n return result;\n}\nclass AnimationStateStyles {\n styles;\n defaultParams;\n normalizer;\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = applyParamDefaults(params, this.defaultParams);\n this.styles.styles.forEach((value) => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n name;\n ast;\n _normalizer;\n transitionFactories = [];\n fallbackTransition;\n states = new Map();\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n ast.states.forEach((ast) => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach((ast) => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find((f) => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: AnimationMetadataType.Sequence, steps: [], options: null };\n const transition = {\n type: AnimationMetadataType.Transition,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0,\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n }\n else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\n\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n bodyNode;\n _driver;\n _normalizer;\n _animations = new Map();\n _playersById = new Map();\n players = [];\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach((inst) => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach((prop) => styles.set(prop, null));\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map((i) => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false,\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true,\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n namespaceId;\n value;\n options;\n get params() {\n return this.options.params;\n }\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n // we drop the value property from options.\n const { value, ...options } = input;\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach((prop) => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n id;\n hostElement;\n _engine;\n players = [];\n _triggers = new Map();\n _queue = [];\n _elementListeners = new Map();\n _hostClassName;\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n }\n else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, (triggersWithStates = new Map()));\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach((player) => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition,\n });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach((stateMap) => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter((entry) => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach((player) => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach((elm) => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach((ns) => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach((elm) => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach((listener) => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true,\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length\n ? engine.playersByQueriedElement.get(element)\n : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while ((parent = parent.parentNode)) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach((entry) => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach((p) => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\nclass TransitionAnimationEngine {\n bodyNode;\n driver;\n _normalizer;\n players = [];\n newHostElements = new Map();\n playersByElement = new Map();\n playersByQueriedElement = new Map();\n statesByElement = new Map();\n disabledNodes = new Set();\n totalAnimations = 0;\n totalQueuedPlayers = 0;\n _namespaceLookup = {};\n _namespaceList = [];\n _flushFns = [];\n _whenQuietFns = [];\n namespacesByHostElement = new Map();\n collectedEnterElements = [];\n collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n onRemovalComplete = (element, context) => { };\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach((ns) => {\n ns.players.forEach((player) => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return (this._namespaceLookup[namespaceId] = ns);\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n this.afterFlush(() => { });\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues,\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach((element) => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach((element) => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach((player) => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach((player) => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise((resolve) => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach((node) => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach((fn) => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach((fn) => fn());\n });\n }\n else {\n quietFns.forEach((fn) => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach((node) => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach((node) => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver\n .query(element, STAR_SELECTOR, true)\n .forEach((elm) => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach((node) => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach((node) => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach((node) => removeClass(node, className));\n });\n allLeaveNodes.forEach((element) => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach((entry) => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach((tl) => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach((element) => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, (setVal = new Set()));\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, (setVal = new Set()));\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach((instruction) => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach((player) => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach((entry) => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach((player) => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach((prevPlayer) => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter((node) => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach((node) => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach((node) => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach((entry) => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while ((elm = elm.parentNode)) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach((parent) => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach((player) => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach((player) => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter((p) => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach((player) => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach((player) => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter((player) => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition\n ? undefined\n : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition\n ? undefined\n : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach((player) => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map((timelineInstruction) => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY).map((p) => p.getRealPlayer())).filter((p) => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach((player) => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach((element) => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach((element) => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach((element) => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n namespaceId;\n triggerName;\n element;\n _player = new NoopAnimationPlayer();\n _containsRealPlayer = false;\n _queuedCallbacks = new Map();\n destroyed = false;\n parentPlayer = null;\n markedForDestroy = false;\n disabled = false;\n queued = true;\n totalTime = 0;\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach((callback) => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach((element) => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach((prop) => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach((element) => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach((root) => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) {\n // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) {\n // ngIf inside ngIf\n root = NULL_NODE;\n }\n else {\n // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach((node) => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach((data) => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n _driver;\n _normalizer;\n _transitionEngine;\n _timelineEngine;\n _triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n onRemovalComplete = (element, context) => { };\n constructor(doc, _driver, _normalizer) {\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._transitionEngine = new TransitionAnimationEngine(doc.body, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(doc.body, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context) {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return [...this._transitionEngine.players, ...this._timelineEngine.players];\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n afterFlushAnimationsDone(cb) {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return startStyles || endStyles ? new SpecialCasedStyles(element, startStyles, endStyles) : null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n _element;\n _startStyles;\n _endStyles;\n static initialStylesByElement = /* @__PURE__ */ new WeakMap();\n _state = 0 /* SpecialCasedStylesState.Pending */;\n _initialStyles;\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, (initialStyles = new Map()));\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n element;\n keyframes;\n options;\n _specialStyles;\n _onDoneFns = [];\n _onStartFns = [];\n _onDestroyFns = [];\n _duration;\n _delay;\n _initialized = false;\n _finished = false;\n _started = false;\n _destroyed = false;\n _finalKeyframe;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n _originalOnDoneFns = [];\n _originalOnStartFns = [];\n // using non-null assertion because it's re(set) by init();\n domPlayer;\n time = 0;\n parentPlayer = null;\n currentSnapshot = new Map();\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((fn) => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n const onFinish = () => this._onFinish();\n this.domPlayer.addEventListener('finish', onFinish);\n this.onDestroy(() => {\n // We must remove the `finish` event listener once an animation has completed all its\n // iterations. This action is necessary to prevent a memory leak since the listener captures\n // `this`, creating a closure that prevents `this` from being garbage collected.\n this.domPlayer.removeEventListener('finish', onFinish);\n });\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach((frame) => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach((fn) => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach((fn) => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((fn) => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return computeStyle(element, prop);\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = (previousPlayers.filter((player) => player instanceof WebAnimationsPlayer));\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach((player) => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map((styles) => new Map(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n\nfunction createEngine(type, doc) {\n // TODO: find a way to make this tree shakable.\n if (type === 'noop') {\n return new AnimationEngine(doc, new NoopAnimationDriver(), new NoopAnimationStyleNormalizer());\n }\n return new AnimationEngine(doc, new WebAnimationsDriver(), new WebAnimationsStyleNormalizer());\n}\n\nclass Animation {\n _driver;\n _animationAst;\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles)\n ? normalizeStyles(startingStyles)\n : startingStyles;\n const dest = Array.isArray(destinationStyles)\n ? normalizeStyles(destinationStyles)\n : destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass BaseAnimationRenderer {\n namespaceId;\n delegate;\n engine;\n _onDestroy;\n // We need to explicitly type this property because of an api-extractor bug\n // See https://github.com/microsoft/rushstack/issues/4390\n ɵtype = 0 /* AnimationRendererType.Regular */;\n constructor(namespaceId, delegate, engine, _onDestroy) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this._onDestroy = _onDestroy;\n }\n get data() {\n return this.delegate.data;\n }\n destroyNode(node) {\n this.delegate.destroyNode?.(node);\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n this._onDestroy?.();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n // Prior to the changes in #57203, this method wasn't being called at all by `core` if the child\n // doesn't have a parent. There appears to be some animation-specific downstream logic that\n // depends on the null check happening before the animation engine. This check keeps the old\n // behavior while allowing `core` to not have to check for the parent element anymore.\n if (this.parentNode(oldChild)) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n factory;\n constructor(factory, namespaceId, delegate, engine, onDestroy) {\n super(namespaceId, delegate, engine, onDestroy);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, (event) => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\n\nclass AnimationRendererFactory {\n delegate;\n engine;\n _zone;\n _currentId = 0;\n _microtaskId = 1;\n _animationCallbacksBuffer = [];\n _rendererCache = new Map();\n _cdRecurDepth = 0;\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n engine.onRemovalComplete = (element, delegate) => {\n delegate?.removeChild(null, element);\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type?.data?.['animation']) {\n const cache = this._rendererCache;\n let renderer = cache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => cache.delete(delegate);\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n cache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n const animationCallbacksBuffer = this._animationCallbacksBuffer;\n if (animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n animationCallbacksBuffer.forEach((tuple) => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, NoopAnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, BaseAnimationRenderer as ɵBaseAnimationRenderer, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, camelCaseToDashCase as ɵcamelCaseToDashCase, containsElement as ɵcontainsElement, createEngine as ɵcreateEngine, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty, validateWebAnimatableStyleProperty as ɵvalidateWebAnimatableStyleProperty };\n","/**\n * @license Angular v19.0.4\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule, ɵperformanceMarkFeature } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationRendererFactory, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, NoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer) {\n super(doc, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: InjectableAnimationEngine });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }] });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new ɵAnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine },\n {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone],\n },\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' },\n ...SHARED_ANIMATION_PROVIDERS,\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: NoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' },\n ...SHARED_ANIMATION_PROVIDERS,\n];\n\n/**\n * Exports `BrowserModule` with additional dependency-injection providers\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations\n ? BROWSER_NOOP_ANIMATIONS_PROVIDERS\n : BROWSER_ANIMATIONS_PROVIDERS,\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of dependency-injection providers\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```ts\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n ɵperformanceMarkFeature('NgEagerAnimations');\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of dependency-injection providers\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```ts\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { __assign, __rest } from \"tslib\";\nimport { wrap } from \"optimism\";\nimport { cacheSizes, getFragmentQueryDocument, } from \"../../utilities/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { getApolloCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nvar ApolloCache = /** @class */ (function () {\n function ApolloCache() {\n this.assumeImmutableResults = false;\n // Make sure we compute the same (===) fragment query document every\n // time we receive the same fragment in readFragment.\n this.getFragmentDoc = wrap(getFragmentQueryDocument, {\n max: cacheSizes[\"cache.fragmentQueryDocuments\"] ||\n 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n cache: WeakCache,\n });\n }\n // Transactional API\n // The batch method is intended to replace/subsume both performTransaction\n // and recordOptimisticTransaction, but performTransaction came first, so we\n // provide a default batch implementation that's just another way of calling\n // performTransaction. Subclasses of ApolloCache (such as InMemoryCache) can\n // override the batch method to do more interesting things with its options.\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic\n : options.optimistic === false ? null\n : void 0;\n var updateResult;\n this.performTransaction(function () { return (updateResult = options.update(_this)); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n // Optional API\n // Called once per input document, allowing the cache to make static changes\n // to the query, such as adding __typename fields.\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n // Called before each ApolloLink request, allowing the cache to make dynamic\n // changes to the query, such as filling in missing fragment definitions.\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n // DataProxy API\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || \"ROOT_QUERY\", optimistic: optimistic }));\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || \"ROOT_QUERY\",\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\nif (globalThis.__DEV__ !== false) {\n ApolloCache.prototype.getMemoryInternals = getApolloCacheMemoryInternals;\n}\n","import { __extends } from \"tslib\";\nvar MissingFieldError = /** @class */ (function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n // 'Error' breaks prototype chain here\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n }\n else {\n _this.missing = _this.path;\n }\n // We're not using `Object.setPrototypeOf` here as it isn't fully supported\n // on Android (see issue #3236).\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error));\nexport { MissingFieldError };\n","import { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (globalThis.__DEV__ !== false && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n // Some types like Uint8Array and Node.js's Buffer cannot be frozen, but\n // they all throw a TypeError when you try, so we re-throw any exceptions\n // that are not TypeErrors, since that would be unexpected.\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (globalThis.__DEV__ !== false) {\n deepFreeze(obj);\n }\n return obj;\n}\n","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, isArray, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport { isArray };\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n !isNullish(id) ? { id: id }\n : !isNullish(_id) ? { _id: _id }\n : void 0;\n }\n // If there is no object.id, fall back to object._id.\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat(typeof id === \"number\" || typeof id === \"string\" ?\n id\n : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n // Thanks to the shouldCanonizeResults helper, this should be the only line\n // you have to change to reenable canonization by default in the future.\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference) ?\n store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result) ?\n result.every(function (item) {\n return selectionSetMatchesResult(selectionSet, item, variables);\n })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return (hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables)));\n }\n // If the selection has been skipped with @skip(true) or\n // @include(false), it should not count against the matching. If\n // the selection is not a field, it must be a fragment (inline or\n // named). We will determine if selectionSetMatchesResult for that\n // fragment when we get to it, so for now we return true.\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) && !isReference(value) && !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger();\n}\nexport function extractFragmentContext(document, fragments) {\n // FragmentMap consisting only of fragments defined directly in document, not\n // including other fragments registered in the FragmentRegistry.\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n },\n };\n}\n","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = /** @class */ (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n // Maps root entity IDs to the number of times they have been retained, minus\n // the number of times they have been released. Retained entities keep other\n // entities they reference (even indirectly) from being garbage collected.\n this.rootIds = Object.create(null);\n // Lazily tracks { __ref: } strings contained by this.data[dataId].\n this.refs = Object.create(null);\n // Bound function that can be passed around to provide easy access to fields\n // of Reference objects as well as ordinary objects.\n this.getFieldValue = function (objectOrReference, storeFieldName) {\n return maybeDeepFreeze(isReference(objectOrReference) ?\n _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]);\n };\n // Returns true for non-normalized StoreObjects and non-dangling\n // References, indicating that readField(name, objOrRef) has a chance of\n // working. Useful for filtering out dangling references from lists.\n this.canRead = function (objOrRef) {\n return isReference(objOrRef) ?\n _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n // Bound function that converts an id or an object with a __typename and\n // primary key fields to a Reference object. If called with a Reference object,\n // that same Reference object is returned. Pass true for mergeIntoStore to persist\n // an object into the store.\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n // Although the EntityStore class is abstract, it contains concrete\n // implementations of the various NormalizedCache interface methods that\n // are inherited by the Root and Layer subclasses.\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n // The has method (above) calls lookup with dependOnExistence = true, so\n // that it can later be invalidated when we add or remove a StoreObject for\n // this dataId. Any consumer who cares about the contents of the StoreObject\n // should not rely on this dependency, since the contents could change\n // without the object being added or removed.\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n // Convert unexpected references to ID strings.\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\" ? this.lookup((dataId = older)) : older;\n var incoming = typeof newer === \"string\" ? this.lookup((dataId = newer)) : newer;\n // If newer was a string ID, but that ID was not defined in this store,\n // then there are no fields to be merged, so we're done.\n if (!incoming)\n return;\n invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n // Even if merged === existing, existing may have come from a lower\n // layer, so we always need to set this.data[dataId] on this level.\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n // If we added a new StoreObject where there was previously none, dirty\n // anything that depended on the existence of this dataId, such as the\n // EntityStore#has method.\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n // Now invalidate dependents who called getFieldValue for any fields\n // that are changing as a result of this merge.\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing ||\n existing[storeFieldName] !== merged[storeFieldName]) {\n // Always dirty the full storeFieldName, which may include\n // serialized arguments following the fieldName prefix.\n fieldsToDirty_1[storeFieldName] = 1;\n // Also dirty fieldNameFromStoreName(storeFieldName) if it's\n // different from storeFieldName and this field does not have\n // keyArgs configured, because that means the cache can't make\n // any assumptions about how field values with the same field\n // name but different arguments might be interrelated, so it\n // must err on the side of invalidating all field values that\n // share the same short fieldName, regardless of arguments.\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n // If merged[storeFieldName] has become undefined, and this is the\n // Root layer, actually delete the property from the merged object,\n // which is guaranteed to have been created fresh in this method.\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n // Since we return default root __typename strings\n // automatically from store.get, we don't need to dirty the\n // ROOT_QUERY.__typename field if merged.__typename is equal\n // to the default string (usually \"Query\").\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) {\n return _this.group.dirty(dataId, fieldName);\n });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) {\n return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ?\n {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n }\n : fieldNameOrOptions, { store: _this });\n },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\" ? fields : (fields[storeFieldName] || fields[fieldName]);\n if (modify) {\n var newValue = modify === delModifier ? DELETE : (modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) })));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n if (globalThis.__DEV__ !== false) {\n var checkReference = function (ref) {\n if (_this.lookup(ref.__ref) === undefined) {\n globalThis.__DEV__ !== false && invariant.warn(2, ref);\n return true;\n }\n };\n if (isReference(newValue)) {\n checkReference(newValue);\n }\n else if (Array.isArray(newValue)) {\n // Warn about writing \"mixed\" arrays of Reference and non-Reference objects\n var seenReference = false;\n var someNonReference = void 0;\n for (var _i = 0, newValue_1 = newValue; _i < newValue_1.length; _i++) {\n var value = newValue_1[_i];\n if (isReference(value)) {\n seenReference = true;\n if (checkReference(value))\n break;\n }\n else {\n // Do not warn on primitive values, since those could never be represented\n // by a reference. This is a valid (albeit uncommon) use case.\n if (typeof value === \"object\" && !!value) {\n var id = _this.policies.identify(value)[0];\n // check if object could even be referenced, otherwise we are not interested in it for this warning\n if (id) {\n someNonReference = value;\n }\n }\n }\n if (seenReference && someNonReference !== undefined) {\n globalThis.__DEV__ !== false && invariant.warn(3, someNonReference);\n break;\n }\n }\n }\n }\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n // If called with only one argument, removes the entire entity\n // identified by dataId. If called with a fieldName as well, removes all\n // fields of that entity whose names match fieldName according to the\n // fieldNameFromStoreName helper function. If called with a fieldName\n // and variables, removes all fields of that entity whose names match fieldName\n // and whose arguments when cached exactly match the variables passed.\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args ?\n this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n // Always invalidate the field to trigger rereading of watched\n // queries, even if no cache data was modified by the eviction,\n // because queries may depend on computed fields with custom read\n // functions, whose values are not stored in the EntityStore.\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return (this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1);\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n // Return a Set of all the ID strings that have been retained by\n // this layer/root *and* any layers/roots beneath it.\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n // Official singleton IDs like ROOT_QUERY and ROOT_MUTATION are\n // always considered roots for garbage collection, regardless of\n // their retainment counts in this.rootIds.\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n // The goal of garbage collection is to remove IDs from the Root layer of the\n // store that are no longer reachable starting from any IDs that have been\n // explicitly retained (see retain and release, above). Returns an array of\n // dataId strings that were removed from the store.\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n // Because we are iterating over an ECMAScript Set, the IDs we add here\n // will be visited in later iterations of the forEach loop only if they\n // were not previously contained by the Set.\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n // By removing IDs from the snapshot object here, we protect them from\n // getting removed from the root store layer below.\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = (this.refs[dataId] = Object.create(null));\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n // Within the store, only arrays and objects can contain child entity\n // references, so we can prune the traversal using this predicate:\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n // In rare cases, a { __ref } Reference object may have other fields.\n // This often indicates a mismerging of References with StoreObjects,\n // but garbage collection should not be fooled by a stray __ref\n // property in a StoreObject (ignoring all the other fields just\n // because the StoreObject looks like a Reference). To avoid this\n // premature termination of findChildRefIds recursion, we fall through\n // to the code below, which will handle any other properties of obj.\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n // No need to add primitive values to the workSet, since they cannot\n // contain reference objects.\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\n// A single CacheGroup represents a set of one or more EntityStore objects,\n// typically the Root store in a CacheGroup by itself, and all active Layer\n// stores in a group together. A single EntityStore object belongs to only\n// one CacheGroup, store.group. The CacheGroup is responsible for tracking\n// dependencies, so store.group is helpful for generating unique keys for\n// cached results that need to be invalidated when/if those dependencies\n// change. If we used the EntityStore objects themselves as cache keys (that\n// is, store rather than store.group), the cache would become unnecessarily\n// fragmented by all the different Layer objects. Instead, the CacheGroup\n// approach allows all optimistic Layer objects in the same linked list to\n// belong to one CacheGroup, with the non-optimistic Root object belonging\n// to another CacheGroup, allowing resultCaching dependencies to be tracked\n// separately for optimistic and non-optimistic entity data.\nvar CacheGroup = /** @class */ (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n // Fields with arguments that contribute extra identifying\n // information to the fieldName (thus forming the storeFieldName)\n // depend not only on the full storeFieldName but also on the\n // short fieldName, so the field can be invalidated using either\n // level of specificity.\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), \n // When storeFieldName === \"__exists\", that means the entity identified\n // by dataId has either disappeared from the cache or was newly added,\n // so the result caching system would do well to \"forget everything it\n // knows\" about that object. To achieve that kind of invalidation, we\n // not only dirty the associated result cache entry, but also remove it\n // completely from the dependency graph. For the optimism implementation\n // details, see https://github.com/benjamn/optimism/pull/195.\n storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n // Since field names cannot have '#' characters in them, this method\n // of joining the field name and the ID should be unambiguous, and much\n // cheaper than JSON.stringify([dataId, fieldName]).\n return storeFieldName + \"#\" + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n // We use this pseudo-field __exists elsewhere in the EntityStore code to\n // represent changes in the existence of the entity object identified by\n // entityId. This dependency gets reliably dirtied whenever an object with\n // this ID is deleted (or newly created) within this group, so any result\n // cache entries (for example, StoreReader#executeSelectionSet results) that\n // depend on __exists for this entityId will get dirtied as well, leading to\n // the eventual recomputation (instead of reuse) of those result objects the\n // next time someone reads them from the cache.\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n // Refer to this class as EntityStore.Root outside this namespace.\n var Root = /** @class */ (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n // Adding an optimistic Layer on top of the Root actually adds the Layer\n // on top of the Stump, so the Stump always comes between the Root and\n // any Layer objects that we've added.\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n // Never remove the root layer.\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\n// Not exported, since all Layer instances are created by the addLayer method\n// of the EntityStore.Root class.\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n // Remove all instances of the given id, not just the first one.\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n // Dirty every ID we're removing. Technically we might be able to avoid\n // dirtying fields that have values in higher layers, but we don't have\n // easy access to higher layers here, and we're about to recreate those\n // layers anyway (see parent.addLayer below).\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n // The StoreObject identified by dataId was defined in this layer\n // but will be undefined in the parent layer, so we can delete the\n // whole entity using this.delete(dataId). Since we're about to\n // throw this layer away, the only goal of this deletion is to dirty\n // the removed fields.\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n // This layer had an entry for dataId but it was undefined, which\n // means the entity was deleted in this layer, and it's about to\n // become undeleted when we remove this layer, so we need to dirty\n // all fields that are about to be reexposed.\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n // If ownStoreObject is not exactly the same as parentStoreObject,\n // dirty any fields whose values will change as a result of this\n // removal.\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n // No changes are necessary if the parent chain remains identical.\n if (parent === this.parent)\n return this;\n // Recreate this layer on top of the new parent.\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, \n // @ts-expect-error\n arguments);\n };\n return Layer;\n}(EntityStore));\n// Represents a Layer permanently installed just above the Root, which allows\n// reading optimistically (and registering optimistic dependencies) even when\n// no optimistic layers are currently active. The stump.group CacheGroup object\n// is shared by any/all Layer objects added on top of the Stump.\nvar Stump = /** @class */ (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n // Never remove the Stump layer.\n return this;\n };\n Stump.prototype.merge = function (older, newer) {\n // We never want to write any data into the Stump, so we forward any merge\n // calls to the Root instead. Another option here would be to throw an\n // exception, but the toReference(object, true) function can sometimes\n // trigger Stump writes (which used to be Root writes, before the Stump\n // concept was introduced).\n return this.parent.merge(older, newer);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n // Wherever there is a key collision, prefer the incoming value, unless\n // it is deeply equal to the existing value. It's worth checking deep\n // equality here (even though blindly returning incoming would be\n // logically correct) because preserving the referential identity of\n // existing data can prevent needless rereading and rerendering.\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n // When result caching is disabled, store.depend will be null.\n return !!(store instanceof EntityStore && store.group.caching);\n}\n","import { __assign } from \"tslib\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value) ?\n value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\n// When programmers talk about the \"canonical form\" of an object, they\n// usually have the following meaning in mind, which I've copied from\n// https://en.wiktionary.org/wiki/canonical_form:\n//\n// 1. A standard or normal presentation of a mathematical entity [or\n// object]. A canonical form is an element of a set of representatives\n// of equivalence classes of forms such that there is a function or\n// procedure which projects every element of each equivalence class\n// onto that one element, the canonical form of that equivalence\n// class. The canonical form is expected to be simpler than the rest of\n// the forms in some way.\n//\n// That's a long-winded way of saying any two objects that have the same\n// canonical form may be considered equivalent, even if they are !==,\n// which usually means the objects are structurally equivalent (deeply\n// equal), but don't necessarily use the same memory.\n//\n// Like a literary or musical canon, this ObjectCanon class represents a\n// collection of unique canonical items (JavaScript objects), with the\n// important property that canon.admit(a) === canon.admit(b) if a and b\n// are deeply equal to each other. In terms of the definition above, the\n// canon.admit method is the \"function or procedure which projects every\"\n// object \"onto that one element, the canonical form.\"\n//\n// In the worst case, the canonicalization process may involve looking at\n// every property in the provided object tree, so it takes the same order\n// of time as deep equality checking. Fortunately, already-canonicalized\n// objects are returned immediately from canon.admit, so the presence of\n// canonical subtrees tends to speed up canonicalization.\n//\n// Since consumers of canonical objects can check for deep equality in\n// constant time, canonicalizing cache results can massively improve the\n// performance of application code that skips re-rendering unchanged\n// results, such as \"pure\" UI components in a framework like React.\n//\n// Of course, since canonical objects may be shared widely between\n// unrelated consumers, it's important to think of them as immutable, even\n// though they are not actually frozen with Object.freeze in production,\n// due to the extra performance overhead that comes with frozen objects.\n//\n// Custom scalar objects whose internal class name is neither Array nor\n// Object can be included safely in the admitted tree, but they will not\n// be replaced with a canonical version (to put it another way, they are\n// assumed to be canonical already).\n//\n// If we ignore custom objects, no detection of cycles or repeated object\n// references is currently required by the StoreReader class, since\n// GraphQL result objects are JSON-serializable trees (and thus contain\n// neither cycles nor repeated subtrees), so we can avoid the complexity\n// of keeping track of objects we've already seen during the recursion of\n// the admit method.\n//\n// In the future, we may consider adding additional cases to the switch\n// statement to handle other common object types, such as \"[object Date]\"\n// objects, as needed.\nvar ObjectCanon = /** @class */ (function () {\n function ObjectCanon() {\n // Set of all canonical objects this ObjectCanon has admitted, allowing\n // canon.admit to return previously-canonicalized objects immediately.\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n // Efficient storage/lookup structure for canonical objects.\n this.pool = new Trie(canUseWeakMap);\n // Make the ObjectCanon assume this value has already been\n // canonicalized.\n this.passes = new WeakMap();\n // Arrays that contain the same elements in a different order can share\n // the same SortedKeysInfo object, to save memory.\n this.keysByJSON = new Map();\n // This has to come last because it depends on keysByJSON.\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n // Arrays are looked up in the Trie using their recursively\n // canonicalized elements, and the known version of the array is\n // preserved as node.array.\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add((node.array = array));\n // Since canonical arrays may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n // Objects are looked up in the Trie by their prototype (which\n // is *not* recursively canonicalized), followed by a JSON\n // representation of their (sorted) keys, followed by the\n // sequence of recursively canonicalized values corresponding to\n // those keys. To keep the final results unambiguous with other\n // sequences (such as arrays that just happen to contain [proto,\n // keys.json, value1, value2, ...]), the known version of the\n // object is stored as node.object.\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = (node.object = Object.create(proto_1));\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n // Since canonical objects may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n // It's worthwhile to cache the sorting of arrays of strings, since the\n // same initial unsorted arrays tend to be encountered many times.\n // Fortunately, we can reuse the Trie machinery to look up the sorted\n // arrays in linear time (which is faster than sorting large arrays).\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, (node.keys = { sorted: keys, json: json }));\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind } from \"graphql\";\nimport { wrap } from \"optimism\";\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, canonicalStringify, cacheSizes, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching, } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults, } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { ObjectCanon } from \"./object-canon.js\";\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n // We split out this property so we can pass different values\n // independently without modifying options.context itself.\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = /** @class */ (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon();\n // memoized functions in this class will be \"garbage-collected\"\n // by recreating the whole `StoreReader` in\n // `InMemoryCache.resetResultsCache`\n // (triggered from `InMemoryCache.gc` with `resetResultCache: true`)\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n // Negate this boolean option so we can find out if we've already read\n // this result using the other boolean value.\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { \n // If we previously read this result without canonizing it, we can\n // reuse that result simply by canonizing it now.\n result: _this.canon.admit(other.result) });\n }\n // If we previously read this result with canonization enabled, we can\n // return that canonized result as-is.\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n // Finally, if we didn't find any useful previous results, run the real\n // execSelectionSetImpl method with the given options.\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSelectionSet\"] ||\n 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n keyArgs: execSelectionSetKeyArgs,\n // Note that the parameters of makeCacheKey are determined by the\n // array returned by keyArgs.\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n },\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSubSelectedArray\"] ||\n 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n },\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon();\n };\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n */\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? \"ROOT_QUERY\" : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),\n });\n var missing;\n if (execResult.missing) {\n // For backwards compatibility we still report an array of\n // MissingFieldError objects, even though there will only ever be at most\n // one of them, now that all missing field error messages are grouped\n // together in the execResult.missing tree.\n missing = [\n new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables),\n ];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, \n // If result is canonical, then it could only have been previously\n // cached by the canonizing version of executeSelectionSet, so we can\n // avoid checking both possibilities here.\n this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n // Uncached version of executeSelectionSet.\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n // Ensure we always include a default value for the __typename\n // field, if we have one, and this.config.addTypename is true. Note\n // that this field can be overridden by other merged objects.\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = result.missing,\n _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n // Omit fields with directives @skip(if: ) or\n // @include(if: ).\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference) ?\n objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n if (fieldValue.length > 0) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n }\n else if (!selection.selectionSet) {\n // If the field does not have a selection set, then we handle it\n // as a scalar value. To keep this.canon from canonicalizing\n // this value, we use this.canon.pass to wrap fieldValue in a\n // Pass object that this.canon.admit will later unwrap as-is.\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n // In this case, because we know the field has a selection set,\n // it must be trying to query a GraphQLObjectType, which is why\n // fieldValue must be != null.\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(9, selection.name.value);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults ?\n this.canon.admit(finalResult)\n // Since this.canon is normally responsible for freezing results (only in\n // development), freeze them manually if canonization is disabled.\n : maybeDeepFreeze(finalResult);\n // Store this result with its selection set so that we can quickly\n // recognize it again in the StoreReader#isFresh method.\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n // Uncached version of executeSubSelectedArray.\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n // null value in array\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (globalThis.__DEV__ !== false) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n invariant(\n !isReference(value),\n 10,\n getTypenameFromStoreObject(store, value),\n field.name.value\n );\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\n// Mapping from JSON-encoded KeySpecifier strings to associated information.\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n // It's safe to encode KeySpecifier arrays with JSON.stringify, since they're\n // just arrays of strings or nested KeySpecifier arrays, and the order of the\n // array elements is important (and suitably preserved by JSON.stringify).\n var cacheKey = JSON.stringify(spec);\n return (specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null)));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) {\n return context.readField(key, from);\n };\n var keyObject = (context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, \n // Using context.readField to extract paths from context.storeObject\n // allows the extraction to see through Reference objects and respect\n // custom read functions.\n extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n // If context.storeObject fails to provide a value for the requested\n // path, fall back to the raw result object, if it has a top-level key\n // matching the first key in the path (schemaKeyPath[0]). This allows\n // key fields included in the written data to be saved in the cache\n // even if they are not selected explicitly in context.selectionSet.\n // Not being mentioned by context.selectionSet is convenient here,\n // since it means these extra fields cannot be affected by field\n // aliasing, which is why we can use extractKey instead of\n // context.readField for this extraction.\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n invariant(extracted !== void 0, 4, schemaKeyPath.join(\".\"), object);\n return extracted;\n }));\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n }));\n}\n// The keyArgs extraction process is roughly analogous to keyFields extraction,\n// but there are no aliases involved, missing fields are tolerated (by merely\n// omitting them from the key), and drawing from field.directives or variables\n// is allowed (in addition to drawing from the field's arguments object).\n// Concretely, these differences mean passing a different key path extractor\n// function to collectSpecifierPaths, reusing the shared extractKeyPath helper\n// wherever possible.\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyArgsFn ||\n (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n // If the directive appears multiple times, only the first\n // occurrence's arguments will be used. TODO Allow repetition?\n // TODO Cache this work somehow, a la aliasMap?\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n // Fortunately argumentsObjectFromField works for DirectiveNode!\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n // For directives without arguments (d defined, but directiveArgs ===\n // null), the presence or absence of the directive still counts as\n // part of the field key, so we return null in those cases. If no\n // directive with this name was found for this field (d undefined and\n // thus directiveArgs undefined), we return undefined, which causes\n // this value to be omitted from the key object returned by\n // collectSpecifierPaths.\n return (directiveArgs &&\n extractKeyPath(directiveArgs, \n // If keyPath.length === 1, this code calls extractKeyPath with an\n // empty path, which works because it uses directiveArgs as the\n // extracted value.\n keyPath.slice(1)));\n }\n // If the key started with @ but there was no corresponding directive,\n // we want to omit this value from the key object, not fall through to\n // treating @whatever as a normal argument name.\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n // If the key started with $ but there was no corresponding variable, we\n // want to omit this value from the key object, not fall through to\n // treating $whatever as a normal argument name.\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n // If no arguments were passed to this field, and it didn't have any other\n // field key contributions from directives or variables, hide the empty\n // :{} suffix from the field key. However, a field passed no arguments can\n // still end up with a non-empty :{...} suffix if its key configuration\n // refers to directives or variables.\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n }));\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n // For each path specified by specifier, invoke the extractor, and repeatedly\n // merge the results together, with appropriate ancestor context.\n var merger = new DeepMerger();\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n // This path is not expected to contain array indexes, so the toMerge\n // reconstruction will not contain arrays. TODO Fix this?\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = (info.paths = []);\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n // For each key in path, extract the corresponding child property from obj,\n // flattening arrays if encountered (uncommon for keyFields and keyArgs, but\n // possible). The final result of path.reduce is normalized so unexpected leaf\n // objects have their keys safely sorted. That final result is difficult to\n // type as anything other than any. You're welcome to try to improve the\n // return type, but keep in mind extractKeyPath is not a public function\n // (exported only for testing), so the effort may not be worthwhile unless the\n // limited set of actual callers (see above) pass arguments that TypeScript\n // can statically type. If we know only that path is some array of strings\n // (and not, say, a specific tuple of statically known strings), any (or\n // possibly unknown) is the honest answer.\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj) ?\n obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n // Usually the extracted value will be a scalar value, since most primary\n // key fields are scalar, but just in case we get an object or an array, we\n // need to do some normalization of the order of (nested) keys.\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) {\n return extractKeyPath(value, path);\n });\n }\n return value;\n}\n","import { __assign, __rest } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier, } from \"./key-extractor.js\";\nfunction argsFromFieldSpecifier(spec) {\n return (spec.args !== void 0 ? spec.args\n : spec.field ? argumentsObjectFromField(spec.field, spec.variables)\n : null);\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\n// These merge functions can be selected by specifying merge:true or\n// merge:false in a field policy.\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = /** @class */ (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n // Map from subtype names to sets of supertype names. Note that this\n // representation inverts the structure of possibleTypes (whose keys are\n // supertypes and whose values are arrays of subtypes) because it tends\n // to be much more efficient to search upwards than downwards.\n this.supertypeMap = new Map();\n // Any fuzzy subtypes specified by possibleTypes will be converted to\n // RegExp objects and recorded here. Every key of this map can also be\n // found in supertypeMap. In many cases this Map will be empty, which\n // means no fuzzy subtype checking will happen in fragmentMatches.\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = (partialContext &&\n (partialContext.typename || ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename))) ||\n object.__typename;\n // It should be possible to write root Query fields with writeFragment,\n // using { __typename: \"Query\", ... } as the data, but it does not make\n // sense to allow the same identification behavior for the Mutation and\n // Subscription types, since application code should never be writing\n // directly to (or reading directly from) those root objects.\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n // Default context.storeObject to object if not otherwise provided.\n var storeObject = (partialContext && partialContext.storeObject) || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: (partialContext && partialContext.readField) ||\n function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = (policy && policy.keyFn) || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(__assign(__assign({}, object), storeObject), context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n // Though {query,mutation,subscription}Type configurations are rare,\n // it's important to call setRootTypename as early as possible,\n // since these configurations should apply consistently for the\n // entire lifetime of the cache. Also, since only one __typename can\n // qualify as one of these root types, these three properties cannot\n // be inherited, unlike the rest of the incoming properties. That\n // restriction is convenient, because the purpose of this.toBeAdded\n // is to delay the processing of type/field policies until the first\n // time they're used, allowing policies to be added in any order as\n // long as all relevant policies (including policies for supertypes)\n // have been added by the time a given policy is used for the first\n // time. In other words, since inheritance doesn't matter for these\n // properties, there's also no need to delay their processing using\n // the this.toBeAdded queue.\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge\n // Pass merge:true as a shorthand for a merge implementation\n // that returns options.mergeObjects(existing, incoming).\n : merge === true ? mergeTrueFn\n // Pass merge:false to make incoming always replace existing\n // without any warnings about data clobbering.\n : merge === false ? mergeFalseFn\n : existing.merge;\n }\n // Type policies can define merge functions, as an alternative to\n // using field policies to merge child objects.\n setMerge(existing, incoming.merge);\n existing.keyFn =\n // Pass false to disable normalization for this typename.\n keyFields === false ? nullKeyFieldsFn\n // Pass an array of strings to use those fields to compute a\n // composite ID for objects of this typename.\n : isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields)\n // Pass a function to take full control over identification.\n : typeof keyFields === \"function\" ? keyFields\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n // Pass false to disable argument-based differentiation of\n // field identities.\n keyArgs === false ? simpleKeyArgsFn\n // Pass an array of strings to use named arguments to\n // compute a composite identity for the field.\n : isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs)\n // Pass a function to take full control over field identity.\n : typeof keyArgs === \"function\" ? keyArgs\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n // If we have both a read and a merge function, assume\n // keyArgs:false, because read and merge together can take\n // responsibility for interpreting arguments in and out. This\n // default assumption can always be overridden by specifying\n // keyArgs explicitly in the FieldPolicy.\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n invariant(!old || old === which, 5, which);\n // First, delete any old __typename associated with this rootId from\n // rootIdsByTypename.\n if (old)\n delete this.rootIdsByTypename[old];\n // Now make this the only __typename that maps to this rootId.\n this.rootIdsByTypename[typename] = rootId;\n // Finally, update the __typename associated with this rootId.\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n // Make sure all types have an entry in this.supertypeMap, even if\n // their supertype set is empty, so we can return false immediately\n // from policies.fragmentMatches for unknown supertypes.\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n // TODO Don't interpret just any invalid typename as a RegExp.\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = (this.typePolicies[typename] = Object.create(null));\n policy_1.fields = Object.create(null);\n // When the TypePolicy for typename is first accessed, instead of\n // starting with an empty policy object, inherit any properties or\n // fields from the type policies of the supertypes of typename.\n //\n // Any properties or fields defined explicitly within the TypePolicy\n // for typename will take precedence, and if there are multiple\n // supertypes, the properties of policies whose types were added\n // later via addPossibleTypes will take precedence over those of\n // earlier supertypes. TODO Perhaps we should warn about these\n // conflicts in development, and recommend defining the property\n // explicitly in the subtype policy?\n //\n // Field policy inheritance is atomic/shallow: you can't inherit a\n // field policy and then override just its read function, since read\n // and merge functions often need to cooperate, so changing only one\n // of them would be a recipe for inconsistency.\n //\n // Once the TypePolicy for typename has been accessed, its properties can\n // still be updated directly using addTypePolicies, but future changes to\n // inherited supertype policies will not be reflected in this subtype\n // policy, because this code runs at most once per typename.\n var supertypes_1 = this.supertypeMap.get(typename);\n if (!supertypes_1 && this.fuzzySubtypes.size) {\n // To make the inheritance logic work for unknown typename strings that\n // may have fuzzy supertypes, we give this typename an empty supertype\n // set and then populate it with any fuzzy supertypes that match.\n supertypes_1 = this.getSupertypeSet(typename, true);\n // This only works for typenames that are directly matched by a fuzzy\n // supertype. What if there is an intermediate chain of supertypes?\n // While possible, that situation can only be solved effectively by\n // specifying the intermediate relationships via possibleTypes, manually\n // and in a non-fuzzy way.\n this.fuzzySubtypes.forEach(function (regExp, fuzzy) {\n if (regExp.test(typename)) {\n // The fuzzy parameter is just the original string version of regExp\n // (not a valid __typename string), but we can look up the\n // associated supertype(s) in this.supertypeMap.\n var fuzzySupertypes = _this.supertypeMap.get(fuzzy);\n if (fuzzySupertypes) {\n fuzzySupertypes.forEach(function (supertype) {\n return supertypes_1.add(supertype);\n });\n }\n }\n });\n }\n if (supertypes_1 && supertypes_1.size) {\n supertypes_1.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n // Merge the pending policies into this.typePolicies, in the order they\n // were originally passed to addTypePolicy.\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return (fieldPolicies[fieldName] ||\n (createIfMissing && (fieldPolicies[fieldName] = Object.create(null))));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, (supertypeSet = new Set()));\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n // If the fragment has a type condition but the object we're matching\n // against does not have a __typename, the fragment cannot match.\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n // Common case: fragment type condition and __typename are the same.\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes && this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n // We need to check fuzzy subtypes only if we encountered fuzzy\n // subtype strings in addPossibleTypes, and only while writing to\n // the cache, since that's when selectionSetMatchesResult gives a\n // strong signal of fragment matching. The StoreReader class calls\n // policies.fragmentMatches without passing a result object, so\n // needToCheckFuzzySubtypes is always false while reading.\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n // It's important to keep evaluating workQueue.length each time through\n // the loop, because the queue can grow while we're iterating over it.\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n globalThis.__DEV__ !== false && invariant.warn(6, typename, supertype);\n }\n // Record positive results for faster future lookup.\n // Unfortunately, we cannot safely cache negative results,\n // because new possibleTypes data could always be added to the\n // Policies class.\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n // Start checking fuzzy subtypes only after exhausting all\n // non-fuzzy subtypes (after the final iteration of the loop).\n i === workQueue_1.length - 1 &&\n // We could wait to compare fragment.selectionSet to result\n // after we verify the supertype, but this check is often less\n // expensive than that search, and we will have to do the\n // comparison anyway whenever we find a potential match.\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n // We don't always need to check fuzzy subtypes (if no result\n // was provided, or !this.fuzzySubtypes.size), but, when we do,\n // we only want to check them once.\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n // If we find any fuzzy subtypes that match typename, extend the\n // workQueue to search through the supertypes of those fuzzy\n // subtypes. Otherwise the for-loop will terminate and we'll\n // return false below.\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n // If the custom keyFn returns a falsy value, fall back to\n // fieldName instead.\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName =\n fieldSpec.field ?\n storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n // Returning false from a keyArgs function is like configuring\n // keyArgs: false, but more dynamic.\n if (storeFieldName === false) {\n return fieldName;\n }\n // Make sure custom field names start with the actual field.name.value\n // of the field, so we can always figure out which properties of a\n // StoreObject correspond to which original field names.\n return fieldName === fieldNameFromStoreName(storeFieldName) ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference) ?\n objectOrReference.__ref\n : objectOrReference, storeFieldName));\n // Call read(existing, readOptions) with cacheSlot holding this.cache.\n return cacheSlot.withValue(this.cache, read, [\n existing,\n readOptions,\n ]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n // Instead of going to the trouble of creating a full\n // FieldFunctionOptions object and calling mergeTrueFn, we can\n // simply call mergeObjects, as mergeTrueFn would.\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n // Likewise for mergeFalseFn, whose implementation is even simpler.\n return incoming;\n }\n // If cache.writeQuery or cache.writeFragment was called with\n // options.overwrite set to true, we still call merge functions, but\n // the existing data is always undefined, so the merge function will\n // not attempt to combine the incoming data with the existing data.\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, \n // Unlike options.readField for read functions, we do not fall\n // back to the current object if no foreignObjOrRef is provided,\n // because it's not clear what the current object should be for\n // merge functions: the (possibly undefined) existing object, or\n // the incoming object? If you think your merge function needs\n // to read sibling fields in order to produce a new value for\n // the current field, you might want to rethink your strategy,\n // because that's a recipe for making merge behavior sensitive\n // to the order in which fields are written into the cache.\n // However, readField(name, ref) is useful for merge functions\n // that need to deduplicate child objects and references.\n void 0, {\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n // Default to objectOrReference only when no second argument was\n // passed for the from parameter, not when undefined is explicitly\n // passed as the second argument.\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n // Default to objectOrReference only when fieldNameOrOptions.from is\n // actually omitted, rather than just undefined.\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (globalThis.__DEV__ !== false && options.from === void 0) {\n globalThis.__DEV__ !== false && invariant.warn(7, stringifyForDisplay(Array.from(readFieldArgs)));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw newInvariantError(8);\n }\n // These dynamic checks are necessary because the parameters of a\n // custom merge function can easily have the any type, so the type\n // system cannot always enforce the StoreObject | Reference parameter\n // types of options.mergeObjects.\n if (isNonNullObject(existing) && isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) && storeValueIsStoreObject(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // existing.__ref, preferring/overwriting any fields contributed by the\n // newer incoming StoreObject.\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) && isReference(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // incoming.__ref, taking fields from the older existing object only if\n // those fields are not already present in the newer StoreObject\n // identified by incoming.__ref.\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { Kind } from \"graphql\";\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, canonicalStringify, } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext, } from \"./helpers.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n// Since there are only four possible combinations of context.clientOnly and\n// context.deferred values, we should need at most four \"flavors\" of any given\n// WriteContext. To avoid creating multiple copies of the same context, we cache\n// the contexts in the context.flavors Map (shared by all flavors) according to\n// their clientOnly and deferred values (always in that order).\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, (flavored =\n context.clientOnly === clientOnly && context.deferred === deferred ?\n context\n : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred })));\n }\n return flavored;\n}\nvar StoreWriter = /** @class */ (function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n }, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map(), clientOnly: false, deferred: false, flavors: new Map() });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map() },\n context: context,\n });\n if (!isReference(ref)) {\n throw newInvariantError(11, result);\n }\n // So far, the store has not been modified, so now it's time to process\n // context.incomingById and merge those incoming fields into context.store.\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n // Assume References returned by applyMerges have already been merged\n // into the store. See makeMergeObjectsFunction in policies.ts for an\n // example of how this can happen.\n return;\n }\n // Otherwise, applyMerges returned a StoreObject, whose fields we should\n // merge into the store (see store.merge statement below).\n storeObject = applied;\n }\n if (globalThis.__DEV__ !== false && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] ===\n true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n // If a merge function was defined for this field, trust that it\n // did the right thing about (not) clobbering data. If the field\n // has no selection set, it's a scalar field, so it doesn't need\n // a merge function (even if it's an object, like JSON data).\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n // Any IDs written explicitly to the cache will be retained as\n // reachable root IDs for garbage collection purposes. Although this\n // logic includes root IDs like ROOT_QUERY and ROOT_MUTATION, their\n // retainment counts are effectively ignored because cache.gc() always\n // includes them in its root ID set.\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, \n // This object allows processSelectionSet to report useful information\n // to its callers without explicitly returning that information.\n mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n // This variable will be repeatedly updated using context.merge to\n // accumulate all fields that need to be written into the store.\n var incoming = Object.create(null);\n // If typename was not passed in, infer it. Note that typename is\n // always passed in for tricky-to-infer cases such as \"Query\" for\n // ROOT_QUERY.\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n // This readField function will be passed as context.readField in the\n // KeyFieldsContext object created within policies.identify (called below).\n // In addition to reading from the existing context.store (thanks to the\n // policies.readField(options, context) line at the very bottom), this\n // version of readField can read from Reference objects that are currently\n // pending in context.incomingById, which is important whenever keyFields\n // need to be extracted from a child object that processSelectionSet has\n // turned into a Reference.\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, \n // This WriteContext will be the default context value for fields returned\n // by the flattenFields method, but some fields may be assigned a modified\n // context, depending on the presence of @client and other directives.\n context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, \n // Reset context.clientOnly and context.deferred to their default\n // values before processing nested selection sets.\n field.selectionSet ?\n getContextFlavor(context, false, false)\n : context, childTree);\n // To determine if this field holds a child object with a merge function\n // defined in its type policy (see PR #7070), we need to figure out the\n // child object's __typename.\n var childTypename = void 0;\n // The field's value can be an object that has a __typename only if the\n // field has a selection set. Otherwise incomingValue is scalar.\n if (field.selectionSet &&\n (isReference(incomingValue) || storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n // TODO Check compatibility against any existing childTree.field?\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (globalThis.__DEV__ !== false &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n // If the field has a read function, it may be a synthetic field or\n // provide a default value, so its absence from the written data should\n // not be cause for alarm.\n !policies.getReadFunction(typename, field.name.value)) {\n globalThis.__DEV__ !== false && invariant.error(12, resultKeyNameFromField(field), result);\n }\n });\n // Identify the result object, even if dataId was already provided,\n // since we always need keyObject below.\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n // If dataId was not provided, fall back to the id just generated by\n // policies.identify.\n dataId = dataId || id;\n // Write any key fields that were used during identification, even if\n // they were not mentioned in the original query.\n if (keyObject) {\n // TODO Reverse the order of the arguments?\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n // If dataId was provided, tolerate failure of policies.identify.\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n // Avoid processing the same entity object using the same selection\n // set more than once. We use an array instead of a Set since most\n // entity IDs will be written using only one selection set, so the\n // size of this array is likely to be very small, meaning indexOf is\n // likely to be faster than Set.prototype.has.\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n // If we're about to write a result object into the store, but we\n // happen to know that the exact same (===) result object would be\n // returned if we were to reread the result with the same inputs,\n // then we can skip the rest of the processSelectionSet work for\n // this object, and immediately return a Reference to it.\n if (this.reader &&\n this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n // Save a reference to mergeTree only if it is not empty, because\n // empty MergeTrees may be recycled by maybeRecycleChildMergeTree and\n // reused for entirely different parts of the result tree.\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n // In development, we need to clone scalar values so that they can be\n // safely frozen with maybeDeepFreeze in readFromStore.ts. In production,\n // it's cheaper to store the scalar values directly in the cache.\n return globalThis.__DEV__ !== false ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n // Implements https://spec.graphql.org/draft/#sec-Field-Collection, but with\n // some additions for tracking @client and @defer directives.\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false); // No need for WeakMap, since limitingTrie does not escape.\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, \n // Because we take inheritedClientOnly and inheritedDeferred into\n // consideration here (in addition to selectionSet), it's possible for\n // the same selection set to be flattened more than once, if it appears\n // in the query with different @client and/or @directive configurations.\n inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (\n // Since the presence of @client or @defer on this field can only\n // cause clientOnly or deferred to become true, we can skip the\n // forEach loop if both clientOnly and deferred are already true.\n !(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n // The @defer directive takes an optional args.if boolean\n // argument, similar to @include(if: boolean). Note that\n // @defer(if: false) does not make context.deferred false, but\n // instead behaves as if there was no @defer directive.\n if (!args || args.if !== false) {\n deferred = true;\n }\n // TODO In the future, we may want to record args.label using\n // context.deferred, if a label is specified.\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n // If this field has been visited along another recursive path\n // before, the final context should have clientOnly or deferred set\n // to true only if *all* paths have the directive (hence the &&).\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(13, selection.name.value);\n }\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = \n // Items in the same position in different arrays are not\n // necessarily related to each other, so when incoming is an array\n // we process its elements as if there was no existing data.\n (!isArray(incoming) &&\n // Likewise, existing must be either a Reference or a StoreObject\n // in order for its fields to be safe to merge with the fields of\n // the incoming object.\n (isReference(existing) || storeValueIsStoreObject(existing))) ?\n existing\n : void 0;\n // This narrowing is implied by mergeTree.map.size > 0 and\n // !isReference(incoming), though TypeScript understandably cannot\n // hope to infer this type.\n var i_1 = incoming;\n // The options.storage objects provided to read and merge functions\n // are derived from the identity of the parent object plus a\n // sequence of storeFieldName strings/numbers identifying the nested\n // field name path of each field value to be merged.\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n // It's possible that applying merge functions to this subtree will\n // not change the incoming data, so this variable tracks the fields\n // that did change, so we can create a new incoming object when (and\n // only when) at least one incoming field has changed. We use a Map\n // to preserve the type of numeric keys.\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return (isArray(from) ?\n typeof name === \"number\" ?\n from[name]\n : void 0\n : context.store.getFieldValue(from, String(name)));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n // If we have no incoming data, leave any existing data untouched.\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map();\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n // Shallow clone i so we can add changed fields to it.\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map() });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map()\n : left.map.size ? left.map\n : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\n// Note that this function is unused in production, and thus should be\n// pruned by any well-configured minifier.\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n // It's always safe to replace a reference, since it refers to data\n // safely stored elsewhere.\n if (isReference(existing))\n return;\n // If the values are structurally equivalent, we do not need to worry\n // about incoming replacing existing.\n if (equal(existing, incoming))\n return;\n // If we're replacing every key of the existing object, then the\n // existing data would be overwritten even if the objects were\n // normalized, so warning would not be helpful here.\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n // Avoid warning more than once for the same type and field name.\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n // Arrays do not have __typename fields, and always need a custom merge\n // function, even if their elements are normalized entities.\n if (!isArray(existing) && !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" && !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n globalThis.__DEV__ !== false && invariant.warn(14, fieldName, parentType, childTypenames.length ?\n \"either ensure all objects of type \" +\n childTypenames.join(\" and \") +\n \" have an ID or a custom merge function, or \"\n : \"\", typeDotName, existing, incoming);\n}\n","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\n// Make builtins like Map and Set safe to use with non-extensible objects.\nimport \"./fixPolyfills.js\";\nimport { wrap } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, DocumentTransform, canonicalStringify, print, cacheSizes, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { getInMemoryCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nvar InMemoryCache = /** @class */ (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.addTypenameTransform = new DocumentTransform(addTypenameToDocument);\n // Override the default value, since InMemoryCache result objects are frozen\n // in development and expected to remain logically immutable in production.\n _this.assumeImmutableResults = true;\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n // Passing { resultCaching: false } in the InMemoryCache constructor options\n // will completely disable dependency tracking, which will improve memory\n // usage but worsen the performance of repeated reads.\n var rootStore = (this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n }));\n // When no optimistic writes are currently active, cache.optimisticData ===\n // cache.data, so there are no additional layers on top of the actual data.\n // When an optimistic update happens, this.optimisticData will become a\n // linked list of EntityStore Layer objects that terminates with the\n // original this.data cache object.\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n // The StoreWriter is mostly stateless and so doesn't really need to be\n // reset, but it does need to have its writer.storeReader reference updated,\n // so it's simpler to update this.storeWriter as well.\n this.storeWriter = new StoreWriter(this, (this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities ? void 0 : (previousReader && previousReader.canon),\n fragments: fragments,\n })), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] ||\n 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n makeCacheKey: function (c) {\n // Return a cache key (thus enabling result caching) only if we're\n // currently using a data store that can track cache dependencies.\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, id = c.id, variables = c.variables;\n return store.makeCacheKey(c.query, \n // Different watches can have the same query, optimistic\n // status, rootId, and variables, but if their callbacks are\n // different, the (identical) result needs to be delivered to\n // each distinct callback. The easiest way to achieve that\n // separation is to include c.callback in the cache key for\n // maybeBroadcastWatch calls. See issue #5733.\n c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));\n }\n },\n });\n // Since we have thrown away all the cached functions that depend on the\n // CacheGroup dependencies maintained by EntityStore, we should also reset\n // all CacheGroup dependency information.\n new Set([this.data.group, this.optimisticData.group]).forEach(function (group) {\n return group.resetCaching();\n });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n // Since calling this.init() discards/replaces the entire StoreReader, along\n // with the result caches it maintains, this.data.replace(data) won't have\n // to bother deleting the old data.\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n _a = options.returnPartialData, \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n returnPartialData = _a === void 0 ? false : _a;\n try {\n return (this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null);\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n // Swallow MissingFieldError and return null, so callers do not need to\n // worry about catching \"normal\" exceptions resulting from incomplete\n // cache data. Unexpected errors will be re-thrown. If you need more\n // information about which fields were missing, use cache.diff instead,\n // and examine diffResult.missing.\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n // To my knowledge, TypeScript does not currently provide a way to\n // enforce that an optional property?:type must *not* be undefined\n // when present. That ability would be useful here, because we want\n // options.id to default to ROOT_QUERY only when no options.id was\n // provided. If the caller attempts to pass options.id with a\n // falsy/undefined value (perhaps because cache.identify failed), we\n // should not assume the goal was to modify the ROOT_QUERY object.\n // We could throw, but it seems natural to return false to indicate\n // that nothing was modified.\n return false;\n }\n var store = ((options.optimistic) // Defaults to false.\n ) ?\n this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n // In case we previously called forgetCache(this) because\n // this.watches became empty (see below), reattach this cache to any\n // reactive variables on which it previously depended. It might seem\n // paradoxical that we're able to recall something we supposedly\n // forgot, but the point of calling forgetCache(this) is to silence\n // useless broadcasts while this.watches is empty, and to allow the\n // cache to be garbage collected. If, however, we manage to call\n // recallCache(this) here, this cache object must not have been\n // garbage collected yet, and should resume receiving updates from\n // reactive variables, now that it has a watcher to notify.\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n // Once we remove the last watch from this.watches, cache.broadcastWatches\n // no longer does anything, so we preemptively tell the reactive variable\n // system to exclude this cache from future broadcasts.\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n // Remove this watch from the LRU cache managed by the\n // maybeBroadcastWatch OptimisticWrapperFunction, to prevent memory\n // leaks involving the closure of watch.callback.\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n var _a;\n canonicalStringify.reset();\n print.reset();\n this.addTypenameTransform.resetCache();\n (_a = this.config.fragments) === null || _a === void 0 ? void 0 : _a.resetCaches();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n // Call this method to ensure the given root ID remains in the cache after\n // garbage collection, along with its transitive child entities. Note that\n // the cache automatically retains all directly written entities. By default,\n // the retainment persists after optimistic updates are removed. Pass true\n // for the optimistic argument if you would prefer for the retainment to be\n // discarded when the top-most optimistic layer is removed. Returns the\n // resulting (non-negative) retainment count.\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n // Call this method to undo the effect of the retain method, above. Once the\n // retainment count falls to zero, the given ID will no longer be preserved\n // during garbage collection, though it may still be preserved by other safe\n // entities that refer to it. Returns the resulting (non-negative) retainment\n // count, in case that's useful.\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n // Returns the canonical ID for a given StoreObject, obeying typePolicies\n // and keyFields (and dataIdFromObject, if you still use that). At minimum,\n // the object must contain a __typename and any primary key fields required\n // to identify entities of that type. If you pass a query result object, be\n // sure that none of the primary key fields have been renamed by aliasing.\n // If you pass a Reference object, its __ref ID string will be returned.\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n globalThis.__DEV__ !== false && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n // See comment in modify method about why we return false when\n // options.id exists but is falsy/undefined.\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n // It's unlikely that the eviction will end up invoking any other\n // cache update operations while it's running, but {in,de}crementing\n // this.txCount still seems like a good idea, for uniformity with\n // the other update methods.\n ++this.txCount;\n // Pass this.data as a limit on the depth of the eviction, so evictions\n // during optimistic updates (when this.data is temporarily set equal to\n // this.optimisticData) do not escape their optimistic Layer.\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n // Similar to what happens in the unsubscribe function returned by\n // cache.watch, applied to all current watches.\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n // Calling this.init() above unblocks all maybeBroadcastWatch caching, so\n // this.broadcastWatches() triggers a broadcast to every current watcher\n // (letting them know their data is now missing). This default behavior is\n // convenient because it means the watches do not have to be manually\n // reestablished after resetting the cache. To prevent this broadcast and\n // cancel all watches, pass true for options.discardWatches.\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return (updateResult = update(_this));\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n // If an options.onWatchUpdated callback is provided, we want to call it\n // with only the Cache.WatchOptions objects affected by options.update,\n // but there might be dirty watchers already waiting to be broadcast that\n // have nothing to do with the update. To prevent including those watchers\n // in the post-update broadcast, we perform this initial broadcast to\n // collect the dirty watchers, so we can re-dirty them later, after the\n // post-update broadcast, allowing them to receive their pending\n // broadcasts the next time broadcastWatches is called, just as they would\n // if we never called cache.batch.\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === \"string\") {\n // Note that there can be multiple layers with the same optimistic ID.\n // When removeOptimistic(id) is called for that id, all matching layers\n // will be removed, and the remaining layers will be reapplied.\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n // Ensure both this.data and this.optimisticData refer to the root\n // (non-optimistic) layer of the cache during the update. Note that\n // this.data could be a Layer if we are currently executing an optimistic\n // update function, but otherwise will always be an EntityStore.Root\n // instance.\n perform(this.data);\n }\n else {\n // Otherwise, leave this.data and this.optimisticData unchanged and run\n // the update with broadcast batching.\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n // Note: if this.txCount > 0, then alreadyDirty.size === 0, so this code\n // takes the else branch and calls this.broadcastWatches(options), which\n // does nothing when this.txCount > 0.\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n // Since onWatchUpdated did not return false, this diff is\n // about to be broadcast to watch.callback, so we don't need\n // to re-dirty it with the other alreadyDirty watches below.\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n // Silently re-dirty any watches that were already dirty before the update\n // was performed, and were not broadcast just now.\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n // If alreadyDirty is empty or we don't have an onWatchUpdated\n // function, we don't need to go to the trouble of wrapping\n // options.onWatchUpdated.\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || optimisticId !== null,\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n return this.addTypenameToDocument(this.addFragmentsToDocument(document));\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.addFragmentsToDocument = function (document) {\n var fragments = this.config.fragments;\n return fragments ? fragments.transform(document) : document;\n };\n InMemoryCache.prototype.addTypenameToDocument = function (document) {\n if (this.addTypename) {\n return this.addTypenameTransform.transformDocument(document);\n }\n return document;\n };\n // This method is wrapped by maybeBroadcastWatch, which is called by\n // broadcastWatches, so that we compute and broadcast results only when\n // the data that would be broadcast might have changed. It would be\n // simpler to check for changes after recomputing a result but before\n // broadcasting it, but this wrapping approach allows us to skip both\n // the recomputation and the broadcast, in most cases.\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n // Both WatchOptions and DiffOptions extend ReadOptions, and DiffOptions\n // currently requires no additional properties, so we can use c (a\n // WatchOptions object) as DiffOptions, without having to allocate a new\n // object, and without having to enumerate the relevant properties (query,\n // variables, etc.) explicitly. There will be some additional properties\n // (lastDiff, callback, etc.), but cache.diff ignores them.\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic && typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n // Returning false from the onWatchUpdated callback will prevent\n // calling c.callback(diff) for this watcher.\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback((c.lastDiff = diff), lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\nif (globalThis.__DEV__ !== false) {\n InMemoryCache.prototype.getMemoryInternals = getInMemoryCacheMemoryInternals;\n}\n","export const errorCodes = // This file is used by the error message display website and the\n// @apollo/client/includeErrors entry point.\n// This file is not meant to be imported manually.\n{\n 1: {\n file: \"@apollo/client/cache/inmemory/entityStore.js\",\n condition: \"typeof dataId === \\\"string\\\"\",\n message: \"store.merge expects a string ID\"\n },\n\n 4: {\n file: \"@apollo/client/cache/inmemory/key-extractor.js\",\n condition: \"extracted !== void 0\",\n message: \"Missing field '%s' while extracting keyFields from %s\"\n },\n\n 5: {\n file: \"@apollo/client/cache/inmemory/policies.js\",\n condition: \"!old || old === which\",\n message: \"Cannot change root %s __typename more than once\"\n },\n\n 8: {\n file: \"@apollo/client/cache/inmemory/policies.js\",\n message: \"Cannot automatically merge arrays\"\n },\n\n 9: {\n file: \"@apollo/client/cache/inmemory/readFromStore.js\",\n message: \"No fragment named %s\"\n },\n\n 10: {\n file: \"@apollo/client/cache/inmemory/readFromStore.js\",\n condition: \"!isReference(value)\",\n message: \"Missing selection set for object of type %s returned for query field %s\"\n },\n\n 11: {\n file: \"@apollo/client/cache/inmemory/writeToStore.js\",\n message: \"Could not identify object %s\"\n },\n\n 13: {\n file: \"@apollo/client/cache/inmemory/writeToStore.js\",\n message: \"No fragment named %s\"\n },\n\n 15: {\n file: \"@apollo/client/core/ApolloClient.js\",\n\n message: \"To initialize Apollo Client, you must specify a 'cache' property \" +\n \"in the options object. \\n\" +\n \"For more information, please visit: https://go.apollo.dev/c/docs\"\n },\n\n 16: {\n file: \"@apollo/client/core/ApolloClient.js\",\n condition: \"options.fetchPolicy !== \\\"cache-and-network\\\"\",\n\n message: \"The cache-and-network fetchPolicy does not work with client.query, because \" +\n \"client.query can only return a single result. Please use client.watchQuery \" +\n \"to receive multiple results from the cache and the network, or consider \" +\n \"using a different fetchPolicy, such as cache-first or network-only.\"\n },\n\n 18: {\n file: \"@apollo/client/core/LocalState.js\",\n condition: \"fragment\",\n message: \"No fragment named %s\"\n },\n\n 19: {\n file: \"@apollo/client/core/LocalState.js\",\n condition: \"fragment\",\n message: \"No fragment named %s\"\n },\n\n 22: {\n file: \"@apollo/client/core/ObservableQuery.js\",\n condition: \"pollInterval\",\n message: \"Attempted to start a polling query without a polling interval.\"\n },\n\n 25: {\n file: \"@apollo/client/core/QueryManager.js\",\n message: \"QueryManager stopped while query was in flight\"\n },\n\n 26: {\n file: \"@apollo/client/core/QueryManager.js\",\n condition: \"mutation\",\n message: \"mutation option is required. You must specify your GraphQL document in the mutation option.\"\n },\n\n 27: {\n file: \"@apollo/client/core/QueryManager.js\",\n condition: \"fetchPolicy === \\\"network-only\\\" || fetchPolicy === \\\"no-cache\\\"\",\n message: \"Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.\"\n },\n\n 28: {\n file: \"@apollo/client/core/QueryManager.js\",\n condition: \"options.query\",\n\n message: \"query option is required. You must specify your GraphQL document \" +\n \"in the query option.\"\n },\n\n 29: {\n file: \"@apollo/client/core/QueryManager.js\",\n condition: \"options.query.kind === \\\"Document\\\"\",\n message: 'You must wrap the query string in a \"gql\" tag.'\n },\n\n 30: {\n file: \"@apollo/client/core/QueryManager.js\",\n condition: \"!options.returnPartialData\",\n message: \"returnPartialData option only supported on watchQuery.\"\n },\n\n 31: {\n file: \"@apollo/client/core/QueryManager.js\",\n condition: \"!options.pollInterval\",\n message: \"pollInterval option only supported on watchQuery.\"\n },\n\n 32: {\n file: \"@apollo/client/core/QueryManager.js\",\n message: \"Store reset while query was in flight (not completed in link chain)\"\n },\n\n 36: {\n file: \"@apollo/client/link/core/ApolloLink.js\",\n message: \"request is not implemented\"\n },\n\n 37: {\n file: \"@apollo/client/link/http/checkFetcher.js\",\n message: \"\\n\\\"fetch\\\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\\n\\nimport fetch from 'cross-fetch';\\nimport { ApolloClient, HttpLink } from '@apollo/client';\\nconst client = new ApolloClient({\\n link: new HttpLink({ uri: '/graphql', fetch })\\n});\\n \"\n },\n\n 39: {\n file: \"@apollo/client/link/http/serializeFetchParameter.js\",\n message: \"Network request failed. %s is not serializable: %s\"\n },\n\n 40: {\n file: \"@apollo/client/link/persisted-queries/index.js\",\n condition: \"options &&\\n (typeof options.sha256 === \\\"function\\\" ||\\n typeof options.generateHash === \\\"function\\\")\",\n\n message: 'Missing/invalid \"sha256\" or \"generateHash\" function. Please ' +\n 'configure one using the \"createPersistedQueryLink(options)\" options ' +\n \"parameter.\"\n },\n\n 41: {\n file: \"@apollo/client/link/persisted-queries/index.js\",\n condition: \"forward\",\n message: \"PersistedQueryLink cannot be the last link in the chain.\"\n },\n\n 43: {\n file: \"@apollo/client/link/utils/validateOperation.js\",\n message: \"illegal argument: %s\"\n },\n\n 44: {\n file: \"@apollo/client/react/context/ApolloConsumer.js\",\n condition: \"context && context.client\",\n\n message: 'Could not find \"client\" in the context of ApolloConsumer. ' +\n \"Wrap the root component in an .\"\n },\n\n 45: {\n file: \"@apollo/client/react/context/ApolloContext.js\",\n condition: \"\\\"createContext\\\" in React\",\n\n message: \"Invoking `getApolloContext` in an environment where `React.createContext` is not available.\\n\" +\n \"The Apollo Client functionality you are trying to use is only available in React Client Components.\\n\" +\n 'Please make sure to add \"use client\" at the top of your file.\\n' +\n // TODO: change to React documentation once React documentation contains information about Client Components\n \"For more information, see https://nextjs.org/docs/getting-started/react-essentials#client-components\"\n },\n\n 46: {\n file: \"@apollo/client/react/context/ApolloProvider.js\",\n condition: \"context.client\",\n\n message: \"ApolloProvider was not passed a client instance. Make \" +\n 'sure you pass in your client via the \"client\" prop.'\n },\n\n 47: {\n file: \"@apollo/client/react/hoc/hoc-utils.js\",\n condition: \"this.withRef\",\n\n message: \"To access the wrapped instance, you need to specify \" +\n \"{ withRef: true } in the options\"\n },\n\n 48: {\n file: \"@apollo/client/react/hoc/withApollo.js\",\n condition: \"operationOptions.withRef\",\n\n message: \"To access the wrapped instance, you need to specify \" +\n \"{ withRef: true } in the options\"\n },\n\n 49: {\n file: \"@apollo/client/react/hooks/useApolloClient.js\",\n condition: \"!!client\",\n\n message: 'Could not find \"client\" in the context or passed in as an option. ' +\n \"Wrap the root component in an , or pass an ApolloClient \" +\n \"instance in via options.\"\n },\n\n 50: {\n file: \"@apollo/client/react/hooks/useLoadableQuery.js\",\n condition: \"!calledDuringRender()\",\n message: \"useLoadableQuery: 'loadQuery' should not be called during render. To start a query during render, use the 'useBackgroundQuery' hook.\"\n },\n\n 56: {\n file: \"@apollo/client/react/hooks/useSuspenseQuery.js\",\n condition: \"supportedFetchPolicies.includes(fetchPolicy)\",\n message: \"The fetch policy `%s` is not supported with suspense.\"\n },\n\n 59: {\n file: \"@apollo/client/react/parser/index.js\",\n condition: \"!!document && !!document.kind\",\n\n message: \"Argument of %s passed to parser was not a valid GraphQL \" +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\"\n },\n\n 60: {\n file: \"@apollo/client/react/parser/index.js\",\n condition: \"!fragments.length ||\\n queries.length ||\\n mutations.length ||\\n subscriptions.length\",\n\n message: \"Passing only a fragment to 'graphql' is not yet supported. \" +\n \"You must include a query, subscription or mutation as well\"\n },\n\n 61: {\n file: \"@apollo/client/react/parser/index.js\",\n condition: \"queries.length + mutations.length + subscriptions.length <= 1\",\n\n message: \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n \"%s had %s queries, %s \" +\n \"subscriptions and %s mutations. \" +\n \"You can use 'compose' to join multiple operation types to a component\"\n },\n\n 62: {\n file: \"@apollo/client/react/parser/index.js\",\n condition: \"definitions.length === 1\",\n\n message: \"react-apollo only supports one definition per HOC. %s had \" +\n \"%s definitions. \" +\n \"You can use 'compose' to join multiple operation types to a component\"\n },\n\n 63: {\n file: \"@apollo/client/react/parser/index.js\",\n condition: \"operation.type === type\",\n message: \"Running a %s requires a graphql \" + \"%s, but a %s was used instead.\"\n },\n\n 64: {\n file: \"@apollo/client/testing/core/mocking/mockLink.js\",\n condition: \"queryWithoutConnection\",\n message: \"query is required\"\n },\n\n 65: {\n file: \"@apollo/client/testing/core/mocking/mockLink.js\",\n condition: \"mockedResponse.maxUsageCount > 0\",\n message: \"Mock response maxUsageCount must be greater than 0, %s given\"\n },\n\n 66: {\n file: \"@apollo/client/utilities/graphql/DocumentTransform.js\",\n condition: \"Array.isArray(cacheKeys)\",\n message: \"`getCacheKey` must return an array or undefined\"\n },\n\n 67: {\n file: \"@apollo/client/utilities/graphql/directives.js\",\n condition: \"evaledValue !== void 0\",\n message: \"Invalid variable referenced in @%s directive.\"\n },\n\n 68: {\n file: \"@apollo/client/utilities/graphql/directives.js\",\n condition: \"directiveArguments && directiveArguments.length === 1\",\n message: \"Incorrect number of arguments for the @%s directive.\"\n },\n\n 69: {\n file: \"@apollo/client/utilities/graphql/directives.js\",\n condition: \"ifArgument.name && ifArgument.name.value === \\\"if\\\"\",\n message: \"Invalid argument for the @%s directive.\"\n },\n\n 70: {\n file: \"@apollo/client/utilities/graphql/directives.js\",\n condition: \"ifValue &&\\n (ifValue.kind === \\\"Variable\\\" || ifValue.kind === \\\"BooleanValue\\\")\",\n message: \"Argument for the @%s directive must be a variable or a boolean value.\"\n },\n\n 71: {\n file: \"@apollo/client/utilities/graphql/fragments.js\",\n\n message: \"Found a %s operation%s. \" +\n \"No operations are allowed when using a fragment as a query. Only fragments are allowed.\"\n },\n\n 72: {\n file: \"@apollo/client/utilities/graphql/fragments.js\",\n condition: \"fragments.length === 1\",\n message: \"Found %s fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\"\n },\n\n 73: {\n file: \"@apollo/client/utilities/graphql/fragments.js\",\n condition: \"fragment\",\n message: \"No fragment named %s\"\n },\n\n 74: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n condition: \"doc && doc.kind === \\\"Document\\\"\",\n message: \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\"\n },\n\n 75: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n message: \"Schema type definitions not allowed in queries. Found: \\\"%s\\\"\"\n },\n\n 76: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n condition: \"operations.length <= 1\",\n message: \"Ambiguous GraphQL document: contains %s operations\"\n },\n\n 77: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n condition: \"queryDef && queryDef.operation === \\\"query\\\"\",\n message: \"Must contain a query definition.\"\n },\n\n 78: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n condition: \"doc.kind === \\\"Document\\\"\",\n message: \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\"\n },\n\n 79: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n condition: \"doc.definitions.length <= 1\",\n message: \"Fragment must have exactly one definition.\"\n },\n\n 80: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n condition: \"fragmentDef.kind === \\\"FragmentDefinition\\\"\",\n message: \"Must be a fragment definition.\"\n },\n\n 81: {\n file: \"@apollo/client/utilities/graphql/getFromAST.js\",\n message: \"Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.\"\n },\n\n 82: {\n file: \"@apollo/client/utilities/graphql/storeUtils.js\",\n\n message: \"The inline argument \\\"%s\\\" of kind \\\"%s\\\"\" +\n \"is not supported. Use variables instead of inline arguments to \" +\n \"overcome this limitation.\"\n }\n};\n\nexport const devDebug = {\n 17: {\n file: \"@apollo/client/core/ApolloClient.js\",\n message: \"In client.refetchQueries, Promise.all promise rejected with error %o\"\n },\n\n 24: {\n file: \"@apollo/client/core/ObservableQuery.js\",\n message: \"Missing cache result fields: %o\"\n }\n};\n\nexport const devLog = {};\n\nexport const devWarn = {\n 2: {\n file: \"@apollo/client/cache/inmemory/entityStore.js\",\n\n message: \"cache.modify: You are trying to write a Reference that is not part of the store: %o\\n\" +\n \"Please make sure to set the `mergeIntoStore` parameter to `true` when creating a Reference that is not part of the store yet:\\n\" +\n \"`toReference(object, true)`\"\n },\n\n 3: {\n file: \"@apollo/client/cache/inmemory/entityStore.js\",\n\n message: \"cache.modify: Writing an array with a mix of both References and Objects will not result in the Objects being normalized correctly.\\n\" +\n \"Please convert the object instance %o to a Reference before writing it to the cache by calling `toReference(object, true)`.\"\n },\n\n 6: {\n file: \"@apollo/client/cache/inmemory/policies.js\",\n message: \"Inferring subtype %s of supertype %s\"\n },\n\n 7: {\n file: \"@apollo/client/cache/inmemory/policies.js\",\n message: \"Undefined 'from' passed to readField with arguments %s\"\n },\n\n 14: {\n file: \"@apollo/client/cache/inmemory/writeToStore.js\",\n message: \"Cache data may be lost when replacing the %s field of a %s object.\\n\\nThis could cause additional (usually avoidable) network requests to fetch data that were otherwise cached.\\n\\nTo address this problem (which is not a bug in Apollo Client), %sdefine a custom merge function for the %s field, so InMemoryCache can safely merge these objects:\\n\\n existing: %o\\n incoming: %o\\n\\nFor more information about these options, please refer to the documentation:\\n\\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\"\n },\n\n 20: {\n file: \"@apollo/client/core/ObservableQuery.js\",\n message: \"Called refetch(%o) for query %o, which does not declare a $variables variable.\\nDid you mean to call refetch(variables) instead of refetch({ variables })?\"\n },\n\n 33: {\n file: \"@apollo/client/core/QueryManager.js\",\n message: \"Unknown query named \\\"%s\\\" requested in refetchQueries options.include array\"\n },\n\n 34: {\n file: \"@apollo/client/core/QueryManager.js\",\n message: \"Unknown query %o requested in refetchQueries options.include array\"\n },\n\n 35: {\n file: \"@apollo/client/link/core/ApolloLink.js\",\n message: \"You are calling concat on a terminating link, which will have no effect %o\"\n },\n\n 38: {\n file: \"@apollo/client/link/http/createHttpLink.js\",\n message: \"Multipart-subscriptions do not support @defer\"\n },\n\n 42: {\n file: \"@apollo/client/link/utils/toPromise.js\",\n message: \"Promise Wrapper does not support multiple results from Observable\"\n },\n\n 51: {\n file: \"@apollo/client/react/hooks/useQuery.js\",\n message: \"Calling default no-op implementation of InternalState#forceUpdate\"\n },\n\n 52: {\n file: \"@apollo/client/react/hooks/useSubscription.js\",\n message: \"'useSubscription' supports only the 'onSubscriptionData' or 'onData' option, but not both. Only the 'onData' option will be used.\"\n },\n\n 53: {\n file: \"@apollo/client/react/hooks/useSubscription.js\",\n message: \"'onSubscriptionData' is deprecated and will be removed in a future major version. Please use the 'onData' option instead.\"\n },\n\n 54: {\n file: \"@apollo/client/react/hooks/useSubscription.js\",\n message: \"'useSubscription' supports only the 'onSubscriptionComplete' or 'onComplete' option, but not both. Only the 'onComplete' option will be used.\"\n },\n\n 55: {\n file: \"@apollo/client/react/hooks/useSubscription.js\",\n message: \"'onSubscriptionComplete' is deprecated and will be removed in a future major version. Please use the 'onComplete' option instead.\"\n },\n\n 57: {\n file: \"@apollo/client/react/hooks/useSuspenseQuery.js\",\n message: \"Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.\"\n },\n\n 84: {\n file: \"@apollo/client/utilities/graphql/transform.js\",\n\n message: \"Removing an @connection directive even though it does not have a key. \" +\n \"You may want to use the key parameter to specify a store key.\"\n }\n};\n\nexport const devError = {\n 12: {\n file: \"@apollo/client/cache/inmemory/writeToStore.js\",\n message: \"Missing field '%s' while writing result %o\"\n },\n\n 21: {\n file: \"@apollo/client/core/ObservableQuery.js\",\n message: \"Unhandled GraphQL subscription error\"\n },\n\n 23: {\n file: \"@apollo/client/core/ObservableQuery.js\",\n message: \"Unhandled error\"\n },\n\n 58: {\n file: \"@apollo/client/react/hooks/useSyncExternalStore.js\",\n message: \"The result of getSnapshot should be cached to avoid an infinite loop\"\n },\n\n 83: {\n file: \"@apollo/client/utilities/graphql/transform.js\",\n message: \"Could not find operation or fragment\"\n }\n};\n","import { global } from \"../utilities/globals/index.js\";\nimport { ApolloErrorMessageHandler } from \"../utilities/globals/invariantWrappers.js\";\nimport { setErrorMessageHandler } from \"./setErrorMessageHandler.js\";\n/**\n * Injects Apollo Client's default error message handler into the application and\n * also loads the error codes that are passed in as arguments.\n */\nexport function loadErrorMessageHandler() {\n var errorCodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n errorCodes[_i] = arguments[_i];\n }\n setErrorMessageHandler(handler);\n for (var _a = 0, errorCodes_1 = errorCodes; _a < errorCodes_1.length; _a++) {\n var codes = errorCodes_1[_a];\n Object.assign(handler, codes);\n }\n return handler;\n}\nvar handler = (function (message, args) {\n if (typeof message === \"number\") {\n var definition = global[ApolloErrorMessageHandler][message];\n if (!message || !(definition === null || definition === void 0 ? void 0 : definition.message))\n return;\n message = definition.message;\n }\n return args.reduce(function (msg, arg) { return msg.replace(/%[sdfo]/, String(arg)); }, String(message));\n});\n","import { ApolloLink } from \"./ApolloLink.js\";\nexport var concat = ApolloLink.concat;\n","import { __extends } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nexport function onError(errorHandler) {\n return new ApolloLink(function (operation, forward) {\n return new Observable(function (observer) {\n var sub;\n var retriedSub;\n var retriedResult;\n try {\n sub = forward(operation).subscribe({\n next: function (result) {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation: operation,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: function (networkError) {\n retriedResult = errorHandler({\n operation: operation,\n networkError: networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors: networkError &&\n networkError.result &&\n networkError.result.errors,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: function () {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n }\n catch (e) {\n errorHandler({ networkError: e, operation: operation, forward: forward });\n observer.error(e);\n }\n return function () {\n if (sub)\n sub.unsubscribe();\n if (retriedSub)\n sub.unsubscribe();\n };\n });\n });\n}\nvar ErrorLink = /** @class */ (function (_super) {\n __extends(ErrorLink, _super);\n function ErrorLink(errorHandler) {\n var _this = _super.call(this) || this;\n _this.link = onError(errorHandler);\n return _this;\n }\n ErrorLink.prototype.request = function (operation, forward) {\n return this.link.request(operation, forward);\n };\n return ErrorLink;\n}(ApolloLink));\nexport { ErrorLink };\n","import { __assign } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\n// QueryBatcher doesn't fire requests immediately. Requests that were enqueued within\n// a certain amount of time (configurable through `batchInterval`) will be batched together\n// into one query.\nvar OperationBatcher = /** @class */ (function () {\n function OperationBatcher(_a) {\n var batchDebounce = _a.batchDebounce, batchInterval = _a.batchInterval, batchMax = _a.batchMax, batchHandler = _a.batchHandler, batchKey = _a.batchKey;\n // Queue on which the QueryBatcher will operate on a per-tick basis.\n this.batchesByKey = new Map();\n this.scheduledBatchTimerByKey = new Map();\n this.batchDebounce = batchDebounce;\n this.batchInterval = batchInterval;\n this.batchMax = batchMax || 0;\n this.batchHandler = batchHandler;\n this.batchKey = batchKey || (function () { return \"\"; });\n }\n OperationBatcher.prototype.enqueueRequest = function (request) {\n var _this = this;\n var requestCopy = __assign(__assign({}, request), { next: [], error: [], complete: [], subscribers: new Set() });\n var key = this.batchKey(request.operation);\n if (!requestCopy.observable) {\n requestCopy.observable = new Observable(function (observer) {\n var batch = _this.batchesByKey.get(key);\n if (!batch)\n _this.batchesByKey.set(key, (batch = new Set()));\n // These booleans seem to me (@benjamn) like they might always be the\n // same (and thus we could do with only one of them), but I'm not 100%\n // sure about that.\n var isFirstEnqueuedRequest = batch.size === 0;\n var isFirstSubscriber = requestCopy.subscribers.size === 0;\n requestCopy.subscribers.add(observer);\n if (isFirstSubscriber) {\n batch.add(requestCopy);\n }\n // called for each subscriber, so need to save all listeners (next, error, complete)\n if (observer.next) {\n requestCopy.next.push(observer.next.bind(observer));\n }\n if (observer.error) {\n requestCopy.error.push(observer.error.bind(observer));\n }\n if (observer.complete) {\n requestCopy.complete.push(observer.complete.bind(observer));\n }\n // The first enqueued request triggers the queue consumption after `batchInterval` milliseconds.\n if (isFirstEnqueuedRequest || _this.batchDebounce) {\n _this.scheduleQueueConsumption(key);\n }\n // When amount of requests reaches `batchMax`, trigger the queue consumption without waiting on the `batchInterval`.\n if (batch.size === _this.batchMax) {\n _this.consumeQueue(key);\n }\n return function () {\n var _a;\n // If this is last subscriber for this request, remove request from queue\n if (requestCopy.subscribers.delete(observer) &&\n requestCopy.subscribers.size < 1) {\n // If this is last request from queue, remove queue entirely\n if (batch.delete(requestCopy) && batch.size < 1) {\n _this.consumeQueue(key);\n // If queue was in flight, cancel it\n (_a = batch.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n }\n };\n });\n }\n return requestCopy.observable;\n };\n // Consumes the queue.\n // Returns a list of promises (one for each query).\n OperationBatcher.prototype.consumeQueue = function (key) {\n if (key === void 0) { key = \"\"; }\n var batch = this.batchesByKey.get(key);\n // Delete this batch and process it below.\n this.batchesByKey.delete(key);\n if (!batch || !batch.size) {\n // No requests to be processed.\n return;\n }\n var operations = [];\n var forwards = [];\n var observables = [];\n var nexts = [];\n var errors = [];\n var completes = [];\n // Even though batch is a Set, it preserves the order of first insertion\n // when iterating (per ECMAScript specification), so these requests will be\n // handled in the order they were enqueued (minus any deleted ones).\n batch.forEach(function (request) {\n operations.push(request.operation);\n forwards.push(request.forward);\n observables.push(request.observable);\n nexts.push(request.next);\n errors.push(request.error);\n completes.push(request.complete);\n });\n var batchedObservable = this.batchHandler(operations, forwards) || Observable.of();\n var onError = function (error) {\n //each callback list in batch\n errors.forEach(function (rejecters) {\n if (rejecters) {\n //each subscriber to request\n rejecters.forEach(function (e) { return e(error); });\n }\n });\n };\n batch.subscription = batchedObservable.subscribe({\n next: function (results) {\n if (!Array.isArray(results)) {\n results = [results];\n }\n if (nexts.length !== results.length) {\n var error = new Error(\"server returned results with length \".concat(results.length, \", expected length of \").concat(nexts.length));\n error.result = results;\n return onError(error);\n }\n results.forEach(function (result, index) {\n if (nexts[index]) {\n nexts[index].forEach(function (next) { return next(result); });\n }\n });\n },\n error: onError,\n complete: function () {\n completes.forEach(function (complete) {\n if (complete) {\n //each subscriber to request\n complete.forEach(function (c) { return c(); });\n }\n });\n },\n });\n return observables;\n };\n OperationBatcher.prototype.scheduleQueueConsumption = function (key) {\n var _this = this;\n clearTimeout(this.scheduledBatchTimerByKey.get(key));\n this.scheduledBatchTimerByKey.set(key, setTimeout(function () {\n _this.consumeQueue(key);\n _this.scheduledBatchTimerByKey.delete(key);\n }, this.batchInterval));\n };\n return OperationBatcher;\n}());\nexport { OperationBatcher };\n","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { OperationBatcher } from \"./batching.js\";\nexport { OperationBatcher } from \"./batching.js\";\nvar BatchLink = /** @class */ (function (_super) {\n __extends(BatchLink, _super);\n function BatchLink(fetchParams) {\n var _this = _super.call(this) || this;\n var _a = fetchParams || {}, batchDebounce = _a.batchDebounce, _b = _a.batchInterval, batchInterval = _b === void 0 ? 10 : _b, _c = _a.batchMax, batchMax = _c === void 0 ? 0 : _c, _d = _a.batchHandler, batchHandler = _d === void 0 ? function () { return null; } : _d, _e = _a.batchKey, batchKey = _e === void 0 ? function () { return \"\"; } : _e;\n _this.batcher = new OperationBatcher({\n batchDebounce: batchDebounce,\n batchInterval: batchInterval,\n batchMax: batchMax,\n batchHandler: batchHandler,\n batchKey: batchKey,\n });\n //make this link terminating\n if (fetchParams.batchHandler.length <= 1) {\n _this.request = function (operation) { return _this.batcher.enqueueRequest({ operation: operation }); };\n }\n return _this;\n }\n BatchLink.prototype.request = function (operation, forward) {\n return this.batcher.enqueueRequest({\n operation: operation,\n forward: forward,\n });\n };\n return BatchLink;\n}(ApolloLink));\nexport { BatchLink };\n","import { print } from 'graphql';\nimport * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { ApolloLink, Observable as Observable$1 } from '@apollo/client/core';\nimport { BatchLink } from '@apollo/client/link/batch';\nimport { Observable } from 'rxjs';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\n\nconst fetch = (req, httpClient, extractFiles) => {\n const shouldUseBody = ['POST', 'PUT', 'PATCH'].indexOf(req.method.toUpperCase()) !== -1;\n const shouldStringify = (param) => ['variables', 'extensions'].indexOf(param.toLowerCase()) !== -1;\n const isBatching = req.body.length;\n let shouldUseMultipart = req.options && req.options.useMultipart;\n let multipartInfo;\n if (shouldUseMultipart) {\n if (isBatching) {\n return new Observable(observer => observer.error(new Error('File upload is not available when combined with Batching')));\n }\n if (!shouldUseBody) {\n return new Observable(observer => observer.error(new Error('File upload is not available when GET is used')));\n }\n if (!extractFiles) {\n return new Observable(observer => observer.error(new Error(`To use File upload you need to pass \"extractFiles\" function from \"extract-files\" library to HttpLink's options`)));\n }\n multipartInfo = extractFiles(req.body);\n shouldUseMultipart = !!multipartInfo.files.size;\n }\n // `body` for some, `params` for others\n let bodyOrParams = {};\n if (isBatching) {\n if (!shouldUseBody) {\n return new Observable(observer => observer.error(new Error('Batching is not available for GET requests')));\n }\n bodyOrParams = {\n body: req.body,\n };\n }\n else {\n const body = shouldUseMultipart ? multipartInfo.clone : req.body;\n if (shouldUseBody) {\n bodyOrParams = {\n body,\n };\n }\n else {\n const params = Object.keys(req.body).reduce((obj, param) => {\n const value = req.body[param];\n obj[param] = shouldStringify(param) ? JSON.stringify(value) : value;\n return obj;\n }, {});\n bodyOrParams = { params: params };\n }\n }\n if (shouldUseMultipart && shouldUseBody) {\n const form = new FormData();\n form.append('operations', JSON.stringify(bodyOrParams.body));\n const map = {};\n const files = multipartInfo.files;\n let i = 0;\n files.forEach(paths => {\n map[++i] = paths;\n });\n form.append('map', JSON.stringify(map));\n i = 0;\n files.forEach((_, file) => {\n form.append(++i + '', file, file.name);\n });\n bodyOrParams.body = form;\n }\n // create a request\n return httpClient.request(req.method, req.url, {\n observe: 'response',\n responseType: 'json',\n reportProgress: false,\n ...bodyOrParams,\n ...req.options,\n });\n};\nconst mergeHeaders = (source, destination) => {\n if (source && destination) {\n const merged = destination\n .keys()\n .reduce((headers, name) => headers.set(name, destination.getAll(name)), source);\n return merged;\n }\n return destination || source;\n};\nfunction prioritize(...values) {\n return values.find(val => typeof val !== 'undefined');\n}\nfunction createHeadersWithClientAwareness(context) {\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`.\n let headers = context.headers && context.headers instanceof HttpHeaders\n ? context.headers\n : new HttpHeaders(context.headers);\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n // If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n if (name && !headers.has('apollographql-client-name')) {\n headers = headers.set('apollographql-client-name', name);\n }\n if (version && !headers.has('apollographql-client-version')) {\n headers = headers.set('apollographql-client-version', version);\n }\n }\n return headers;\n}\n\nconst defaults = {\n batchInterval: 10,\n batchMax: 10,\n uri: 'graphql',\n method: 'POST',\n withCredentials: false,\n includeQuery: true,\n includeExtensions: false,\n useMultipart: false,\n};\n/**\n * Decides which value to pick from Context, Options or defaults\n */\nfunction pick(context, options, key) {\n return prioritize(context[key], options[key], defaults[key]);\n}\nclass HttpBatchLinkHandler extends ApolloLink {\n httpClient;\n options;\n batcher;\n batchInterval;\n batchMax;\n print = print;\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n this.batchInterval = options.batchInterval || defaults.batchInterval;\n this.batchMax = options.batchMax || defaults.batchMax;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n const batchHandler = (operations) => {\n return new Observable$1((observer) => {\n const body = this.createBody(operations);\n const headers = this.createHeaders(operations);\n const { method, uri, withCredentials } = this.createOptions(operations);\n if (typeof uri === 'function') {\n throw new Error(`Option 'uri' is a function, should be a string`);\n }\n const req = {\n method,\n url: uri,\n body: body,\n options: {\n withCredentials,\n headers,\n },\n };\n const sub = fetch(req, this.httpClient, () => {\n throw new Error('File upload is not available when combined with Batching');\n }).subscribe({\n next: result => observer.next(result.body),\n error: err => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n };\n const batchKey = options.batchKey ||\n ((operation) => {\n return this.createBatchKey(operation);\n });\n this.batcher = new BatchLink({\n batchInterval: this.batchInterval,\n batchMax: this.batchMax,\n batchKey,\n batchHandler,\n });\n }\n createOptions(operations) {\n const context = operations[0].getContext();\n return {\n method: pick(context, this.options, 'method'),\n uri: pick(context, this.options, 'uri'),\n withCredentials: pick(context, this.options, 'withCredentials'),\n };\n }\n createBody(operations) {\n return operations.map(operation => {\n const includeExtensions = prioritize(operation.getContext().includeExtensions, this.options.includeExtensions, false);\n const includeQuery = prioritize(operation.getContext().includeQuery, this.options.includeQuery, true);\n const body = {\n operationName: operation.operationName,\n variables: operation.variables,\n };\n if (includeExtensions) {\n body.extensions = operation.extensions;\n }\n if (includeQuery) {\n body.query = this.print(operation.query);\n }\n return body;\n });\n }\n createHeaders(operations) {\n return operations.reduce((headers, operation) => {\n return mergeHeaders(headers, operation.getContext().headers);\n }, createHeadersWithClientAwareness({\n headers: this.options.headers,\n clientAwareness: operations[0]?.getContext()?.clientAwareness,\n }));\n }\n createBatchKey(operation) {\n const context = operation.getContext();\n if (context.skipBatching) {\n return Math.random().toString(36).substring(2, 11);\n }\n const headers = context.headers && context.headers.keys().map((k) => context.headers.get(k));\n const opts = JSON.stringify({\n includeQuery: context.includeQuery,\n includeExtensions: context.includeExtensions,\n headers,\n });\n return prioritize(context.uri, this.options.uri, '') + opts;\n }\n request(op) {\n return this.batcher.request(op);\n }\n}\nclass HttpBatchLink {\n httpClient;\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpBatchLinkHandler(this.httpClient, options);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.5\", ngImport: i0, type: HttpBatchLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.5\", ngImport: i0, type: HttpBatchLink, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.5\", ngImport: i0, type: HttpBatchLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n\n// XXX find a better name for it\nclass HttpLinkHandler extends ApolloLink {\n httpClient;\n options;\n requester;\n print = print;\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n this.requester = (operation) => new Observable$1((observer) => {\n const context = operation.getContext();\n let method = pick(context, this.options, 'method');\n const includeQuery = pick(context, this.options, 'includeQuery');\n const includeExtensions = pick(context, this.options, 'includeExtensions');\n const url = pick(context, this.options, 'uri');\n const withCredentials = pick(context, this.options, 'withCredentials');\n const useMultipart = pick(context, this.options, 'useMultipart');\n const useGETForQueries = this.options.useGETForQueries === true;\n const isQuery = operation.query.definitions.some(def => def.kind === 'OperationDefinition' && def.operation === 'query');\n if (useGETForQueries && isQuery) {\n method = 'GET';\n }\n const req = {\n method,\n url: typeof url === 'function' ? url(operation) : url,\n body: {\n operationName: operation.operationName,\n variables: operation.variables,\n },\n options: {\n withCredentials,\n useMultipart,\n headers: this.options.headers,\n },\n };\n if (includeExtensions) {\n req.body.extensions = operation.extensions;\n }\n if (includeQuery) {\n req.body.query = this.print(operation.query);\n }\n const headers = createHeadersWithClientAwareness(context);\n req.options.headers = mergeHeaders(req.options.headers, headers);\n const sub = fetch(req, this.httpClient, this.options.extractFiles).subscribe({\n next: response => {\n operation.setContext({ response });\n observer.next(response.body);\n },\n error: err => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n }\n request(op) {\n return this.requester(op);\n }\n}\nclass HttpLink {\n httpClient;\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpLinkHandler(this.httpClient, options);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.0.5\", ngImport: i0, type: HttpLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.0.5\", ngImport: i0, type: HttpLink, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.0.5\", ngImport: i0, type: HttpLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n\n// http\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HttpBatchLink, HttpBatchLinkHandler, HttpLink, HttpLinkHandler };\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ApolloLink, concat, InMemoryCache } from '@apollo/client/core';\nimport { onError } from '@apollo/client/link/error';\nimport { APOLLO_OPTIONS, ApolloModule } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { OperationDefinitionNode } from 'graphql';\n\nconst stripDetailFromTypename = (obj: any, count: number = 0) => {\n\tcount++;\n\tif (count > 99) {\n\t\treturn obj;\n\t}\n\tObject.keys(obj).forEach(key => {\n\t\tif (obj[key]?.__typename?.endsWith('Detail')) {\n\t\t\tobj[key].__typename = obj[key].__typename.substring(\n\t\t\t\t0,\n\t\t\t\tobj[key].__typename.indexOf('Detail')\n\t\t\t);\n\t\t}\n\n\t\t// Everything is an object in JS, we need to be tacit with our check\n\t\tif (\n\t\t\tobj[key] &&\n\t\t\ttypeof obj[key] !== 'string' &&\n\t\t\ttypeof obj[key] !== 'number' &&\n\t\t\tObject.keys(obj[key]).length > 0\n\t\t) {\n\t\t\tobj[key] = stripDetailFromTypename(obj[key], count);\n\t\t}\n\t});\n\treturn obj;\n};\n\nexport interface ApolloLoadingMiddleware {\n\tapolloLoad(): void;\n\tapolloUnload(): void;\n\tapolloOnError(error: any): void;\n}\n\nfunction removeTimezonesFromDates(item: any): any {\n\tif (!item) {\n\t\treturn item;\n\t}\n\n\tlet newItem = item;\n\n\tif (Object.prototype.toString.call(item) === '[object Date]') {\n\t\tconst monthsArray = [\n\t\t\t'01',\n\t\t\t'02',\n\t\t\t'03',\n\t\t\t'04',\n\t\t\t'05',\n\t\t\t'06',\n\t\t\t'07',\n\t\t\t'08',\n\t\t\t'09',\n\t\t\t'10',\n\t\t\t'11',\n\t\t\t'12',\n\t\t];\n\t\tconst formattedDate =\n\t\t\titem.getDate().toString().length < 2 ? `0${item.getDate()}` : item.getDate();\n\t\tconst formattedHours =\n\t\t\titem.getHours().toString().length < 2 ? `0${item.getHours()}` : item.getHours();\n\t\tconst formattedMinutes =\n\t\t\titem.getMinutes().toString().length < 2 ? `0${item.getMinutes()}` : item.getMinutes();\n\t\tconst formattedSeconds =\n\t\t\titem.getSeconds().toString().length < 2 ? `0${item.getSeconds()}` : item.getSeconds();\n\t\tconst formattedMilliseconds =\n\t\t\titem.getMilliseconds().toString().length === 2\n\t\t\t\t? `0${item.getMilliseconds()}`\n\t\t\t\t: item.getMilliseconds().toString().length === 1\n\t\t\t\t\t? `00${item.getMilliseconds()}`\n\t\t\t\t\t: item.getMilliseconds();\n\n\t\tnewItem = `${item.getFullYear()}-${\n\t\t\tmonthsArray[item.getMonth()]\n\t\t}-${formattedDate}T${formattedHours}:${formattedMinutes}:${formattedSeconds}.${formattedMilliseconds}`;\n\t}\n\tif (typeof item === 'object' && Object.prototype.toString.call(item) !== '[object Date]') {\n\t\tnewItem = {};\n\t\tObject.keys(item).forEach(key => {\n\t\t\tnewItem[key] = removeTimezonesFromDates(item[key]);\n\t\t});\n\t}\n\tif (Array.isArray(item) && Object.prototype.toString.call(item) !== '[object Date]') {\n\t\tnewItem = [];\n\t\tObject.keys(item).forEach(key => {\n\t\t\tnewItem.push(removeTimezonesFromDates(item[key]));\n\t\t});\n\t}\n\treturn newItem;\n}\n\nexport const GRAPHQL_API = new InjectionToken('forRoot() GraphQL Config');\nexport const LOADING_MIDDLEWARE = new InjectionToken(\n\t'forRoot() Graphql Loading Middleware'\n);\nexport const GRAPHQL_CACHE = new InjectionToken('forRoot() GraphQL Cache');\nexport const IS_PRODUCTION = new InjectionToken('forRoot() GraphQL Is Production');\n\nexport function createApollo(\n\thttpLink: HttpLink,\n\turi: string,\n\tloader: ApolloLoadingMiddleware,\n\tcache: InMemoryCache,\n\tisProd: boolean\n) {\n\tconst removeTimezoneMiddleware = new ApolloLink((operation, forward) => {\n\t\t// Remove the timezone from dates in mutations\n\t\tif (\n\t\t\t(Object.keys(operation.variables) || []).length &&\n\t\t\toperation.query.definitions.some(\n\t\t\t\tdef =>\n\t\t\t\t\tdef.kind === 'OperationDefinition' &&\n\t\t\t\t\t(def as OperationDefinitionNode).operation === 'mutation'\n\t\t\t)\n\t\t) {\n\t\t\toperation.variables = removeTimezonesFromDates(operation.variables);\n\t\t}\n\n\t\treturn forward(operation);\n\t});\n\tconst typenameMiddleware = new ApolloLink((operation, forward) => {\n\t\t// Remove the 'Detail' from typenames\n\t\treturn forward(operation).map(ctx => {\n\t\t\tif (ctx.data) {\n\t\t\t\tctx.data = stripDetailFromTypename(ctx.data);\n\t\t\t}\n\t\t\treturn ctx;\n\t\t});\n\t});\n\n\tconst errorAfterware = onError(({ operation, response, graphQLErrors, networkError }) => {\n\t\tif (graphQLErrors) {\n\t\t\tloader.apolloOnError({ operation, response, graphQLErrors });\n\t\t}\n\t\tif (networkError) {\n\t\t\tloader.apolloOnError({ operation, response, networkError });\n\t\t}\n\t});\n\n\tconst link = concat(\n\t\terrorAfterware.concat(ApolloLink.from([removeTimezoneMiddleware, typenameMiddleware])),\n\t\thttpLink.create({ uri, withCredentials: true })\n\t);\n\n\treturn {\n\t\tcache,\n\t\tlink,\n\t};\n}\n\n@NgModule({\n\timports: [ApolloModule],\n\texports: [ApolloModule],\n})\nexport class AtsGraphqlModule {\n\tpublic static forRoot({\n\t\tloadingService,\n\t\tcache,\n\t\tenvironment,\n\t}): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: AtsGraphqlModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: GRAPHQL_API,\n\t\t\t\t\tuseValue: environment.graphQLUrl,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: LOADING_MIDDLEWARE,\n\t\t\t\t\tuseValue: loadingService,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: GRAPHQL_CACHE,\n\t\t\t\t\tuseValue: cache,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: IS_PRODUCTION,\n\t\t\t\t\tuseValue: environment.production,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: APOLLO_OPTIONS,\n\t\t\t\t\tuseFactory: createApollo,\n\t\t\t\t\tdeps: [HttpLink, GRAPHQL_API, LOADING_MIDDLEWARE, GRAPHQL_CACHE, IS_PRODUCTION],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { HubFeature } from '@ats/api/cm';\nimport {\n\tCmAuthGuard,\n\tCmFeatureGuard,\n\tCmIntentGuard,\n\tCmLocalizationGuard,\n\tCmPublicFeaturesGuard,\n\tCmUnauthenticatedGuard,\n} from '@ats/cm/core';\nimport { ExistingCultureGuard, LanguageParamGuard } from '@cm/core/settings';\n\nimport { CpCandidateRequirementsGuard } from '@ats/cp/core';\nimport { CpLogoutComponent, CpRoutes, CpViewComponent } from '@ats/cp/ui';\nimport { MultiGuardFactory } from '@ats/utility';\n\nconst MULTI_GUARD_CP_LOGIN = 'Multi-use Guard with Auth, features and SSO';\nconst MULTI_GUARD_CP_CULTURE =\n\t'Multi-use Guard with Language Param Guard and Existing Culture Guard';\n\nconst routes: CpRoutes = [\n\t{\n\t\tpath: ':client',\n\t\tpathMatch: 'full',\n\t\tredirectTo: ':client/en',\n\t},\n\t{\n\t\tpath: ':client/:lang',\n\t\tcanActivate: [MULTI_GUARD_CP_CULTURE],\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tpath: '',\n\t\t\t\tcomponent: CpViewComponent,\n\t\t\t\tcanActivate: [CmFeatureGuard, CmLocalizationGuard, CmIntentGuard],\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: '',\n\t\t\t\t\t\tpathMatch: 'full',\n\t\t\t\t\t\tredirectTo: 'login',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'login',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/login').then(m => m.CpLoginModule),\n\t\t\t\t\t\tcanActivate: [MULTI_GUARD_CP_LOGIN],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: ['CandidateAccess', 'CandidateAccess.Login'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\trunGuardsAndResolvers: 'always',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'public',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/public').then(m => m.CpPublicModule),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'home',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/home').then(m => m.CpHomeModule),\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: [HubFeature.CandidateAccess],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'credentials',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/certs').then(m => m.CpCertsModule),\n\t\t\t\t\t\t// canLoad: [CpAuthGuard],\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: ['CandidateAccess'],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'achievements',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/achievements').then(\n\t\t\t\t\t\t\t\tm => m.CpAchievementsModule\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: [HubFeature.CredentialAchievements],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'profile',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/profile').then(m => m.CpProfileModule),\n\t\t\t\t\t\t// canLoad: [CpAuthGuard],\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: ['CandidateAccess', 'CandidateProfile'],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'history',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/history').then(m => m.CpHistoryModule),\n\t\t\t\t\t\t// canLoad: [CpAuthGuard],\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: ['CandidateAccess'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'benefits',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/benefits').then(m => m.CpBenefitsModule),\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: ['CandidateAccess'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'schedule',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/schedule').then(m => m.CpScheduleModule),\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tsome: {\n\t\t\t\t\t\t\t\tfeatures: [\n\t\t\t\t\t\t\t\t\tHubFeature.CandidateAccessIntegrationEgressTestWise,\n\t\t\t\t\t\t\t\t\tHubFeature.CandidateAccessIntegrationEgressPearsonVue,\n\t\t\t\t\t\t\t\t\tHubFeature.ExamScheduling,\n\t\t\t\t\t\t\t\t\tHubFeature.ExamAppointments,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'share',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/share').then(m => m.CpShareModule),\n\t\t\t\t\t\t// canLoad: [CpAuthGuard],\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: ['CandidateAccess', 'Share'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'store',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@cm/cp/feature/ecommerce').then(m => m.ECommerceRoutes),\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: [HubFeature.Ecommerce],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'catalogs',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/catalogs').then(m => m.CpCatalogsModule),\n\t\t\t\t\t\t// canLoad: [CpAuthGuard],\n\t\t\t\t\t\tcanActivate: [CmAuthGuard],\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfeatures: ['CandidateAccess'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcanActivateChild: [CpCandidateRequirementsGuard],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'logout',\n\t\t\t\t\t\tcomponent: CpLogoutComponent,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'sso',\n\t\t\t\t\t\tloadChildren: () =>\n\t\t\t\t\t\t\timport('@ats/cp/feature/sso').then(c => c.AuthorizeRoutes),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'not-found',\n\t\t\t\t\t\tloadComponent: () =>\n\t\t\t\t\t\t\timport('@cm/shared/pages').then(m => m.NotFoundPageComponent),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'session-expired',\n\t\t\t\t\t\tloadComponent: () =>\n\t\t\t\t\t\t\timport('@cm/shared/pages').then(m => m.SessionExpiredComponent),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: 'access-denied',\n\t\t\t\t\t\tloadComponent: () =>\n\t\t\t\t\t\t\timport('@cm/shared/pages').then(m => m.AccessDeniedComponent),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tpath: '**',\n\t\t\t\t\t\tloadComponent: () =>\n\t\t\t\t\t\t\timport('@cm/shared/pages').then(m => m.NotFoundPageComponent),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: 'access-denied',\n\t\tloadComponent: () => import('@cm/shared/pages').then(m => m.AccessDeniedComponent),\n\t},\n\t{\n\t\tpath: 'not-found',\n\t\tloadComponent: () => import('@cm/shared/pages').then(m => m.NotFoundPageComponent),\n\t},\n\t{\n\t\tpath: 'error',\n\t\tloadComponent: () => import('@cm/shared/pages').then(m => m.ErrorPageComponent),\n\t},\n\t{\n\t\tpath: '**',\n\t\tloadComponent: () => import('@cm/shared/pages').then(m => m.NotFoundPageComponent),\n\t},\n];\n\n@NgModule({\n\timports: [\n\t\tRouterModule.forRoot(routes, {\n\t\t\tinitialNavigation: 'enabledBlocking',\n\t\t\t// enableTracing: true,\n\t\t\tscrollPositionRestoration: 'top',\n\t\t}),\n\t],\n\texports: [RouterModule],\n\tproviders: [\n\t\t{\n\t\t\tprovide: MULTI_GUARD_CP_LOGIN,\n\t\t\tuseFactory: MultiGuardFactory.createInstance,\n\t\t\tdeps: [CmUnauthenticatedGuard, CmPublicFeaturesGuard],\n\t\t},\n\t\t{\n\t\t\tprovide: MULTI_GUARD_CP_CULTURE,\n\t\t\tuseFactory: MultiGuardFactory.createInstance,\n\t\t\tdeps: [LanguageParamGuard, ExistingCultureGuard],\n\t\t},\n\t],\n})\nexport class CpRoutingModule {}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[atsOverlayContainer]',\n standalone: false\n})\nexport class AtsOverlayContainerDirective {\n\tconstructor(private el: ElementRef, private overlayRef: OverlayContainer) {\n\t\tthis.overlayRef['atsCreateContainer'](this.el);\n\t}\n}\n","import { Component, DestroyRef, OnInit, Renderer2, RendererFactory2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CultureService } from '@cm/core/culture';\n\nconst RTL_CULTURE_CODES = [\n\t'ar', //Arabic\n\t'arc', //Aramaic\n\t'dv', //Divehi\n\t'fa', //Persian\n\t'ha', //Hausa\n\t'he', //Hebrew\n\t'khw', //Khowar\n\t'ks', //Kashmiri\n\t'ku', //Kurdish\n\t'ps', //Pashto\n\t'ur', //Urdu\n\t'yi', //Yiddish\n];\n\n@Component({\n\tselector: 'rtl-support',\n\ttemplateUrl: './rtl-support.component.html',\n\tstyleUrls: ['./rtl-support.component.scss'],\n\tstandalone: true,\n})\nexport class RtlSupportComponent implements OnInit {\n\trenderer: Renderer2;\n\tconstructor(\n\t\tprivate readonly rendererFactory: RendererFactory2,\n\t\tprivate readonly cultureService: CultureService,\n\t\tprivate readonly destroyRef: DestroyRef\n\t) {\n\t\tthis.renderer = this.rendererFactory.createRenderer(document.documentElement, null);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.cultureService.culture$\n\t\t\t.pipe(takeUntilDestroyed(this.destroyRef))\n\t\t\t.subscribe(culture => {\n\t\t\t\tthis.setDocumentLanguage(culture.code);\n\t\t\t\tthis.addDocumentDirection(RTL_CULTURE_CODES.includes(culture.code));\n\t\t\t});\n\t}\n\n\tprivate addDocumentDirection(isRtl: boolean) {\n\t\tif (isRtl) {\n\t\t\tthis.renderer.removeAttribute(document.body, 'dir', 'ltr');\n\t\t\tthis.renderer.setAttribute(document.body, 'dir', 'rtl');\n\t\t} else {\n\t\t\tthis.renderer.removeAttribute(document.body, 'dir', 'rtl');\n\t\t\tthis.renderer.setAttribute(document.body, 'dir', 'ltr');\n\t\t}\n\t}\n\n\tprivate setDocumentLanguage(lang: string) {\n\t\tthis.renderer.setAttribute(document.documentElement, 'lang', lang);\n\t}\n}\n","import { Component } from '@angular/core';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'alpine-testing-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n standalone: false\n})\nexport class AppComponent {\n\tloading$: Observable;\n\n\tconstructor(private notifications: AtsNotificationService) {\n\t\tthis.loading$ = this.notifications.loading$;\n\t}\n}\n","\n
\n\n\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT, ViewportScroller } from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport {\n\tErrorHandler,\n\tInjectionToken,\n\tNgModule,\n\tinject,\n\tprovideAppInitializer,\n} from '@angular/core';\nimport { MAT_SORT_DEFAULT_OPTIONS } from '@angular/material/sort';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { InMemoryCache } from '@apollo/client/core';\nimport { loadErrorMessages } from '@apollo/client/dev';\nimport { PortalType, PortalTypeEnum } from '@ats/api/cm';\nimport {\n\tAPOLLO_CACHE_CONFIG,\n\tCM_SPLIT_PASCAL_EXCEPTIONS,\n\tCmCoreModule,\n\tCmErrorHandler,\n\tCmFormErrorService,\n\tCmViewportScroller,\n} from '@ats/cm/core';\nimport { DEFAULT_PAGE_TITLE_KEY, DEFAULT_PAGE_TITLE_VALUE } from '@ats/cm/ui';\nimport { CpCoreModule, CpUserService } from '@ats/cp/core';\nimport { CpUiModule } from '@ats/cp/ui';\nimport { ApolloLoadingMiddleware, AtsGraphqlModule, LOADING_MIDDLEWARE } from '@ats/graphql';\nimport { AtsLoggerModule } from '@ats/logger';\nimport { AtsNotificationModule } from '@ats/notifications';\nimport { AtsStoreModule } from '@ats/store';\nimport { AtsOverlayContainer, AtsUiModule } from '@ats/ui';\nimport { AtsUtilityModule } from '@ats/utility';\nimport { CLIENT_SERVICE_CONFIG, ClientService, ClientServiceConfig } from '@cm/core/client';\nimport { CULTURE_SERVICE_CONFIG, CultureService, CultureServiceConfig, cultureInitializer } from '@cm/core/culture';\nimport { LocalizationModule } from '@cm/core/localization';\nimport { LOG_CONFIG, LogLevel, LoggingService } from '@cm/core/logging';\nimport { Environment, SETTINGS_CONFIG, SettingsConfig, SettingsService } from '@cm/core/settings';\nimport { STORAGE_DOMAIN, StorageModule } from '@cm/core/storage';\nimport { CmEventService } from '@cm/core/system';\nimport { RtlSupportComponent } from '@cm/shared/ui/rtl-support';\nimport { environment } from '@cp-env/environment';\nimport { clientInitializer } from 'libs/core/client/src/lib/models';\nimport { RECAPTCHA_SETTINGS, RecaptchaSettings } from 'ng-recaptcha-2';\nimport { throwError } from 'rxjs';\nimport { CpRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\nclass LoadingMiddleware implements ApolloLoadingMiddleware {\n\tconstructor(private readonly events: CmEventService) {}\n\n\tapolloLoad() {\n\t\tthis.events.handleLoadingChange('apollo');\n\t}\n\n\tapolloUnload() {\n\t\tthis.events.handleLoadingChange('apollo', 'END');\n\t}\n\n\tapolloOnError(err: any) {\n\t\tthrowError(() => err);\n\t}\n}\n\nconst cache = new InMemoryCache(APOLLO_CACHE_CONFIG);\n\nconst getEnvironment = (): Environment => {\n\tif (environment.production) {\n\t\treturn 'production';\n\t} else if (environment.beta) {\n\t\treturn 'beta';\n\t} else {\n\t\treturn 'local';\n\t}\n};\n\nconst portal = PortalType.CandidatePortal;\n\nif (environment.local) {\n\tloadErrorMessages();\n}\n\nconst settingsConfig: SettingsConfig = {\n\tbaseUrl: environment.apiUrl,\n\tcpUrl: environment.cpUrl,\n\tspUrl: environment.spUrl,\n\tenvironment: getEnvironment(),\n\tportal,\n\tenv: {\n\t\tenvironment: getEnvironment(),\n\t\t...environment,\n\t},\n};\n\nconst cultureConfig: CultureServiceConfig = {\n\tportal,\n\tapi: environment.apiUrl,\n};\n\nconst clientConfig: ClientServiceConfig = {\n\tportal,\n};\n\nconst ENABLE_LANGUAGE_PARAM = new InjectionToken('ENABLE_LANGUAGE_PARAM');\n\n@NgModule({\n\tdeclarations: [AppComponent],\n\timports: [\n\t\tBrowserModule,\n\t\tBrowserAnimationsModule,\n\t\tCmCoreModule.forRoot({\n\t\t\tapi: environment.apiUrl,\n\t\t\tspUrl: environment.spUrl,\n\t\t\tcpUrl: environment.cpUrl,\n\t\t\tportal: PortalTypeEnum.CandidatePortal,\n\t\t}),\n\t\tAtsStoreModule,\n\t\tStorageModule,\n\t\tCpCoreModule,\n\t\tCpRoutingModule,\n\t\tCpUiModule,\n\t\tAtsGraphqlModule.forRoot({ loadingService: LOADING_MIDDLEWARE, cache, environment }),\n\t\tAtsLoggerModule,\n\t\tAtsNotificationModule.forRoot(),\n\t\tRouterModule,\n\t\tAtsUiModule,\n\t\tRtlSupportComponent,\n\t\tAtsUtilityModule.forRoot({\n\t\t\tsplitPascalExceptions: CM_SPLIT_PASCAL_EXCEPTIONS,\n\t\t}),\n\t\tLocalizationModule.forRoot(),\n\t],\n\texports: [LocalizationModule],\n\tproviders: [\n\t\t{\n\t\t\tprovide: SETTINGS_CONFIG,\n\t\t\tuseValue: settingsConfig,\n\t\t},\n\t\t{\n\t\t\tprovide: CULTURE_SERVICE_CONFIG,\n\t\t\tuseValue: cultureConfig,\n\t\t},\n\t\t{\n\t\t\tprovide: CLIENT_SERVICE_CONFIG,\n\t\t\tuseValue: clientConfig,\n\t\t},\n\t\t{\n\t\t\tprovide: ENABLE_LANGUAGE_PARAM,\n\t\t\tuseValue: true,\n\t\t},\n\t\tprovideAppInitializer(() => {\n\t\t\tconst initializerFn = cultureInitializer(\n\t\t\t\tinject(CultureService),\n\t\t\t\tinject(ENABLE_LANGUAGE_PARAM)\n\t\t\t);\n\t\t\treturn initializerFn();\n\t\t}),\n\t\tprovideAppInitializer(() => {\n\t\t\tconst initializerFn = clientInitializer(inject(ClientService));\n\t\t\treturn initializerFn();\n\t\t}),\n\t\t{\n\t\t\tprovide: LOADING_MIDDLEWARE,\n\t\t\tuseClass: LoadingMiddleware,\n\t\t\tmulti: false,\n\t\t\tdeps: [CmEventService],\n\t\t},\n\t\t{ provide: OverlayContainer, useClass: AtsOverlayContainer },\n\t\t{\n\t\t\tprovide: MAT_SORT_DEFAULT_OPTIONS,\n\t\t\tuseValue: {\n\t\t\t\tdisableClear: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprovide: DEFAULT_PAGE_TITLE_KEY,\n\t\t\tuseValue: 'CandidateAccess/_Shared.Site.TabTitle.CompanyName',\n\t\t},\n\t\t{\n\t\t\tprovide: DEFAULT_PAGE_TITLE_VALUE,\n\t\t\tuseValue: 'CertMetrics',\n\t\t},\n\t\t{\n\t\t\tprovide: STORAGE_DOMAIN,\n\t\t\tuseValue: environment.storeDomain,\n\t\t},\n\t\t{\n\t\t\tprovide: LOG_CONFIG,\n\t\t\tuseValue: {\n\t\t\t\tlogApi: `${environment.apiUrl}/log`,\n\t\t\t\tlogLevel: LogLevel.Trace,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprovide: ErrorHandler,\n\t\t\tuseClass: CmErrorHandler,\n\t\t\tdeps: [LoggingService, CmEventService, CpUserService, CmFormErrorService, SettingsService, Platform],\n\t\t},\n\t\t{\n\t\t\tprovide: ViewportScroller,\n\t\t\tuseFactory: () => new CmViewportScroller('[cm-view-outlet]', inject(DOCUMENT), window),\n\t\t},\n\t\t{\n\t\t\tprovide: RECAPTCHA_SETTINGS,\n\t\t\tuseValue: {\n\t\t\t\tsiteKey: environment.recaptcha.siteKey,\n\t\t\t} as RecaptchaSettings,\n\t\t},\n\t\tprovideHttpClient(withInterceptorsFromDi()),\n\t],\n\tbootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { errorCodes } from \"../invariantErrorCodes.js\";\nimport { loadErrorMessageHandler } from \"./loadErrorMessageHandler.js\";\nexport function loadErrorMessages() {\n loadErrorMessageHandler(errorCodes);\n}\n","import { global } from \"../utilities/globals/index.js\";\nimport { ApolloErrorMessageHandler } from \"../utilities/globals/invariantWrappers.js\";\n/**\n * Overrides the global \"Error Message Handler\" with a custom implementation.\n */\nexport function setErrorMessageHandler(handler) {\n global[ApolloErrorMessageHandler] = handler;\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n\tenableProdMode();\n}\n\nplatformBrowserDynamic()\n\t.bootstrapModule(AppModule)\n\t.catch(err => console.error(err));\n","export enum CEProgressStatus {\r\n\tStarted = 'Started',\r\n\tInProgress = 'InProgress',\r\n\tCompleted = 'Completed',\r\n}\r\n","// Do Not Change the keys, they are being used in the api calls\r\nexport enum PortalTypeEnum {\r\n\tSponsorPortal = 0,\r\n\tInternalPortal = 1,\r\n\tCandidatePortal = 2,\r\n}\r\n","export type Maybe = T | null;\nexport type InputMaybe = Maybe;\nexport type Exact = { [K in keyof T]: T[K] };\nexport type MakeOptional = Omit & { [SubKey in K]?: Maybe };\nexport type MakeMaybe = Omit & { [SubKey in K]: Maybe };\nexport type MakeEmpty = { [_ in K]?: never };\nexport type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport interface Scalars {\n ID: { input: string; output: string; }\n String: { input: string; output: string; }\n Boolean: { input: boolean; output: boolean; }\n Int: { input: number; output: number; }\n Float: { input: number; output: number; }\n Byte: { input: number; output: number; }\n CmDate: { input: Date; output: Date; }\n CmDateTimeOffset: { input: any; output: any; }\n Date: { input: Date; output: Date; }\n DateTime: { input: Date; output: Date; }\n DateTimeOffset: { input: Date; output: Date; }\n Decimal: { input: number; output: number; }\n Long: { input: number; output: number; }\n Milliseconds: { input: number; output: number; }\n Seconds: { input: number; output: number; }\n Short: { input: number; output: number; }\n}\n\nexport enum AaHistType {\n /** EditAccount */\n EditAccount = 'EditAccount',\n /** EditApiAccountClientRole */\n EditApiAccountClientRole = 'EditApiAccountClientRole',\n /** Login */\n Login = 'Login',\n /** Logout */\n Logout = 'Logout',\n /** PermissionChange */\n PermissionChange = 'PermissionChange',\n /** WebToolActivity */\n WebToolActivity = 'WebToolActivity'\n}\n\nexport interface AccredibleCandidateBadgeResponseGqlType {\n /** The date the badge is considered active. */\n activeDate?: Maybe;\n /** The name of the candidate. */\n candidateName: Scalars['String']['output'];\n /** The email used for this particular badge's issuance. Can be different for each badge. */\n email: Scalars['String']['output'];\n /** The date the badge is considered expired. */\n expireDate?: Maybe;\n /** Accredible's group id. */\n groupId: Scalars['Int']['output'];\n /** Accredible's group name. */\n groupName: Scalars['String']['output'];\n /** Accredible's badge id. */\n id: Scalars['String']['output'];\n}\n\nexport interface AccredibleGroupCatalogResponseGqlType {\n /** The CertMetrics catalog id. See the Type to determine which type of CM catalog it belongs to. */\n catalogId?: Maybe;\n /** An Id assigned by Accredible */\n groupId?: Maybe;\n /** The group name from Accredible. */\n groupName?: Maybe;\n /** The CertMetrics catalog name. */\n name?: Maybe;\n /** The type of catalog. Ex. Ccat, Excat, or Crcat. */\n type?: Maybe;\n}\n\n/** Adds a client setting to the client_setting table. */\nexport interface AddClientSettingRequest {\n /** The use of this field is determined by the setting; it may or may not be used at all. */\n csetDatetime?: InputMaybe;\n /** The use of this field is determined by the setting; it may or may not be used at all. */\n csetInt?: InputMaybe;\n /** The name of the setting being controlled/defined. Names should be in PascalCase. */\n csetName: Scalars['String']['input'];\n /** The use of this field is determined by the setting; it may or may not be used at all. This is used as COALESCE(nvarchar, varchar). */\n csetNvarchar?: InputMaybe;\n /** The use of this field is determined by the setting; it may or may not be used at all. This is used as COALESCE(nvarchar, varchar). */\n csetVarchar?: InputMaybe;\n}\n\n/**\n * Shows additional details about an exam record.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamMSFTExamDetails\r\n *\n */\nexport interface AdditionalExamDetails {\n /** The ID of the exam that this detail record belongs to. */\n examId: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n itemCount?: Maybe;\n maxRawScore?: Maybe;\n notViewedItemCount?: Maybe;\n /** The number of breaks taken by the candidate during the exam. */\n numberOfBreaks?: Maybe;\n /** The total "Open Book" pages viewed by the candidate during the exam. */\n obTotalPages?: Maybe;\n /** The total time spent by the candidate using the "Open Book" feature during the exam. */\n obTotalTime?: Maybe;\n /** The Rasch score estimate for this exam. */\n raschEstimate?: Maybe;\n rawCutScore?: Maybe;\n /** The total break time in seconds taken by the candidate during the exam. */\n totalBreakTimeSeconds?: Maybe;\n}\n\nexport enum AffType {\n /** Customer */\n Customer = 'Customer',\n /** Employee */\n Employee = 'Employee',\n /** Government */\n Government = 'Government',\n /** Other */\n Other = 'Other',\n /** Partner */\n Partner = 'Partner',\n /** SelfEmployed */\n SelfEmployed = 'SelfEmployed',\n /** Student */\n Student = 'Student'\n}\n\n/**\n * Defines the entities that the candidate can select as their relation to the client. The client maintains the list of options and the candidate is required to select from the list of available options.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n *\n */\nexport interface AffiliationCatalog {\n /** When this field is not null, this indicates that the candidate must enter an Affiliate Id. If the value is an empty string, any entry is acceptable. If not, the value is a regular expression indicating the approved format of the Affiliate Id. */\n affiliateIdFormat?: Maybe;\n /** When true, indicates that this affiliation is no longer active. Candidates cannot select this affiliation, and if the candidate currently has this affiliation selected, they will be required to change to an active affiliation option. */\n disabled: Scalars['Boolean']['output'];\n /** When this field is not null, it indicates that the candidate must enter a valid email address. If value is an empty string, any valid email address is acceptable. If the value is not an empty string, it will be a pipe-delimited list of strings that the email address will end with (e.g., gmail.com|yahoo.com). This is a whitelist of ends with options. If the string begins with '!' the list is a blacklist. Works in combination with EmailRequired value. */\n emailFormat?: Maybe;\n /** Indicates if email is required or optional. A null value indicates that an email is not allowed to be provide. False indicates that an email can be entered, but is optional. If entered value must follow the rules in EmailFormat. True indicates that email is required and must follow the rules in EmailFormat. */\n emailRequired?: Maybe;\n /**\n * A unique identifier for the affiliated entity within CertMetrics. This identifier can either be provided by the client or auto-generated by CertMetrics.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n externalId?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n id: Scalars['Int']['output'];\n /**\n * The name of the affiliated entity as it is known by the client.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n name: Scalars['String']['output'];\n /** When this field is not null, this indicates that this is an 'Other' affiliation, meaning that the candidate was unable to locate a standard selection, and is required to enter the name of their affiliated organization by hand. If this value is empty, that indicates that the candidate can enter any value without restrictions. If this value is not empty, this is a regular expression that dictates what values can be accepted. */\n otherFormat?: Maybe;\n /**\n * An optional way to group affiliations different than WebGroup that is for reporting purposes. Hasn't been implemented yet.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n reportGroup?: Maybe;\n type?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n updated: Scalars['CmDateTimeOffset']['output'];\n /** Indicates a grouping of affiliation types that are used in CertMetrics as the first step in a two-part selection for the candidate's affiliation. This is typically 'Partner', 'Customer', or similar. */\n webGroup?: Maybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface ApiAccount {\n admin: Scalars['Boolean']['output'];\n anyCandidate: Scalars['Boolean']['output'];\n anyEndpoint: Scalars['Boolean']['output'];\n bypassAccessCode: Scalars['Boolean']['output'];\n canSsoCandidate: Scalars['Boolean']['output'];\n canSsoWebUser: Scalars['Boolean']['output'];\n contactEmail?: Maybe;\n contactNumber?: Maybe;\n disabled: Scalars['Boolean']['output'];\n hidden: Scalars['Boolean']['output'];\n id: Scalars['Int']['output'];\n idAuthorityDataProvider?: Maybe;\n importDataProvider?: Maybe;\n internal: Scalars['Boolean']['output'];\n loginId?: Maybe;\n loginPassword?: Maybe;\n loginToken: Scalars['String']['output'];\n name: Scalars['String']['output'];\n url?: Maybe;\n whitelist?: Maybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface ApiAccountDetails {\n apiAccount?: Maybe;\n historyList?: Maybe>>;\n id: Scalars['Int']['output'];\n permissionList?: Maybe>>;\n roles?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface ApiAccountDetailsPermissionListArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface ApiAccountHistory {\n /** Indicates the user this pertains to. */\n apiAccountId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n /** This indicates the user responsible. */\n creator?: Maybe;\n id: Scalars['Int']['output'];\n /** The message that was logged */\n message?: Maybe;\n /** The type of the history entry. */\n type: AaHistType;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface ApiAccountIdRequest {\n /** The CertMetrics ApiAccount Id. When this is set, all other fields are ignored. */\n id?: InputMaybe;\n /** The unique login id for the ApiAccount account. This is used to find a ApiAccount when ApiAccount Id is not supplied. */\n name?: InputMaybe;\n}\n\nexport interface ApiAccountPermissionListRequest {\n includeAvailable?: InputMaybe;\n}\n\nexport enum AuthPackageStateEnum {\n /** An appointment is scheduled in the future */\n AppointmentScheduled = 'AppointmentScheduled',\n /** Expiration date is in the past */\n Expired = 'Expired',\n /** Send Ok Date is null */\n Ineligible = 'Ineligible',\n /** No Authorizations found for the candidate */\n NoAuths = 'NoAuths',\n /** Active Date is in the past and expiration date is in the future, usable by the candidate */\n Open = 'Open',\n /** Send Ok Date is in the past, but at least one individual auth Send Ok Date is in the future */\n OpenCannotSendYet = 'OpenCannotSendYet',\n /** Send Ok Date is in the past, and the canddiate has a valid, future, appointment scheduled */\n OpenWithAppointment = 'OpenWithAppointment',\n /** The eligibility has been revoked */\n Revoked = 'Revoked',\n /** The eligibility cannot be sent to the data provider */\n Unsendable = 'Unsendable',\n /** The eligibility has been determined to be old and not usable */\n Unusable = 'Unusable',\n /** Send Ok Date is in the future */\n Upcoming = 'Upcoming',\n /** A completed or aborted exam is tied to an associated authorization */\n Used = 'Used'\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: AWSCustomReports\r\n *\n */\nexport interface AwsTools {\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: AWSCustomReportsVerifyVoucherCode\r\n * \r\n * - Requires All Permissions: VerifyVoucherCodes.Modify, VerifyVoucherCodes.View\r\n *\n */\n verifyVoucherCodes?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: AWSCustomReports\r\n *\n */\nexport interface AwsToolsVerifyVoucherCodesArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n * \r\n * - Requires All Permissions: Candidate.CertMetricsBadging.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface Badge {\n activeDate: Scalars['CmDate']['output'];\n catalog: BadgeCatalog;\n criteriaUrl?: Maybe;\n description?: Maybe;\n descriptionHtml?: Maybe;\n expireDate?: Maybe;\n id?: Maybe;\n itemId: Scalars['Int']['output'];\n name: Scalars['String']['output'];\n publicApiUrl?: Maybe;\n publicUrl?: Maybe;\n /** Possible values are: c, e or r and refer to certs, exams and cert requirements respectively. */\n type: BadgeType;\n uid?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\nexport interface BadgeCatalog {\n certCatalog?: Maybe;\n certRequirementCatalog?: Maybe;\n criteriaUrl?: Maybe;\n description?: Maybe;\n descriptionHtml?: Maybe;\n enabled: Scalars['Boolean']['output'];\n examCatalog?: Maybe;\n externalId: Scalars['String']['output'];\n id: Scalars['String']['output'];\n imageUploadUrl?: Maybe;\n imageUrl?: Maybe;\n issuerName?: Maybe;\n issuerUrl?: Maybe;\n name: Scalars['String']['output'];\n /** Possible values are: c, e or r and refer to certs, exams and cert requirements respectively. */\n type: BadgeType;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n * \r\n * - Requires All Permissions: Candidate.CertMetricsBadging.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface BadgeDetail {\n activeDate: Scalars['CmDate']['output'];\n /** A count of the number of times the assertion endpoint has been called. */\n assertionCount?: Maybe;\n catalog: BadgeCatalog;\n criteriaUrl?: Maybe;\n description?: Maybe;\n descriptionHtml?: Maybe;\n expireDate?: Maybe;\n id?: Maybe;\n itemId: Scalars['Int']['output'];\n name: Scalars['String']['output'];\n publicApiUrl?: Maybe;\n publicUrl?: Maybe;\n /** Possible values are: c, e or r and refer to certs, exams and cert requirements respectively. */\n type: BadgeType;\n uid?: Maybe;\n}\n\n/** Possible values are: c, e or r and refer to certs, exams and cert requirements respectively. */\nexport enum BadgeType {\n /** Cert */\n C = 'c',\n /** Exam */\n E = 'e',\n /** CertRequirement */\n R = 'r'\n}\n\n/**\n * Returns a list of candidates who were banned.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: BannedCandidateList.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface BannedCandidatesReport {\n bannedUntil: Scalars['CmDate']['output'];\n candidate?: Maybe;\n cmcId: Scalars['Int']['output'];\n}\n\nexport interface BatchListRequest {\n activeOnly: Scalars['Boolean']['input'];\n}\n\nexport enum BcatGrantType {\n /** Manual */\n Manual = 'Manual',\n /** OncePerCcat */\n OncePerCcat = 'OncePerCcat',\n /** OncePerCcatAchievedLogic */\n OncePerCcatAchievedLogic = 'OncePerCcatAchievedLogic',\n /** OncePerCcatAchievement */\n OncePerCcatAchievement = 'OncePerCcatAchievement',\n /** OncePerCcatList */\n OncePerCcatList = 'OncePerCcatList'\n}\n\nexport enum BcatType {\n /** Download */\n Download = 'Download',\n /** Lineup */\n Lineup = 'Lineup',\n /** StampedPDF */\n StampedPdf = 'StampedPDF',\n /** TokenGlobal */\n TokenGlobal = 'TokenGlobal',\n /** TokenUnique */\n TokenUnique = 'TokenUnique',\n /** Url */\n Url = 'Url'\n}\n\nexport interface Benefit {\n benefitCatalogDetail?: Maybe;\n catalogId: Scalars['Int']['output'];\n certCatalogId: Scalars['Int']['output'];\n claimDate?: Maybe;\n claimed: Scalars['Boolean']['output'];\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDate']['output'];\n expireDate?: Maybe;\n id: Scalars['Int']['output'];\n status?: Maybe;\n token?: Maybe;\n uniqueTokenInvalid?: Maybe;\n url?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface BenefitCatalog {\n /** Indicates the number of months the exam will be active/available. */\n activePeriod: Scalars['Short']['output'];\n benefitGroup?: Maybe;\n certCatalogAssociationList?: Maybe>>;\n /** Indicates the last date that a candidate is able to claim a granted benefit. */\n claimEndDate?: Maybe;\n /** This value is used to override the default sorting, which is alphabetical. BenefitCatalog will sort by items with a DisplayOrder value, in that order, then alphabetically. */\n displayOrder?: Maybe;\n /** This is a calculated field based off the latest of all associated ccat end dates. */\n endDate?: Maybe;\n /** A non-unique token to be used with all benefits granted of this type. */\n globalToken?: Maybe;\n /** Defines how a benefit can be granted to a candidate. */\n grantType: BcatGrantType;\n id: Scalars['Int']['output'];\n /** The unique name of the benefit. */\n name: Scalars['String']['output'];\n /** The abbreviated name of the benefit. */\n nameAbbr?: Maybe;\n /** When true, indicates that the benefit should be visible, even if there is no underlying cert. */\n pinned?: Maybe;\n /** This is a calculated field based off the earliest of all associated ccat start dates. */\n startDate?: Maybe;\n /** Defines the type of benefit. */\n type: BcatType;\n /** A url to be used to redirect candidates to if necessary by a benefit. */\n url?: Maybe;\n /** Indicates the last date candidates can view the benefit. */\n viewEndDate?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface BenefitCatalogDetail {\n /** Indicates the number of months the exam will be active/available. */\n activePeriod: Scalars['Short']['output'];\n /** A list of voucher counts by batch ID for a benefit catalog. */\n batchCounts?: Maybe;\n /** A list of batch IDs for a benefit catalog. Defaults to active only if nothing is specified. */\n batchList?: Maybe>>;\n benefitGroup?: Maybe;\n certCatalogAssociationList?: Maybe>>;\n /** Indicates the last date that a candidate is able to claim a granted benefit. */\n claimEndDate?: Maybe;\n dataProvider?: Maybe;\n /** A set of objects that, if provided, allows localizing the description per culture per benefit. */\n description?: Maybe>>;\n /** This value is used to override the default sorting, which is alphabetical. BenefitCatalog will sort by items with a DisplayOrder value, in that order, then alphabetically. */\n displayOrder?: Maybe;\n /** This is a calculated field based off the latest of all associated ccat end dates. */\n endDate?: Maybe;\n /** Count of expired vouchers available for a benefit catalog. */\n expiredVoucherCount?: Maybe;\n /** A non-unique token to be used with all benefits granted of this type. */\n globalToken?: Maybe;\n /** Defines how a benefit can be granted to a candidate. */\n grantType: BcatGrantType;\n id: Scalars['Int']['output'];\n /** A set of objects that, if provided, allows localizing instructions per culture per benefit. */\n instructions?: Maybe>>;\n /** Count of invalidated vouchers available for a benefit catalog. */\n invalidatedVoucherCount?: Maybe;\n /** The unique name of the benefit. */\n name: Scalars['String']['output'];\n /** The abbreviated name of the benefit. */\n nameAbbr?: Maybe;\n /** When true, indicates that the benefit should be visible, even if there is no underlying cert. */\n pinned?: Maybe;\n /** Count of remainng vouchers available for a benefit catalog. */\n remainingVoucherCount?: Maybe;\n /** This is a calculated field based off the earliest of all associated ccat start dates. */\n startDate?: Maybe;\n /** Count of total vouchers available for a benefit catalog. */\n totalVoucherCount?: Maybe;\n /** Defines the type of benefit. */\n type: BcatType;\n /** A url to be used to redirect candidates to if necessary by a benefit. */\n url?: Maybe;\n /** Count of used vouchers available for a benefit catalog. */\n usedVoucherCount?: Maybe;\n /** Indicates the last date candidates can view the benefit. */\n viewEndDate?: Maybe;\n /** A list of vouchers for a benefit catalog. */\n voucherList?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface BenefitCatalogDetailBatchCountsArgs {\n request: VoucherCountByBatchRequest;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface BenefitCatalogDetailBatchListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface BenefitCatalogDetailVoucherListArgs {\n requestConfig?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface BenefitCcatAssoc {\n certCatalog?: Maybe;\n /** The last day that this benefit catalog/cert catalog combination can be granted to a candidate. */\n grantEndDate?: Maybe;\n /** The first day that this benefit catalog/cert catalog combination can be granted to a candidate. */\n grantStartDate?: Maybe;\n id: Scalars['Int']['output'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface BenefitGroup {\n /** This value is used to override the default sorting, which is alphabetical. BenefitGroup will sort by items with a DisplayOrder value, in that order, then alphabetically. */\n displayOrder?: Maybe;\n id: Scalars['Int']['output'];\n /** The name of the benefit. */\n name: Scalars['String']['output'];\n}\n\nexport enum BenefitStatus {\n /** Active */\n Active = 'Active',\n /** Expired */\n Expired = 'Expired',\n /** Used */\n Used = 'Used'\n}\n\nexport interface BulkCorruptExamRequest {\n corruptExamRequests: Array>;\n}\n\nexport interface BulkCorruptExamResponse {\n exam?: Maybe;\n examRegistrationNumber?: Maybe;\n note?: Maybe;\n status?: Maybe;\n}\n\nexport interface BulkCreateAffiliationRequest {\n /** Accepts an array of affiliation requests to create. Any errors will result in the whole request being rejected. */\n affiliationList?: InputMaybe>>;\n}\n\nexport interface BulkCreateExamAuthorizationRequest {\n /** A list of exam authorizations to upsert. */\n createExamAuthorizationRequests: Array>;\n}\n\nexport interface BulkCreateExamItemCatalogRequest {\n excatId: Scalars['Int']['input'];\n itemList?: InputMaybe>>;\n}\n\nexport interface BulkCreateExamSectionCatalogRequest {\n excatId: Scalars['Int']['input'];\n itemList?: InputMaybe>>;\n}\n\nexport interface BulkDeleteExamItemCatalogRequest {\n itemIdList: Array>;\n}\n\nexport interface BulkDeleteExamSectionCatalogRequest {\n itemIdList: Array>;\n}\n\nexport interface BulkExamValidation {\n dataProviderExternalId: Scalars['String']['output'];\n examRegistrationNumber: Scalars['String']['output'];\n examState: ExamState;\n note: Scalars['String']['output'];\n notifyCandidate?: Maybe;\n updateStatus: ExamValidationUpdateStatus;\n}\n\nexport interface BulkExamValidationRequest {\n examValidationList: Array>;\n}\n\nexport interface BulkUpdateAffiliationRequest {\n /** Accepts an array of affiliation requests to update or create. Any errors will result in the whole request being rejected. */\n affiliationList?: InputMaybe>>;\n}\n\nexport interface BulkUpdateCandidateAuxiliaryRequest {\n /** Accepts an array of candidate auxiliary update requests. */\n candidateUpdates?: InputMaybe>>;\n}\n\nexport interface BulkUpdateExamItemCatalogRequest {\n itemList?: InputMaybe>>;\n}\n\nexport interface BulkUpdateExamSectionCatalogRequest {\n itemList?: InputMaybe>>;\n}\n\nexport interface BulkUploadExamRequest {\n examRequests: Array>;\n}\n\nexport interface BulkUpsertAffiliationRequest {\n /** Accepts an array of affiliation requests to create or update. Any errors will result in the whole request being rejected. */\n affiliationList?: InputMaybe>>;\n}\n\nexport interface BulkUpsertExamItemCatalogRequest {\n excatId: Scalars['Int']['input'];\n itemList?: InputMaybe>>;\n}\n\nexport interface BulkUpsertExamSectionCatalogRequest {\n excatId: Scalars['Int']['input'];\n itemList?: InputMaybe>>;\n}\n\nexport interface BulkVoucherInvalidateRequest {\n batchId: Scalars['String']['input'];\n bcatId: Scalars['Int']['input'];\n reassign?: InputMaybe;\n}\n\nexport interface BulkVoucherUpload {\n batchId?: Maybe;\n bcatId: Scalars['Int']['output'];\n inactiveDate?: Maybe;\n tokenId?: Maybe;\n}\n\nexport interface BulkVoucherUploadRequest {\n batchId: Scalars['String']['input'];\n bcatId: Scalars['Int']['input'];\n voucherList: Array>;\n}\n\n/**\n * The current data for a candidate account.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfile\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface Candidate {\n /**\n * True when the address is considered bad for some reason. Either core data is missing or some entity/process has flagged the data as bad.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1Bad: Scalars['Boolean']['output'];\n /**\n * When true, the address is for a business. Otherwise, the address is residential.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1Business: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1City?: Maybe;\n /**\n * A 3-char ISO-3166-1 code.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1CountryCode?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1FaxNumber?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1Line1?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1Line2?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1Line3?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1PhoneNumber?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1PostalCode?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1State?: Maybe;\n /**\n * True when the address is considered bad for some reason. Either core data is missing or some entity/process has flagged the data as bad.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2Bad: Scalars['Boolean']['output'];\n /**\n * When true, the address is for a business. Otherwise, the address is residential.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2Business: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2City?: Maybe;\n /**\n * A 3-char ISO-3166-1 code.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2CountryCode?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2FaxNumber?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2Line1?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2Line2?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2Line3?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2PhoneNumber?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2PostalCode?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.View\r\n *\n */\n addr2State?: Maybe;\n /** Shows information about the candidate and the entity they affiliate with as defined by the client Affiliation list. */\n affiliation?: Maybe;\n /** The attributes for the candidate. These are free-form text entry (name/value pair) items. */\n attributes?: Maybe>>;\n /** The un-versioned portion of the core candidate data. */\n auxiliaryData?: Maybe;\n /** The CertMetrics Candidate Id. It is usually better to use an external Id (use the Identification field) since those do not incur merge-related complications. */\n cmcId: Scalars['Int']['output'];\n /**\n * The name of the company with which the candidate indicates they are affiliated with or work for. This is not used when the Affiliation feature is on.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n companyName?: Maybe;\n /**\n * The date of birth of the candidate.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileDateOfBirth\r\n * \r\n * - Requires All Permissions: Candidate.DateOfBirth.View\r\n *\n */\n dateOfBirth?: Maybe;\n /**\n * When this revision became effective.\r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n effective: Scalars['CmDateTimeOffset']['output'];\n /**\n * The email address of the candidate.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n email?: Maybe;\n /**\n * Does this candidate have a password?\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\n hasPassword?: Maybe;\n /**\n * Lists the external Id data for the account. The default is to return only the preferred Id on the default data provider for the account used to access this field.\r\n * \r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryInformation.View, ViewCandidateExternalIds.View\r\n *\n */\n identificationList?: Maybe>>;\n /**\n * Info about the import data provider; NULL means this revision was not from an import process.\r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n importDataProvider?: Maybe;\n /**\n * The Id of the data provider where this revision came from; NULL means it was not from an import process.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n importDpId?: Maybe;\n /**\n * The file this revision was imported from; NULL means it was not from an import process.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n importSource?: Maybe;\n /**\n * True when the address is considered bad for some reason. Either core data is missing or some entity/process has flagged the data as bad.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.View\r\n *\n */\n locAddr1Bad: Scalars['Boolean']['output'];\n /**\n * The localized version of the corresponding Addr1 data. Used only for printed fulfillment.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.View\r\n *\n */\n locAddr1City?: Maybe;\n /**\n * The localized version of the corresponding Addr1 data. Used only for printed fulfillment.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.View\r\n *\n */\n locAddr1Line1?: Maybe;\n /**\n * The localized version of the corresponding Addr1 data. Used only for printed fulfillment.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.View\r\n *\n */\n locAddr1Line2?: Maybe;\n /**\n * The localized version of the corresponding Addr1 data. Used only for printed fulfillment.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.View\r\n *\n */\n locAddr1Line3?: Maybe;\n /**\n * The localized version of the corresponding Addr1 data. Used only for printed fulfillment.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.View\r\n *\n */\n locAddr1PostalCode?: Maybe;\n /**\n * The localized version of the corresponding Addr1 data. Used only for printed fulfillment.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.View\r\n *\n */\n locAddr1State?: Maybe;\n /**\n * The localized version of the CompanyName data. Used only for printed fulfillment.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedInformation.View\r\n *\n */\n locCompanyName?: Maybe;\n /**\n * The localized version of the NameFirst data. Used for printed fulfillment and other non-authoritative locations, depending on client need.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedInformation.View\r\n *\n */\n locNameFirst?: Maybe;\n /**\n * The localized version of the NameLast data. Used for printed fulfillment and other non-authoritative locations, depending on client need.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedInformation.View\r\n *\n */\n locNameLast?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n nameFirst: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n nameInvalid: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n nameLast: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n * \r\n * - Requires All Permissions: CandidateProfile.PreferredName.View\r\n *\n */\n preferredNameFirst?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n * \r\n * - Requires All Permissions: CandidateProfile.PreferredName.View\r\n *\n */\n preferredNameLast?: Maybe;\n /** The internal row Id of the dmgr revision. */\n rowId: Scalars['Int']['output'];\n /**\n * The date this revision was created/updated in the system; this is often different than EffectiveStarts, especially when the data came from an external source.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n updated: Scalars['CmDateTimeOffset']['output'];\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n updator?: Maybe;\n}\n\n\n/**\n * The current data for a candidate account.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfile\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateIdentificationListArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccount {\n /**\n * A list of Candidate badges from Accredible.\r\n * \r\n * \r\n * - Requires All Features: ShareAccredibleBadging\r\n * \r\n * - Requires All Permissions: AccredibleBadging.Catalog.View\r\n *\n */\n accredibleCandidateBadgeList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliationRequired\r\n * \r\n * - Requires All Permissions: Candidate.Affiliation.View\r\n *\n */\n affiliationUpdateRequired?: Maybe;\n /**\n * The attributes for the account. These are free-form text entry (name/value pair) items.\n * @deprecated This field has been deprecated. Use the Attributes field on the Candidate type instead.\n */\n attributes?: Maybe>>;\n /**\n * The un-versioned portion of the core candidate data.\n * @deprecated Moved to candidate so this data is accessible in search results\n */\n auxiliaryData?: Maybe;\n /** Gives details for a specific badge. ExternalId maps to the open badge standard of UID. */\n badgeDetail?: Maybe;\n /** Gives a list of this users badges */\n badgeList?: Maybe>>;\n /**\n * Information about a single Benefit record on a Candidate account.\r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\n benefitDetail?: Maybe;\n /**\n * Benefit List\r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\n benefitList?: Maybe>>;\n /** Whether a candidate can freely update their own name. */\n canUpdateName?: Maybe;\n /** This is the main Candidate object that contains profile and account setting information. */\n candidate?: Maybe;\n /**\n * A flag for determining if the candidate's email needs confirming.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationRequireEmailConfirmation\r\n *\n */\n candidateEmailConfirmationRequired: Scalars['Boolean']['output'];\n /**\n * A flag for determining if the candidate's name needs verifying.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationRequireNameVerification\r\n *\n */\n candidateNameVerificationRequired?: Maybe;\n /** All previous and current versions of this candidate. */\n candidateVersionList?: Maybe>>;\n /**\n * Indicates if this candidate has signed the latest agreement.\r\n * \r\n * \r\n * - Requires All Features: CredentialAgreementAtLogin\r\n * \r\n * - Requires All Permissions: Candidate.CredentialAgreements.View\r\n *\n */\n certAgreementRequired?: Maybe;\n /**\n * Indicates the status of the candidate's current agreement.\r\n * \r\n * \r\n * - Requires All Features: CredentialAgreement\r\n *\n */\n certAgreementStatus?: Maybe;\n /** Detailed information about a single Cert record on a Candidate account. */\n certDetail?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n certHistoryList?: Maybe>>;\n /** The list of certifications on the candidate account. This can include started, active, suspended, and expired certifications. */\n certList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n *\n */\n certProcessRequestList?: Maybe>>;\n /** Returns one specific 'other requirement' on the candidate account. Other requirements are defined as requirements that can be used toward certification but are not exams or certifications. Other requirements include fees, agreements, training, etc. */\n certRequirementDetail?: Maybe;\n /** Returns the list of 'other requirements' on the candidate account. Other requirements are defined as requirements that can be used toward certification but are not exams or certifications. Other requirements include fees, agreements, training, etc. */\n certRequirementList?: Maybe>>;\n cmcId: Scalars['Int']['output'];\n /**\n * The list of credly badges on the candidate account.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Permissions: Credly.Admin.View\r\n *\n */\n credlyBadgeList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileDateOfBirth\r\n * \r\n * - Requires All Permissions: Candidate.DateOfBirth.View\r\n *\n */\n dateOfBirthInvalid: Scalars['Boolean']['output'];\n dpExternalId?: Maybe;\n /**\n * The list of electronic transactions made by the candidate.\r\n * \r\n * \r\n * - Requires All Features: Ecommerce, EcommerceShowTransactionHistory\r\n * \r\n * - Requires All Permissions: Ecommerce.Transactions.View\r\n *\n */\n eTransactionList?: Maybe>>;\n /** A list of the exam catalog entries a candidate can schedule for. */\n eligibleExamList?: Maybe>>;\n /**\n * Shows detailed information on a specific email request.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.EmailHistory.View\r\n *\n */\n emailRequestDetail?: Maybe;\n /**\n * Shows a list of email requests associated with this candidate account.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.EmailHistory.View\r\n *\n */\n emailRequestList?: Maybe>>;\n /**\n * Returns the list of exam accomm packs on the candidate account.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\n examAccommPackDetail?: Maybe;\n /**\n * Returns the list of exam accomm packs on the candidate account.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\n examAccommPackList?: Maybe>>;\n /**\n * A list of the exam authorization packs (eligibilities) for a candidate.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires All Permissions: Exam.Authorizations.View\r\n *\n */\n examAuthorizationPackList?: Maybe>>;\n /** Detailed information about a single Exam record on a Candidate account. */\n examDetail?: Maybe;\n /** Shows a list of exam events associated with this candidate account. */\n examEventList?: Maybe>>;\n /** Returns the list of exam images. */\n examImageList?: Maybe>>;\n /**\n * Returns the list of exams on the candidate account. Exams may be active, expired, invalidated, hidden, under review, etc.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.Exams.View\r\n *\n */\n examList?: Maybe>>;\n /**\n * Returns the list of exam violations on the candidate account.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.Exams.View\r\n *\n */\n examViolationList?: Maybe>>;\n /** A list of the exam vouchers for this candidate. */\n examVoucherList?: Maybe>>;\n externalId?: Maybe;\n /**\n * A list of exam catalogs that an authorization can be manually granted for.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires All Permissions: Exam.Authorizations.View\r\n *\n */\n grantableExamAuthorizationPackList?: Maybe>>;\n /**\n * Shows detailed information on a specific candidate history entry.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n historyDetail?: Maybe;\n /**\n * Shows a list of this candidates history entries.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n historyList?: Maybe>>;\n /**\n * Indicates if this candidate has signed the latest agreement within the required number of days.\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownloadAgreement\r\n *\n */\n logoAgreementRequired?: Maybe;\n /**\n * Shows a list of this candidates merge history entries.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.MergeHistory.View\r\n *\n */\n mergeHistoryList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateProfileAddressesPrimaryRequireMinimum, CandidateAccessIntegrationEgressPearsonVue\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n minimumPrimaryAddressInformationRequired?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateProfilePrimaryInformationRequireMinimum, CandidateAccessIntegrationEgressPearsonVue\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n minimumPrimaryProfileInformationRequired?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n nameUpdateRequired?: Maybe;\n /**\n * A list of OtherAchievements for this candidate.\r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLoginEMCOtherAchievements\r\n * \r\n * - Requires All Permissions: Candidate.OtherAchievement.View\r\n *\n */\n otherAchievementList?: Maybe>>;\n /**\n * Paddle subscription data for the candidate.\r\n * \r\n * \r\n * - Requires All Features: CandidateAccessIntegrationEgressTestrun\r\n *\n */\n paddleData?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.View\r\n *\n */\n pendingFulfillmentDmgr?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.View\r\n *\n */\n pendingFulfillmentRequeue?: Maybe;\n /** Shows detailed information on a specific fulfillment. */\n physicalFulfillmentDetail?: Maybe;\n /** Shows a list of this candidates physical fulfillments. */\n physicalFulfillmentList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n primaryInformationUpdateRequired?: Maybe;\n /**\n * A list of the transaction catalogs for this candidate.\r\n * \r\n * \r\n * - Requires All Features: Ecommerce\r\n * \r\n * - Requires All Permissions: Ecommerce.Catalog.View\r\n *\n */\n purchaseableETransactionCatalogList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Requires All Permissions: Candidate.SponsorSettings.Settings.View\r\n *\n */\n requiredSettingsMissing?: Maybe;\n /** The selected custom settings (AKA candidate list associations) for the account. */\n settings?: Maybe>>;\n /** Shows detailed information on a specific candidate transcript. */\n transcriptDetail?: Maybe;\n /** Shows a list of this candidates transcripts. */\n transcriptList?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountBadgeDetailArgs {\n request: RequestByExternalId;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountBenefitDetailArgs {\n request: RequestById;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountCertDetailArgs {\n request: RequestById;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountCertHistoryListArgs {\n request: CandidateCertHistoryListRequest;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountCertListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountCertRequirementDetailArgs {\n request: RequestByIdOrExternalId;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountCertRequirementListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountEligibleExamListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountEmailRequestDetailArgs {\n request: RequestById;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountExamAccommPackDetailArgs {\n request: RequestById;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountExamDetailArgs {\n request: RequestById;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountHistoryDetailArgs {\n request: RequestById;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountPhysicalFulfillmentDetailArgs {\n request: RequestByIdOrExternalId;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountPurchaseableETransactionCatalogListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAccountTranscriptDetailArgs {\n request: RequestByIdOrExternalId;\n}\n\n/**\n * When the Candidate Affiliation feature is enabled, shows more information about the entity the candidate is affiliated with.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n * \r\n * - Requires All Permissions: Candidate.Affiliation.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAffiliation {\n /** A unique identifier for the candidate at the affiliated entity. */\n affiliateId?: Maybe;\n /** Provides more information about the Affiliation definition. */\n affiliationCatalog?: Maybe;\n /** The email address the candidate uses as part of the affiliated entity. */\n email?: Maybe;\n /** Primary key for the Affiliation that the candidated has selected that they are affiliated with. */\n id?: Maybe;\n /** This value can only be set if the OtherFormat of the Affiliation indicates that the candidate needs to enter a free-form Affiliation name, as the entity they are affiliated with is not found. */\n otherAffiliationName?: Maybe;\n}\n\n/**\n * This is a client-defined name/value pair value stored on a candidate account.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataAttributes\r\n * \r\n * - Requires All Permissions: Candidate.SponsorSettings.Attributes.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAttribute {\n /** The catalog/definition of the item when one has been defined. */\n attributeCatalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n /** The name/key as defined by the client. */\n name: Scalars['String']['output'];\n updated: Scalars['CmDateTimeOffset']['output'];\n /** The arbitrary value to store. */\n value?: Maybe;\n}\n\n/**\n * This stores an arbitrary, candidate-specific collection of name-value pairs. The names are unique per-candidate.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataAttributes\r\n *\n */\nexport interface CandidateAttributeCatalog {\n /** True if the candidate can edit their data for this attribute */\n candidateEdit?: Maybe;\n /**\n * True if the candidate can see their data for this attribute.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n candidateView?: Maybe;\n /** For descriptive text to say what the attribute is for (and what rules should be followed when entering information for it). Null for no description. */\n description?: Maybe;\n /** A regular expression describing the format values must be in when editing */\n format?: Maybe;\n /** Determines if the stored value is interpreted/used as either a datetime or just a date */\n formatDateTime?: Maybe;\n id: Scalars['Int']['output'];\n /** What is displayed on the web for the attribute; null means use the name. */\n label?: Maybe;\n /** Matches the CandidateAttribute Name */\n name: Scalars['String']['output'];\n /**\n * True if a user with edit-permissions can edit data for this attribute on candidates.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n userEdit?: Maybe;\n /**\n * True if a user with view-permissions can see data for this attribute on candidates. \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n userView?: Maybe;\n}\n\n/**\n * This is used to indicate how to search for a candidate account by attribute data. All fields must be specifed. Only exact matches are returned.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataAttributes\r\n * \r\n * - Requires All Permissions: Candidate.Search, Candidate.SponsorSettings.Attributes.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAttributeSearchRequest {\n /** The name of the candidate attribute. */\n name?: InputMaybe;\n /** The value of the candidate attribute. */\n value?: InputMaybe;\n}\n\n/**\n * The part of the Candidate entity/profile that is not versioned. Contains settings and other static options used on the Candidate account.\r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateAuxiliary {\n /**\n * Before this date, the candidate is banned from accessing the system.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.BannedStatus.View\r\n *\n */\n bannedUntil?: Maybe;\n /**\n * When true, the badges are enabled to be verified for the Candidate in the Open Badging feature. This should not be true unless the OpenBadgeIdentity property is set.\r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n * \r\n * - Requires All Permissions: Candidate.CertMetricsBadging.View\r\n *\n */\n certMetricsBadgingEnabled: Scalars['Boolean']['output'];\n /**\n * This is the unique recipient identity value (email) used when a Candidate is asserting badges in the Open Badge feature.\r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n * \r\n * - Requires All Permissions: Candidate.CertMetricsBadging.View\r\n *\n */\n certMetricsBadgingIdentity?: Maybe;\n cmcId?: Maybe;\n /**\n * When this value is true, the Candidate profile is not allowed to be updated by the import process.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ImportSettings.View\r\n *\n */\n dmgrProtected: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.EmailPreferences.View\r\n *\n */\n emailLanguage: Scalars['String']['output'];\n /**\n * When this value is true, the import process will not update the email field on the Candidate profile.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ImportSettings.View\r\n *\n */\n emailProtected: Scalars['Boolean']['output'];\n /**\n * This is a hint that can be used in the forgot-password feature. If this is set, the ForgotPwdPhrase will also be set. These two values will be different if set.\r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLogin\r\n * \r\n * - Requires All Permissions: Candidate.SecuritySettings.View\r\n *\n * @deprecated Password hint and phrase are no longer permitted as password reset methods.\n */\n forgotPwdHint?: Maybe;\n /**\n * This is a phrase that can be used in the forgot-password feature. If this is set, the ForgotPwdHint will also be set. These two values will be different if set.\r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLogin\r\n * \r\n * - Requires All Permissions: Candidate.SecuritySettings.View\r\n *\n * @deprecated Password hint and phrase are no longer permitted as password reset methods.\n */\n forgotPwdPhrase?: Maybe;\n /**\n * True when the candidate is presently banned.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.BannedStatus.View\r\n *\n */\n isBanned?: Maybe;\n /**\n * True when the candidate is presently on the watch list.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.WatchStatus.View\r\n *\n */\n isWatched?: Maybe;\n /**\n * When this value is true, the import process will not update the English name fields on the Candidate profile.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ImportSettings.View\r\n *\n */\n nameProtected: Scalars['Boolean']['output'];\n /**\n * When this is true, the system will only send emails for emcats where the trigger is the Candidate themselves, where the emcat is required to use the system.\r\n * \r\n * \r\n * - Requires All Features: CandidatePreferencesDisableEmails\r\n * \r\n * - Requires All Permissions: Candidate.EmailPreferences.Toggle.View\r\n *\n */\n restrictEmcats?: Maybe;\n /**\n * When true, badges are not processed or sent to external systems. This does not affect the Open Badging feature that is hosted by CertMetrics.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires Any Features: ShareCredlyBadging, ShareAccredibleBadging\r\n * \r\n * - Requires Any Permissions: Candidate.CredlyBadgingSettings.View, AccredibleBadging.CandidateSettings.View\r\n *\n */\n restrictExternalBadging: Scalars['Boolean']['output'];\n /**\n * When true, the candidate is only able to test at a test center.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamTestCenterRestriction\r\n * \r\n * - Requires All Permissions: Candidate.BannedStatus.View\r\n *\n */\n restrictTesting: Scalars['Boolean']['output'];\n /**\n * This field is used in the merge process. When true, this indicates that the Candidate has been determined to be a unique Candidate and should not be merged into another Candidate Account.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: MergeCandidates\r\n * \r\n * - Requires All Permissions: Candidate.MergeSettings.View\r\n *\n */\n unique: Scalars['Boolean']['output'];\n updated: Scalars['CmDateTimeOffset']['output'];\n updator?: Maybe;\n /**\n * Before this date, the candidate is on a watch list and their data may be treated differently in the system.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.WatchStatus.View\r\n *\n */\n watchUntil?: Maybe;\n}\n\nexport interface CandidateCertHistoryListRequest {\n manualGrantsOnly?: InputMaybe;\n}\n\n/**\n * This is used to indicate how to search for a candidate account by demographics data. At least one field must be specified, and all specified fields must match for an account to match the search.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.Search\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateDemographicsSearchRequest {\n /**\n * Specify this to search by the city value on the candidate's primary address.\r\n * \r\n * \r\n * - Requires Any Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1City?: InputMaybe;\n /**\n * Specify this to search by the ISO country code value on the candidate's primary address.\r\n * \r\n * \r\n * - Requires Any Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1CountryCode?: InputMaybe;\n /**\n * Specify this to search by the state/province value on the candidate's primary address.\r\n * \r\n * \r\n * - Requires Any Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryAddress.View\r\n *\n */\n addr1State?: InputMaybe;\n /**\n * Specify this to search by the candidate's first name.\r\n * \r\n * \r\n * - Requires Any Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n nameFirst?: InputMaybe;\n /**\n * Specify this to search by the candidate's last name.\r\n * \r\n * \r\n * - Requires Any Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n nameLast?: InputMaybe;\n}\n\n/** Contains the ExternalId, that externally identifies a candidate account, plus other metadata. */\nexport interface CandidateExternalId {\n created: Scalars['CmDateTimeOffset']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n /** The unique Id (PK) of the data provider that 'owns' this external Id. This is considered the domain/context/scope within which the Id is unique. */\n dpId: Scalars['Int']['output'];\n /** This value uniquely identifies the candidate within the domain/context/scope of the indicated data provider. */\n externalId: Scalars['String']['output'];\n id: Scalars['Int']['output'];\n /** Multiple different Ids may exist for a single candidate within the context of any given data provider, but only 1 will be marked as preferred. This is mostly so that a UI/export can have an easy way to pick which Id to render when multiple exist. */\n isPreferred: Scalars['Boolean']['output'];\n}\n\nexport interface CandidateExternalIdListRequestVmGqlType {\n /** Specify true to receive Ids for any data provider. With false (the default), you only receive Ids for your account's default data provider. */\n allDps?: InputMaybe;\n /** Specify true to receive all Ids, not just the preferred one. With false (the default), you only recieve the preferred Id for each data provider included. */\n allIdsForEachDp?: InputMaybe;\n}\n\nexport interface CandidateGdprRequest {\n cmcId?: InputMaybe;\n dryRun?: InputMaybe;\n}\n\n/**\n * The history for a candidate account.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.History.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateHistory {\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n creator?: Maybe;\n id: Scalars['Int']['output'];\n message?: Maybe;\n targetId?: Maybe;\n type: ChistType;\n}\n\n/**\n * The history for a candidate account.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.History.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateHistoryDetail {\n certRequirement?: Maybe;\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n creator?: Maybe;\n electronicFulfillment?: Maybe;\n exam?: Maybe;\n id: Scalars['Int']['output'];\n identification?: Maybe;\n message?: Maybe;\n physicalFulfillment?: Maybe;\n targetId?: Maybe;\n type: ChistType;\n}\n\nexport interface CandidateIdRequest {\n /** The CertMetrics Candidate Id. When this is set, all other fields are ignored. */\n cmcId?: InputMaybe;\n /** This is used to indicate what DataProvider (e.g. the provider representing the CertMetrics Client Candidate Id or a testing vendor) to search for the specified ExternalId. If this is not set, the default DataProvider for your account is used (most commonly the one that is for the CertMetrics Client Candidate Id, which is usually the login Id. */\n dpExternalId?: InputMaybe;\n /** A unique Id that indirectly identifies a candidate account. E.g. the Id the candidate uses to login or the candidate's Id at a testing vendor. */\n externalId?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: MergeCandidates\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateMerge {\n approver?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n dataProvider?: Maybe;\n id: Scalars['Int']['output'];\n /** This is snapshotted data, so resolved fields may not function as expected. */\n loserCandidate?: Maybe;\n loserCmcId?: Maybe;\n loserIdentificationList?: Maybe>>;\n message?: Maybe;\n requestState: MergeRequestState;\n requestor?: Maybe;\n state: MergeState;\n updated?: Maybe;\n winnerCandidate?: Maybe;\n winnerCmcId?: Maybe;\n winnerIdentificationList?: Maybe>>;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: MergeCandidates\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateMergeDetail {\n approver?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n dataProvider?: Maybe;\n id: Scalars['Int']['output'];\n /** This is snapshotted data, so resolved fields may not function as expected. */\n loserAuxiliaryData?: Maybe;\n /** This is snapshotted data, so resolved fields may not function as expected. */\n loserCandidate?: Maybe;\n loserCertRequirementList?: Maybe>>;\n loserCmcId?: Maybe;\n loserExamList?: Maybe>>;\n loserIdentificationList?: Maybe>>;\n loserOverrides?: Maybe>>;\n message?: Maybe;\n requestState: MergeRequestState;\n requestor?: Maybe;\n state: MergeState;\n updated?: Maybe;\n winnerAuxiliaryData?: Maybe;\n winnerCandidate?: Maybe;\n winnerCertRequirementList?: Maybe>>;\n winnerCmcId?: Maybe;\n winnerExamList?: Maybe>>;\n winnerIdentificationList?: Maybe>>;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: MergeCandidatesCandidateSelfMerge, MergeCandidates\r\n * \r\n * - Requires All Permissions: MergeList.View\r\n *\n */\nexport interface CandidateMergeListRequest {\n /** If true, only returns merge requests that were initiated by a candidate. */\n candidateRequestedOnly: Scalars['Boolean']['input'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\nexport interface CandidateOtherAchievement {\n activeDate: Scalars['DateTime']['output'];\n catalogId?: Maybe;\n cmcId?: Maybe;\n created: Scalars['DateTime']['output'];\n deleted?: Maybe;\n expirationDate?: Maybe;\n externalId?: Maybe;\n funded?: Maybe;\n id?: Maybe;\n updated?: Maybe;\n verification?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\n verified?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\nexport interface CandidateOtherAchievementResponse {\n activeDate: Scalars['DateTime']['output'];\n catalog?: Maybe;\n cmcId?: Maybe;\n created: Scalars['DateTime']['output'];\n deleted?: Maybe;\n expireDate?: Maybe;\n externalId?: Maybe;\n funded?: Maybe;\n id?: Maybe;\n otherAchievementId?: Maybe;\n state?: Maybe;\n updated?: Maybe;\n verification?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\n verified?: Maybe;\n}\n\nexport enum CandidateOtherAchievementState {\n /** Active */\n Active = 'Active',\n /** Deleted */\n Deleted = 'Deleted',\n /** Expired */\n Expired = 'Expired'\n}\n\n/**\n * This is used to indicate how to search for a candidate account. Exactly one type of search must be specified per request.\r\n * \r\n * \r\n * - Requires Any Features: CandidateProfile\r\n * \r\n * - Requires All Permissions: Candidate.Search\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateSearchRequest {\n /**\n * Specify this to search by the affiliation Id value (AKA: Employee Id.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n * \r\n * - Requires All Permissions: Candidate.Affiliation.View\r\n *\n */\n affiliationId?: InputMaybe;\n /** Specify this to search by a candidate attribute. */\n attribute?: InputMaybe;\n /** Specify this to search by a combination of candidate demographics data. */\n demographics?: InputMaybe;\n /**\n * Specify this to search by email address or affiliation email address (if the feature is on).\r\n * \r\n * \r\n * - Requires Any Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryInformation.View, Candidate.Affiliation.View\r\n *\n */\n emailAddr?: InputMaybe;\n /**\n * Specify this to search by an Exam Authorization Id (i.e. exam eligibilities).\r\n * \r\n * \r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires Any Permissions: Candidate.Exams.View\r\n *\n */\n examAuthorizationId?: InputMaybe;\n /**\n * Specify this to search by the Registration Id of an exam result.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires Any Permissions: Candidate.Exams.View\r\n *\n */\n examRegistrationId?: InputMaybe;\n /**\n * Specify this to search by External Id (AKA: a Login Id).\r\n * \r\n * \r\n * - Requires Any Permissions: CandidateProfile.PrimaryInformation.View\r\n *\n */\n externalId?: InputMaybe;\n}\n\nexport interface CandidateSecurityConfigurationGqlType {\n unparsedConfig?: Maybe;\n}\n\n/**\n * The association between a candidate account and a custom multiple-choice, single/multiple response option (AKA candidate list associations); this indicates the account has selected this item/option.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Requires All Permissions: Candidate.SponsorSettings.Settings.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateSettingAssoc {\n cmcId: Scalars['Int']['output'];\n /** The date the selection was made and became effective. */\n created: Scalars['CmDateTimeOffset']['output'];\n /**\n * Who made the change.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n creator?: Maybe;\n /** The item the candidate selected. */\n settingItem?: Maybe;\n /** The item that the candidate selected (is assoicated with) */\n settingItemId: Scalars['Int']['output'];\n}\n\n/**\n * The candidate setting filter for users.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface CandidateSettingFilter {\n /** The date the filter was created. */\n created: Scalars['DateTime']['output'];\n /** The id of the filter. */\n id: Scalars['Int']['output'];\n /** The name of the filter. */\n name: Scalars['String']['output'];\n /** All candidate settings associated with the filter. */\n settings?: Maybe>>;\n}\n\n/**\n * Shows high-level information about the transcript.\r\n * \r\n * \r\n * - Requires All Features: ShareTranscript\r\n * \r\n * - Requires All Permissions: Candidate.Transcripts.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CandidateTranscript {\n addrDisplay: CtranAddrDisplay;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowCredentials\r\n *\n */\n certDateOk: Scalars['Boolean']['output'];\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowOtherRequirements\r\n *\n */\n creqDateOk: Scalars['Boolean']['output'];\n disabled: Scalars['Boolean']['output'];\n displayMode: CtranDisplayMode;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n *\n */\n displayPreferredName: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowExams\r\n *\n */\n examDateOk: Scalars['Boolean']['output'];\n expireDate: Scalars['CmDate']['output'];\n externalId: Scalars['String']['output'];\n id: Scalars['Int']['output'];\n imageOk: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowCredentials\r\n *\n */\n includeAllCerts: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowOtherRequirements\r\n *\n */\n includeAllCreqs: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowExams\r\n *\n */\n includeAllExams: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowAchievements\r\n *\n */\n includeAllStandings: Scalars['Boolean']['output'];\n label?: Maybe;\n lastView?: Maybe;\n remarks?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowAchievements\r\n *\n */\n standingsDateOk: Scalars['Boolean']['output'];\n views: Scalars['Int']['output'];\n}\n\n/**\n * Shows low-level and related information about the transcript.\r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\n */\nexport interface CandidateTranscriptDetail {\n addrDisplay: CtranAddrDisplay;\n /**\n * Certification catalog ids excluded from the transcript\r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowCredentials\r\n *\n */\n certCatalogInclusions?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowCredentials\r\n *\n */\n certDateOk: Scalars['Boolean']['output'];\n /**\n * Certification requirement catalog ids excluded from the transcript\r\n * \r\n * \r\n * - Requires Any Features: ShareTranscriptAllowAchievements, ShareTranscriptAllowOtherRequirements\r\n *\n */\n certRequirementInclusions?: Maybe>>;\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowOtherRequirements\r\n *\n */\n creqDateOk: Scalars['Boolean']['output'];\n disabled: Scalars['Boolean']['output'];\n displayMode: CtranDisplayMode;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n *\n */\n displayPreferredName: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowExams\r\n *\n */\n examDateOk: Scalars['Boolean']['output'];\n /**\n * Exam ids included in the transcript\r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowExams\r\n *\n */\n examInclusions?: Maybe>>;\n expireDate: Scalars['CmDate']['output'];\n externalId: Scalars['String']['output'];\n id: Scalars['Int']['output'];\n imageOk: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowCredentials\r\n *\n */\n includeAllCerts: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowOtherRequirements\r\n *\n */\n includeAllCreqs: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowExams\r\n *\n */\n includeAllExams: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowAchievements\r\n *\n */\n includeAllStandings: Scalars['Boolean']['output'];\n label?: Maybe;\n lastView?: Maybe;\n remarks?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareTranscriptAllowAchievements\r\n *\n */\n standingsDateOk: Scalars['Boolean']['output'];\n views: Scalars['Int']['output'];\n}\n\nexport interface CandidateUnmergeRequest {\n comment?: InputMaybe;\n id?: InputMaybe;\n}\n\n/** Returns binary Data of various attachments to catalog items (Cert Logos, Badge Images, etc.) */\nexport interface CatalogAttachment {\n /** The language for the data for the file, default is english */\n ciName?: Maybe;\n /** A flag indicating if this attachment is disabled. */\n disabledFlag: Scalars['Boolean']['output'];\n /** The id of the record */\n id: Scalars['Int']['output'];\n /** The ID of the target of the item's data you are looking */\n targetId: Scalars['Int']['output'];\n /** The type of the Attachment */\n type?: Maybe;\n /** The url to access the file */\n url?: Maybe;\n}\n\nexport interface CatalogExternalId {\n /** When the record became active, null means forever. */\n activeDate?: Maybe;\n /** Which data provider the external id is used for/with. */\n dataProvider?: Maybe;\n /** True when the record is considered deleted. */\n disabled?: Maybe;\n /** When the record will become flagged as deleted. */\n expireDate?: Maybe;\n /** How the external system refers to the catalog item. */\n externalId?: Maybe;\n /** Determines which catalog the external id is related to. */\n type?: Maybe;\n}\n\nexport enum CatchType {\n /** CcatLogo */\n CcatLogo = 'CcatLogo',\n /** CcatOpenBadge */\n CcatOpenBadge = 'CcatOpenBadge',\n /** CrcatOpenBadge */\n CrcatOpenBadge = 'CrcatOpenBadge',\n /** ExcatOpenBadge */\n ExcatOpenBadge = 'ExcatOpenBadge',\n /** ExcatScoreReportFail */\n ExcatScoreReportFail = 'ExcatScoreReportFail',\n /** ExcatScoreReportPass */\n ExcatScoreReportPass = 'ExcatScoreReportPass',\n /** FcatTemplate */\n FcatTemplate = 'FcatTemplate',\n /** Invalid */\n Invalid = 'Invalid',\n /** StandingLogoFile */\n StandingLogoFile = 'StandingLogoFile',\n /** StandingTemplate */\n StandingTemplate = 'StandingTemplate'\n}\n\nexport enum CateidType {\n /** Ccat */\n Ccat = 'Ccat',\n /** Crcat */\n Crcat = 'Crcat',\n /** Excat */\n Excat = 'Excat',\n /** ExcatDataProvider */\n ExcatDataProvider = 'ExcatDataProvider'\n}\n\nexport enum CcatExtensionType {\n /** ExtendFromInactiveDate */\n ExtendFromInactiveDate = 'ExtendFromInactiveDate',\n /** IncludeSuspendedTime */\n IncludeSuspendedTime = 'IncludeSuspendedTime',\n /** Normal */\n Normal = 'Normal'\n}\n\nexport enum CcatPathType {\n /** OneShot */\n OneShot = 'OneShot',\n /** OneShotExtendable */\n OneShotExtendable = 'OneShotExtendable',\n /** Repeatable */\n Repeatable = 'Repeatable'\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.Credentials.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface Cert {\n /** The date the Cert became Active. */\n activeDate?: Maybe;\n catalogId: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialProgramNumber\r\n *\n */\n catalogProgramNumber?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialProgramNumber\r\n *\n */\n catalogProgramNumberLabel?: Maybe;\n certCatalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n * \r\n * - Requires All Permissions: Candidate.Requirements.ContinuingEducation.View\r\n *\n */\n continuingEducationProgress?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialElectronicCertificate\r\n *\n */\n eCertUrl?: Maybe;\n /** The date after which the Cert will become Expired if there is a Suspend period. */\n expireDate?: Maybe;\n id: Scalars['Int']['output'];\n /** The date after which the Cert will become Suspended or Expired, depending on if the Cert track has a Suspend period. */\n inactiveDate?: Maybe;\n /** The last date the InactiveDate moved forward, indicating a recertification or extension. */\n latestExtendDate?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: SnowflakeDisplayBadgeId\r\n *\n */\n snowflakeBadgeId?: Maybe;\n /** Indicates for a Cert in Started status, the date of the first requirement that was achieved that applies to this Cert track. */\n startedDate?: Maybe;\n /** The current status of the Cert. */\n status: CertStatus;\n}\n\nexport enum CertAgreementStatus {\n /** InactiveAgreementAvailable */\n InactiveAgreementAvailable = 'InactiveAgreementAvailable',\n /** NoActiveAgreementAvailable */\n NoActiveAgreementAvailable = 'NoActiveAgreementAvailable',\n /** Signed */\n Signed = 'Signed',\n /** Unsigned */\n Unsigned = 'Unsigned'\n}\n\nexport interface CertBatch {\n candidateName?: Maybe;\n certActiveDate?: Maybe;\n certId?: Maybe;\n cmcId?: Maybe;\n}\n\nexport interface CertBatchRequest {\n jurisdictionId: Scalars['Int']['input'];\n /** If true, will return previously batched certs. If false, will return certs that can be batched. Null is treated as false. */\n rebatch?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n *\n */\nexport interface CertCatalog {\n /** The date on which the Cert track went active, and, if applicable, when the logic engine started processing against this track. */\n activeDate?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n badgeCatalog?: Maybe;\n /** The Certification Group */\n certGroup?: Maybe;\n /**\n * When true, Candidates with Active Certs can download a PDF Certificate.\r\n * \r\n * \r\n * - Requires All Features: CredentialElectronicCertificate\r\n *\n */\n certificateEnabled?: Maybe;\n /** An optional brief description of the Cert track. */\n description?: Maybe;\n /** This value is used to override the default sorting, which is alphabetical. CertCatalog will sort by items with a DisplayOrder value, in that order, then alphabetically. */\n displayOrder?: Maybe;\n /** When true, indicates that the Cert track is hidden from the Candidate. This typically indicates that there is logic processing required that does not indicate Cert achievement by the Candidate. */\n eligibility?: Maybe;\n /** This will indicate the number of months prior to the candidate's certification active date that exams can be considered for achievement. Zero will indicate that no exams passed prior to the certification active date will be considered. */\n examActiveAge?: Maybe;\n /** I.e., the retire date of the Cert track. After this date, no new Certs will be granted and Certs can no longer be extended on this track. */\n expireDate?: Maybe;\n /**\n * A unique identifier that can be used externally to CertMetrics to indicate a Cert track.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n externalId?: Maybe;\n /** Unique identifier for the CertGroup definition. */\n groupId?: Maybe;\n id?: Maybe;\n /**\n * A link to download the logo file(s) for this particular cert\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownload\r\n *\n */\n logoDownloadUrl?: Maybe;\n /**\n * When true, there is a logo attachment available to download for Candidates who hold an Active Cert in this Cert track.\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownload\r\n *\n */\n logoEnabled?: Maybe;\n /**\n * A link to upload the logo file(s) for this particular cert\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownload\r\n *\n */\n logoUploadUrl?: Maybe;\n /** The name of the Cert track */\n name: Scalars['String']['output'];\n /** The shortened name of the Cert track */\n nameAbbr?: Maybe;\n /** This will indicate the number of months prior to the candidate's certification active date that certification requirements can be considered for achievement. Zero will indicate that no certification requirements earned prior to the certification active date will be considered. */\n reqActiveAge?: Maybe;\n /** Indicates if the Cert track is still Active, in a Sunset state, Retired, or Future. */\n status?: Maybe;\n /**\n * When true, indicates that the Cert track cannot be shared on Transcripts.\r\n * \r\n * \r\n * - Requires All Features: ShareTranscript\r\n *\n */\n transcriptProhibited?: Maybe;\n /** An optional public url to show more information about the Cert track. */\n url?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * \r\n * \r\n * - Requires All Permissions: Credential.Catalog.View\r\n *\n */\nexport interface CertCatalogDetail {\n /** The date on which the Cert track went active, and, if applicable, when the logic engine started processing against this track. */\n activeDate?: Maybe;\n /** When true, indicates that if the Cert track is included in the logic of another Cert track, the Candidate's ActiveDate value of this Cert will not impact the ActiveDate of the other Cert. */\n activeDateCalcExcluded: Scalars['Boolean']['output'];\n /** Indicates the number of months that a granted Cert should be active. This also indicates, for Cert tracks with normal extension rules how long a Candidate is extended for when recertifying. Zero indicates that the Cert never expires. */\n activePeriod: Scalars['Short']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n badgeCatalog?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Benefit\r\n * \r\n * - Requires All Permissions: Benefit.Catalog.View\r\n *\n */\n benefitCatalogList?: Maybe>>;\n /** Any catalog external ids associated with the cert. */\n catalogExternalIdList?: Maybe>>;\n /**\n * Only applies to Cert tracks with Continuing Education. Indicates the number of months by which to divide the overall CE fee for renewal.\r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n ceFeePeriod?: Maybe;\n /** The Certification Group */\n certGroup?: Maybe;\n /**\n * When true, Candidates with Active Certs can download a PDF Certificate.\r\n * \r\n * \r\n * - Requires All Features: CredentialElectronicCertificate\r\n *\n */\n certificateEnabled?: Maybe;\n /**\n * The url to make a PUT request to, in order to upload an ecert template. If this is null then you need to enable ecert uploading\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n certificateTemplateUploadUrl?: Maybe;\n /**\n * A link for the cert template url, null if no file exists\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n certificateTemplateUrl?: Maybe;\n /** An optional brief description of the Cert track. */\n description?: Maybe;\n /** This value is used to override the default sorting, which is alphabetical. CertCatalog will sort by items with a DisplayOrder value, in that order, then alphabetically. */\n displayOrder?: Maybe;\n /** When true, indicates that the Cert track is hidden from the Candidate. This typically indicates that there is logic processing required that does not indicate Cert achievement by the Candidate. */\n eligibility?: Maybe;\n /** This will indicate the number of months prior to the candidate's certification active date that exams can be considered for achievement. Zero will indicate that no exams passed prior to the certification active date will be considered. */\n examActiveAge?: Maybe;\n /** I.e., the retire date of the Cert track. After this date, no new Certs will be granted and Certs can no longer be extended on this track. */\n expireDate?: Maybe;\n /** Indicates the method to use to calculate the new ExpireDate on the Cert when a Candidate recertifies. Availalble options are Normal, Include Suspended Time, and Extend From Inactive Date. */\n extensionType: CcatExtensionType;\n /**\n * A unique identifier that can be used externally to CertMetrics to indicate a Cert track.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n externalId?: Maybe;\n /** When true, the first time the Candidate earns this Cert track, they are assigned the next number in the number sequence for this track. */\n generateCertNumber: Scalars['Boolean']['output'];\n greaterLinkedExtensionList?: Maybe>>;\n /** Unique identifier for the CertGroup definition. */\n groupId?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n historyList?: Maybe>>;\n id?: Maybe;\n lesserLinkedExtensionList?: Maybe>>;\n logicList?: Maybe>>;\n /**\n * A link to download the logo file(s) for this particular cert\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownload\r\n *\n */\n logoDownloadUrl?: Maybe;\n /**\n * When true, there is a logo attachment available to download for Candidates who hold an Active Cert in this Cert track.\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownload\r\n *\n */\n logoEnabled?: Maybe;\n /**\n * A link to upload the logo file(s) for this particular cert\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownload\r\n *\n */\n logoUploadUrl?: Maybe;\n /** The name of the Cert track */\n name: Scalars['String']['output'];\n /** The shortened name of the Cert track */\n nameAbbr?: Maybe;\n /** Indicates whether or not the Cert track can be earned multiple times. Available options are Repeatable, One Shot, and One Shot Extendable. */\n pathType: CcatPathType;\n /**\n * Shows the list of electronic and physical fulfillment that can be granted when this Cert track is achieved.\r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: CredentialFulfillment.Catalog.View\r\n *\n */\n physicalFulfillmentCatalogList?: Maybe>>;\n /** Returns the list of Cert tracks that use this Cert track in logic processing. */\n relatedCertCatalogList?: Maybe>>;\n /** This will indicate the number of months prior to the candidate's certification active date that certification requirements can be considered for achievement. Zero will indicate that no certification requirements earned prior to the certification active date will be considered. */\n reqActiveAge?: Maybe;\n /** When set, this indicates the number of months prior to the Cert track ActiveDate that requirements will be counted toward certification status. Null means there are no restrictions. Zero means that all requirements must be completed on or after the Cert track Active Date. */\n requirementCutoff?: Maybe;\n /** The maximum age, in months, that requirements are allowed to be counted toward achievement. If the item is too old, it is not counted toward certification. */\n requirementMaxAge?: Maybe;\n /** Indicates if the Cert track is still Active, in a Sunset state, Retired, or Future. */\n status?: Maybe;\n /** On or after this date, Certs can only be extended. No new Certs will be granted. */\n sunsetDate?: Maybe;\n /** Indicates the number of months after a granted Cert goes inactive that the track should be considered suspended. Zero indicates that there is no suspend period. */\n suspendPeriod: Scalars['Short']['output'];\n /** When true, indicates that Certs in Suspended status are still valid toward achieving this Cert track. */\n suspendedCertsAreValid?: Maybe;\n /**\n * When true, indicates that the Cert track cannot be shared on Transcripts.\r\n * \r\n * \r\n * - Requires All Features: ShareTranscript\r\n *\n */\n transcriptProhibited?: Maybe;\n /** An optional public url to show more information about the Cert track. */\n url?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n *\n */\nexport interface CertCatalogListRequest {\n includeInactive?: InputMaybe;\n logicType?: InputMaybe;\n}\n\nexport enum CertCatalogStatus {\n /** Active */\n Active = 'Active',\n /** Future */\n Future = 'Future',\n /** Retired */\n Retired = 'Retired',\n /** Sunset */\n Sunset = 'Sunset'\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertCurrentProgressResponse {\n itemTree?: Maybe;\n logic?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.Credentials.View\r\n * \r\n * - Must have candidate access\r\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n *\n */\nexport interface CertDetail {\n /** The date the Cert became Active. */\n activeDate?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ExamComptiaAnsiCriteria\r\n *\n */\n ansiCriteria?: Maybe>>;\n catalogId: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialProgramNumber\r\n *\n */\n catalogProgramNumber?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialProgramNumber\r\n *\n */\n catalogProgramNumberLabel?: Maybe;\n certCatalog?: Maybe;\n certHistoryDetail?: Maybe;\n certHistoryList?: Maybe>>;\n cmcId: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n * \r\n * - Requires All Permissions: Candidate.Requirements.ContinuingEducation.View\r\n *\n */\n continuingEducationProgress?: Maybe>>;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n created: Scalars['CmDateTimeOffset']['output'];\n currentProgress?: Maybe;\n /**\n * When true, indicates that the Cert record is stale and has been deleted due to Candidate certification status reprocessing. This is not a current record.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n deleted: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialElectronicCertificate\r\n *\n */\n eCertUrl?: Maybe;\n /** The date after which the Cert will become Expired if there is a Suspend period. */\n expireDate?: Maybe;\n /** When set, indicates that the first item used toward achievement was an Exam. This specifies the Exam.Id for that item. */\n firstExamId?: Maybe;\n /** When set, indicates that the first item used toward achievement was a Requirement. This specifies the Requirement.Id for that item. */\n firstRequirementId?: Maybe;\n id: Scalars['Int']['output'];\n /** The date after which the Cert will become Suspended or Expired, depending on if the Cert track has a Suspend period. */\n inactiveDate?: Maybe;\n /** The last date the InactiveDate moved forward, indicating a recertification or extension. */\n latestExtendDate?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: SnowflakeDisplayBadgeId\r\n *\n */\n snowflakeBadgeId?: Maybe;\n /** Indicates for a Cert in Started status, the date of the first requirement that was achieved that applies to this Cert track. */\n startedDate?: Maybe;\n /** The current status of the Cert. */\n status: CertStatus;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n updated?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialVerification\r\n *\n */\n verificationId?: Maybe;\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.Credentials.View\r\n * \r\n * - Must have candidate access\r\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n *\n */\nexport interface CertDetailCertHistoryDetailArgs {\n request: RequestById;\n}\n\n/**\n * This is for the grouping of certification tracks (CertCatalog). Groups are able to be further/alternately grouped into classifications.\r\n * \r\n * \r\n * - Requires All Features: Credential\r\n *\n */\nexport interface CertGroup {\n /** An optional classification/family/type of the group; if any groups have this set (non-null), then all groups should have one set. The distinct list of all values in the table define the set of classifications used. */\n classification?: Maybe;\n /** The color to be used in the cert group card in hex (#000000) format. */\n color?: Maybe;\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: Maybe;\n /** If true, when a candidate initially certifies in a ccat within the group (first time ever), they are assigned the next number in the cert-group's candidate certification number sequence. */\n generateCertNumber: Scalars['Boolean']['output'];\n id: Scalars['Int']['output'];\n /** Group display name. */\n name: Scalars['String']['output'];\n /** Optional grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: Maybe;\n /** Order of the program groups, if programs is used this must be set for all or alphabetical will be used. */\n programDisplayOrder?: Maybe;\n /** The color to be used in the cert group text in hex (#000000) format. */\n textColor?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertHistory {\n activeDate: Scalars['CmDate']['output'];\n cert?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n expireDate?: Maybe;\n id: Scalars['Int']['output'];\n inactiveDate?: Maybe;\n type: ChType;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertHistoryDetail {\n activeDate: Scalars['CmDate']['output'];\n cert?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n expireDate?: Maybe;\n id: Scalars['Int']['output'];\n inactiveDate?: Maybe;\n linkedCert?: Maybe;\n logicVersion?: Maybe;\n type: ChType;\n usedItemList?: Maybe>>;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n *\n */\nexport interface CertLinkedExtensionResponse {\n activeDate?: Maybe;\n expireDate?: Maybe;\n greaterCcat?: Maybe;\n id: Scalars['Int']['output'];\n jules: Scalars['Boolean']['output'];\n lesserCcat?: Maybe;\n scarble: Scalars['Boolean']['output'];\n}\n\nexport interface CertListRequest {\n /** Determines whether to include eligibility certs in the request. */\n includeEligibilityCerts: Scalars['Boolean']['input'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires Any Permissions: Candidate.CredentialDetails.View, Credential.Catalog.View\r\n *\n */\nexport interface CertLogic {\n id: Scalars['Int']['output'];\n position: Scalars['Int']['output'];\n type: ClType;\n versionList?: Maybe>>;\n}\n\nexport interface CertLogicItemRequest {\n children?: InputMaybe>>;\n cliCcatId?: InputMaybe;\n cliClvId?: InputMaybe;\n cliCrcatId?: InputMaybe;\n cliExcatId?: InputMaybe;\n cliParentCliId?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires Any Permissions: Candidate.CredentialDetails.View, Credential.Catalog.View\r\n *\n */\nexport interface CertLogicItemResponse {\n certCatalog?: Maybe;\n certRequirementCatalog?: Maybe;\n children?: Maybe>>;\n earnedPoints?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n egId?: Maybe;\n endDate?: Maybe;\n examCatalog?: Maybe;\n externalId?: Maybe;\n folderType?: Maybe;\n id: Scalars['Int']['output'];\n isComplete: Scalars['Boolean']['output'];\n label?: Maybe;\n maxPoints?: Maybe;\n numChildren: Scalars['Int']['output'];\n numComplete: Scalars['Int']['output'];\n /** 0 means all are required. */\n numRequired?: Maybe;\n parentId: Scalars['Int']['output'];\n pointsPerItem?: Maybe;\n startDate?: Maybe;\n type: CertLogicItemType;\n usedItemList?: Maybe>>;\n}\n\nexport enum CertLogicItemType {\n /** Ccat */\n Ccat = 'Ccat',\n /** Crcat */\n Crcat = 'Crcat',\n /** Excat */\n Excat = 'Excat',\n /** Folder */\n Folder = 'Folder'\n}\n\nexport enum CertLogicType {\n /** Initial */\n Initial = 'Initial',\n /** Miscellaneous */\n Miscellaneous = 'Miscellaneous',\n /** Recertification */\n Recertification = 'Recertification'\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires Any Permissions: Candidate.CredentialDetails.View, Credential.Catalog.View\r\n *\n */\nexport interface CertLogicVersion {\n approved: Scalars['Boolean']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n endDate?: Maybe;\n id: Scalars['Int']['output'];\n itemTree?: Maybe;\n priorityExpansion?: Maybe;\n startDate?: Maybe;\n}\n\nexport interface CertLogicVersionRequest {\n clvClId: Scalars['Int']['input'];\n clvPriorityExpansion?: InputMaybe;\n clvStartDate: Scalars['CmDate']['input'];\n itemTree: CertLogicItemRequest;\n}\n\nexport interface CertMetricsMutation {\n /**\n * Adds a client setting to the database\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ClientSettingsModify\r\n * \r\n * - Requires All Permissions: ClientSettings.Modify, ClientSettings.View\r\n *\n */\n addClientSetting?: Maybe;\n /**\n * Bulk corrupts exams.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: BulkCandidateTools\r\n *\n */\n bulkCorruptExam?: Maybe>>;\n /**\n * Can be used to create multiple affiliation entries at one time.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n * \r\n * - Requires All Permissions: Affiliation.Catalog.Modify\r\n *\n */\n bulkCreateAffiliationList?: Maybe>>;\n /**\n * Bulk create exam authorizations.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: BulkCandidateTools\r\n * \r\n * - Requires Any Permissions: Exam.Authorizations.Modify, Exam.Authorizations.View\r\n *\n */\n bulkCreateExamAuthorization: Array>;\n /**\n * Can be used to create multiple exam item catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Items.Modify\r\n *\n */\n bulkCreateExamItemCatalog?: Maybe>>;\n /**\n * Can be used to create multiple exam section catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Sections.Modify\r\n *\n */\n bulkCreateExamSectionCatalog?: Maybe>>;\n /**\n * Can be used to delete multiple exam item catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Items.Modify\r\n *\n */\n bulkDeleteExamItemCatalog?: Maybe>>;\n /**\n * Can be used to delete multiple exam section catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Sections.Modify\r\n *\n */\n bulkDeleteExamSectionCatalog?: Maybe>>;\n /**\n * Bulk validate exams.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: BulkCandidateTools, Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.Modify\r\n *\n */\n bulkExamValidation?: Maybe>>;\n /**\n * Can be used to update multiple affiliation entries at one time.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n * \r\n * - Requires All Permissions: Affiliation.Catalog.Modify\r\n *\n */\n bulkUpdateAffiliationList?: Maybe>>;\n /**\n * Bulk updates candidate auxiliary data.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: BulkCandidateTools\r\n * \r\n * - Requires All Permissions: Candidate.BannedStatus.View, Candidate.BannedStatus.Modify, Candidate.WatchStatus.View, Candidate.WatchStatus.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n bulkUpdateCandidateAuxiliary?: Maybe>>;\n /**\n * Can be used to update multiple exam item catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Items.Modify\r\n *\n */\n bulkUpdateExamItemCatalog?: Maybe>>;\n /**\n * Can be used to update multiple exam section catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Sections.Modify\r\n *\n */\n bulkUpdateExamSectionCatalog?: Maybe>>;\n /**\n * Bulk uploads exams.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: UploadExamsTool\r\n *\n */\n bulkUploadExam: Array>;\n /**\n * Can be used to create and update multiple affiliation entries at one time.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n * \r\n * - Requires All Permissions: Affiliation.Catalog.Modify\r\n *\n */\n bulkUpsertAffiliationList?: Maybe>>;\n /**\n * Can be used to insert and update multiple exam item catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Items.Modify\r\n *\n */\n bulkUpsertExamItemCatalog?: Maybe>>;\n /**\n * Can be used to update and insert multiple exam section catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Sections.Modify\r\n *\n */\n bulkUpsertExamSectionCatalog?: Maybe>>;\n /**\n * Bulk invalidates vouchers.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Benefit.Catalog.Modify\r\n *\n */\n bulkVoucherInvalidate?: Maybe;\n /**\n * Bulk imports vouchers.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Benefit.Catalog.Modify\r\n *\n */\n bulkVoucherUpload?: Maybe>>;\n /** Completes the candidate self-registration process */\n candidateSelfRegistration?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n * \r\n * - Must have candidate access\r\n *\n */\n claimBenefit?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires All Permissions: Exam.Authorizations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n claimExamAuthorizationPack?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: MergeCandidatesCandidateSelfMerge\r\n *\n */\n completeCandidateSelfMerge?: Maybe;\n /**\n * Corrupts an exam. This is a destructive operation and is not recoverable. The system will act as though the exam never existed.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.Modify\r\n *\n */\n corruptExam?: Maybe;\n /**\n * Requests creation of a new api account.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n createApiAccount?: Maybe;\n /**\n * Can be used to create a new benefit-cert catalog association entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Benefit\r\n * \r\n * - Requires All Permissions: Benefit.Catalog.Modify\r\n *\n */\n createBenefitCcatAssoc?: Maybe;\n /**\n * Creates a candidate.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfile\r\n * \r\n * - Requires All Permissions: CandidateProfile.Create\r\n *\n */\n createCandidate?: Maybe;\n /**\n * Creates a candidate id.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: CandidateProfileManageCandidateId\r\n * \r\n * - Requires All Permissions: CandidateProfile.ManageCandidateId.Modify\r\n *\n */\n createCandidateId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: MergeCandidates\r\n * \r\n * - Requires All Permissions: Candidate.Merge.Create\r\n * \r\n * - Must have candidate access\r\n *\n */\n createCandidateMerge?: Maybe;\n /**\n * Can be used to create a candidate setting filter.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Admin accounts only\r\n *\n */\n createCandidateSettingFilter?: Maybe;\n /**\n * Creates a new candidate transcript.\r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: ShareTranscript\r\n *\n */\n createCandidateTranscript?: Maybe;\n /**\n * Can be used to create a cert catalog entry.\r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n createCertCatalog?: Maybe;\n /**\n * Creates a cert group.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n createCertGroup?: Maybe;\n /**\n * Creates a new cert logic version.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n createCertLogicVersion?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n createCertProcessRequest?: Maybe;\n /**\n * Creates a new cert requirement.\r\n * \r\n * \r\n * - Requires All Features: OtherRequirementUpload\r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n * \r\n * - Requires Any Permissions: Candidate.Requirements.Miscellaneous.Modify, Candidate.CredentialAgreements.Modify, Candidate.Requirements.ExternalCert.Modify, Candidate.Requirements.ContinuingEducation.Modify, Candidate.Requirements.ProgramFee.Modify, Candidate.Requirements.Enrollment.Modify, Candidate.Requirements.Training.Modify, Candidate.Requirements.Lab.Modify, Candidate.Requirements.ExternalExam.Modify, Candidate.Requirements.Participation.Modify, Candidate.Requirements.AdditionalAgreement.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n createCertRequirement?: Maybe;\n /**\n * Creates a cert requirement group.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n createCertRequirementGroup?: Maybe;\n /**\n * Makes a client feature available\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n createClientFeature?: Maybe;\n /**\n * Can be used to create localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n */\n createClientLocalizationList?: Maybe>>;\n /**\n * Can be used to create an email catalog entry with a context based on the current base context.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n createEmailCatalogWithContext?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: Ecommerce\r\n * \r\n * - Requires All Permissions: Ecommerce.Transactions.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n createEtransaction?: Maybe;\n /**\n * Creates an exam.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n createExam?: Maybe;\n /**\n * Creates an exam accomm pack and associated exam accomms.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n createExamAccommPack?: Maybe;\n /**\n * Can be used to create an exam catalog entry.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n createExamCatalog?: Maybe;\n /**\n * Creates an exam group.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n createExamGroup?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamViolations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n createExamViolation?: Maybe;\n /**\n * Creates a filter.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires Any Features: CandidateSegmentation, Announcements\r\n * \r\n * - Requires Any Permissions: Announcements.Catalog.Modify, Candidate.Segmentation.Modify\r\n *\n */\n createFilter?: Maybe;\n /**\n * Can be used to create a geography.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n createGeography?: Maybe;\n /**\n * Can be used to create hub localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n createHubLocalizationList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: BenefitLineup\r\n * \r\n * - Requires All Permissions: Benefit.Catalog.View, Candidate.Benefit.View\r\n *\n */\n createLineupAccount?: Maybe;\n /**\n * Creates a linked extension.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n createLinkedExtension?: Maybe;\n /**\n * Can be used to create localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n * @deprecated A new mutation of CreateClientLocalizationList has been created using ClientLocalizationVm.\n */\n createLocalizationList?: Maybe>>;\n /**\n * Creates a news article.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Announcements\r\n * \r\n * - Requires All Permissions: Announcements.Catalog.Modify\r\n *\n */\n createNewsArticle?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\n createOtherAchievement?: Maybe;\n /**\n * Can be used to create an OtherAchievement record.\r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLoginEMCOtherAchievements\r\n * \r\n * - Requires All Permissions: OtherAchievement.Catalog.Modify\r\n *\n */\n createOtherAchievementCatalog?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n createPhysicalFulfillment?: Maybe;\n /**\n * Can be used to create a role.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n createRole?: Maybe;\n /**\n * Creates a tag domain.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: Tagging\r\n * \r\n * - Requires All Permissions: Tagging.Catalog.Modify\r\n *\n */\n createTagDomain?: Maybe;\n /**\n * Send a test email to the web users email address.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Permissions: Email.Catalog.Modify\r\n *\n */\n createTestEmail?: Maybe;\n /**\n * Requests creation of a new web user.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n createWebUser?: Maybe;\n /**\n * Deletes a candidate id.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires Any Permissions: Credly.Admin.Modify, CandidateProfile.ManageCandidateId.Modify\r\n *\n */\n deleteCandidateId?: Maybe;\n /**\n * Can be used to remove a candidate setting filter.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Admin accounts only\r\n *\n */\n deleteCandidateSettingFilter?: Maybe;\n /**\n * Makes a client feature unavailable\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n deleteClientFeature?: Maybe;\n /**\n * Can be used to delete localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n */\n deleteClientLocalizationList?: Maybe>>;\n /**\n * Deletes a client setting to the database\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ClientSettingsModify\r\n * \r\n * - Requires All Permissions: ClientSettings.Modify, ClientSettings.View\r\n *\n */\n deleteClientSetting?: Maybe;\n /**\n * Deletes a filter.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires Any Features: CandidateSegmentation, Announcements\r\n * \r\n * - Requires Any Permissions: Announcements.Catalog.Modify, Candidate.Segmentation.Modify\r\n *\n */\n deleteFilter?: Maybe;\n /**\n * Can be used to remove a geography.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n deleteGeography?: Maybe;\n /**\n * Deletes a linked extension and performs rebuilds.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n deleteLinkedExtension?: Maybe;\n /**\n * Can be used to delete localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n * @deprecated A new mutation of DeleteClientLocalizationList has been created using ClientLocalizationVm.\n */\n deleteLocalizationList?: Maybe>>;\n /**\n * Deletes a news article.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Announcements\r\n * \r\n * - Requires All Permissions: Announcements.Catalog.Modify\r\n *\n */\n deleteNewsArticle?: Maybe;\n /**\n * Can be used to delete a role.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n deleteRole?: Maybe;\n /** Initiates a candidate self-registration for an existing web user. */\n employeeSelfRegisterCandidateRequest?: Maybe;\n /**\n * Deletes all personal candidate data for the Gdpr Candidate.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n gdprCandidate?: Maybe;\n /** Requests a short-lived token that can only access the specified url. */\n generateShortLivedToken?: Maybe;\n /**\n * Gets the latest differences report, or the number of candidates left to process if not yet complete\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n getDifferences?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires All Permissions: Exam.Authorizations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n grantExamAuthorizationPack?: Maybe;\n /**\n * Imports an exam.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n importExam?: Maybe;\n /**\n * Inserts a candidate history entry.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.History.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n insertCandidateHistory?: Maybe;\n /**\n * Inserts a web user history entry.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\n insertWebUserHistory?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: ExamNCARBCertBatching\r\n *\n */\n ncarbToolsMutations?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ReassignData\r\n * \r\n * - Must have candidate access\r\n *\n */\n reassignCandidateData?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Benefit\r\n * \r\n * - Requires All Permissions: Candidate.Benefit.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n reassignClaimedBenefit?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfile\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n releaseFulfillments?: Maybe>>;\n /**\n * Requeues an email request that was previously sent on a candidate account.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Permissions: Candidate.EmailHistory.Modify\r\n *\n */\n requeueEmailRequest?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires All Permissions: Exam.Authorizations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n revokeExamAuthorizationPack?: Maybe;\n /** Initiates a candidate self-registration. */\n selfRegisterCandidateRequest?: Maybe;\n /**\n * Send a test email to beta user.\r\n * \r\n * \r\n * - Requires All Permissions: Email.Catalog.Modify\r\n *\n */\n sendTestEmail: Scalars['Boolean']['output'];\n /**\n * Signs the latest agreement.\r\n * \r\n * \r\n * - Requires All Features: CredentialAgreement\r\n * \r\n * - Requires All Permissions: Candidate.CredentialAgreements.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n signLatestAgreement?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: MergeCandidatesCandidateSelfMerge\r\n *\n */\n startCandidateSelfMerge?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: MergeCandidates\r\n * \r\n * - Requires All Permissions: Candidate.MergeDetails.Modify\r\n *\n */\n unmergeCandidate?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires All Permissions: Exam.Authorizations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n unrevokeExamAuthorizationPack?: Maybe;\n /**\n * Requests changes to the indicated api account.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n updateApiAccount?: Maybe;\n /**\n * Requests changes to the indicated ApiAccount's roles.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n updateApiAccountRoles?: Maybe;\n /**\n * Updates an exam group.\r\n * \r\n * \r\n * - Requires Any Features: ShareCertMetricsBadging\r\n * \r\n * - Requires All Permissions: CertMetrics.Badging.Catalog.Modify\r\n *\n */\n updateBadgeCatalog?: Maybe;\n /**\n * Can be used to modify a benefit catalog entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Benefit\r\n * \r\n * - Requires All Permissions: Benefit.Catalog.Modify\r\n *\n */\n updateBenefitCatalog?: Maybe;\n /**\n * Can be used to modify a benefit catalog instruction entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Benefit\r\n * \r\n * - Requires All Permissions: Benefit.Catalog.Modify\r\n *\n */\n updateBenefitCatalogLocalizedFields?: Maybe;\n /**\n * Updates a benefit group.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n updateBenefitGroup?: Maybe;\n /**\n * Requests changes to the indicated candidate's demographics.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfile\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateCandidate?: Maybe;\n /**\n * Requests changes to the indicated candidate's attributes.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataAttributes\r\n * \r\n * - Requires All Permissions: Candidate.SponsorSettings.Attributes.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateCandidateAttributeList?: Maybe;\n /**\n * Updates auxiliary data for the candidate.\r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\n updateCandidateAuxiliary?: Maybe;\n /**\n * Updates a candidate external id preferred status.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires Any Permissions: CandidateProfile.ManageCandidateId.Modify, ViewCandidateExternalIds.Modify\r\n *\n */\n updateCandidateId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: MergeCandidates\r\n * \r\n * - Requires All Permissions: Candidate.MergeDetails.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateCandidateMerge?: Maybe;\n /**\n * Requests a change to the candidate's password.\r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLoginChangePassword\r\n * \r\n * - Requires All Permissions: Candidate.SecuritySettings.Password.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateCandidatePassword?: Maybe;\n /**\n * Can be used to update a candidate setting filter.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Admin accounts only\r\n *\n */\n updateCandidateSettingFilter?: Maybe;\n /**\n * Requests changes to the indicated candidate's settings.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Requires All Permissions: Candidate.SponsorSettings.Settings.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateCandidateSettingList?: Maybe;\n /**\n * Updates a candidate transcript.\r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: ShareTranscript\r\n *\n */\n updateCandidateTranscript?: Maybe;\n /**\n * Updates a candidates transcript inclusions.\r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: ShareTranscriptAllowCredentials\r\n *\n */\n updateCandidateTranscriptCertCatalogInclusions?: Maybe;\n /**\n * Updates a candidates transcript inclusions.\r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires Any Features: ShareTranscriptAllowOtherRequirements, ShareTranscriptAllowAchievements\r\n *\n */\n updateCandidateTranscriptCertRequirementInclusions?: Maybe;\n /**\n * Updates a candidates transcript inclusions.\r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: ShareTranscriptAllowExams\r\n *\n */\n updateCandidateTranscriptExamInclusions?: Maybe;\n /**\n * Can be used to toggle the disabled flag on a catalog attachment.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: CredentialAchievements.Catalog.Modify\r\n *\n */\n updateCatalogAttachment?: Maybe;\n /**\n * Can be used to modify a cert catalog entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Credential.Catalog.Modify\r\n *\n */\n updateCertCatalog?: Maybe;\n /**\n * Updates a cert group.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n updateCertGroup?: Maybe;\n /**\n * Updates the Cert Logic Version approved flag.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Credential.Catalog.Modify\r\n *\n */\n updateCertLogicVersion?: Maybe;\n /**\n * Updates a cert requirement.\r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n * \r\n * - Requires Any Permissions: Candidate.Requirements.Miscellaneous.Modify, Candidate.CredentialAgreements.Modify, Candidate.Requirements.ExternalCert.Modify, Candidate.Requirements.ContinuingEducation.Modify, Candidate.Requirements.ProgramFee.Modify, Candidate.Requirements.Enrollment.Modify, Candidate.Requirements.Training.Modify, Candidate.Requirements.Lab.Modify, Candidate.Requirements.ExternalExam.Modify, Candidate.Requirements.Participation.Modify, Candidate.Requirements.AdditionalAgreement.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateCertRequirement?: Maybe;\n /**\n * Can be used to modify an cert requirement catalog entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: OtherRequirement\r\n * \r\n * - Requires Any Permissions: Requirements.Miscellaneous.Catalog.Modify, CredentialAgreements.Catalog.Modify, Requirements.ExternalCert.Catalog.Modify, Requirements.ContinuingEducation.Catalog.Modify, Requirements.ProgramFee.Catalog.Modify, Requirements.Enrollment.Catalog.Modify, Requirements.Training.Catalog.Modify, Requirements.Lab.Catalog.Modify, Requirements.ExternalExam.Catalog.Modify, Requirements.Participation.Catalog.Modify, CredentialAchievements.Catalog.Modify, Requirements.AdditionalAgreement.Catalog.Modify\r\n *\n */\n updateCertRequirementCatalog?: Maybe;\n /**\n * Updates a cert requirement group.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n updateCertRequirementGroup?: Maybe;\n /**\n * Allows enabling and disabling of available client features\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateClientFeature?: Maybe;\n /**\n * Can be used to update localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n */\n updateClientLocalizationList?: Maybe>>;\n /**\n * Updates the specified client setting in the database.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ClientSettingsModify\r\n * \r\n * - Requires All Permissions: ClientSettings.Modify, ClientSettings.View\r\n *\n */\n updateClientSetting?: Maybe;\n /**\n * Can be used to modify the shared values on an email catalog entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Email.Catalog.Modify\r\n *\n */\n updateEmailCatalog?: Maybe;\n /**\n * Can be used to modify or add a localization to an email catalog.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Email.Catalog.Modify\r\n *\n */\n updateEmailLocalization?: Maybe;\n /**\n * Updates an exam. You can either update state or other values, not both.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateExam?: Maybe;\n /**\n * Updates an exam accomm.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateExamAccomm?: Maybe;\n /**\n * Updates an exam accomm pack.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateExamAccommPack?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamAuthorization\r\n * \r\n * - Requires All Permissions: Exam.Authorizations.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateExamAuthorizationPack?: Maybe;\n /**\n * Can be used to modify an exam catalog entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Modify\r\n *\n */\n updateExamCatalog?: Maybe;\n /**\n * Updates an exam group.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n updateExamGroup?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Exam.CertMetricsVouchers.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updateExamVoucher?: Maybe;\n /**\n * Updates a filter.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires Any Features: CandidateSegmentation, Announcements\r\n * \r\n * - Requires Any Permissions: Announcements.Catalog.Modify, Candidate.Segmentation.Modify\r\n *\n */\n updateFilter?: Maybe;\n /**\n * Can be used to update a geography.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateGeography?: Maybe;\n /**\n * Can be used to update hub localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n */\n updateHubLocalization?: Maybe;\n /**\n * Can be used to update localizations.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n * @deprecated A new mutation of UpdateClientLocalizationList has been created using ClientLocalizationVm.\n */\n updateLocalizationList?: Maybe>>;\n /**\n * Requests a complete change to the indicated navigation tree.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Admin accounts only\r\n *\n */\n updateNavigation?: Maybe>>;\n /**\n * Updates a news article.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Announcements\r\n * \r\n * - Requires All Permissions: Announcements.Catalog.Modify\r\n *\n */\n updateNewsArticle?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\n updateOtherAchievement?: Maybe;\n /**\n * Can be used to update an OtherAchievement record.\r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLoginEMCOtherAchievements\r\n * \r\n * - Requires All Permissions: OtherAchievement.Catalog.Modify\r\n *\n */\n updateOtherAchievementCatalog?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n updatePhysicalFulfillment?: Maybe;\n /**\n * Can be used to update a role.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateRole?: Maybe;\n /**\n * Updates a candidate staging entry.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateStagingCandidate?: Maybe;\n /**\n * Updates a cert requirement staging entry.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateStagingCertRequirement?: Maybe;\n /**\n * Updates a exam staging entry.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateStagingExam?: Maybe;\n /**\n * Update tag domain and its associated tag items.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: Tagging\r\n * \r\n * - Requires All Permissions: Tagging.Catalog.Modify\r\n *\n */\n updateTagDomain?: Maybe;\n /**\n * Requests changes to the indicated web user.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n updateWebUser?: Maybe;\n /**\n * Requests changes to the indicated WebUser's candidate setting filters.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n * \r\n * - Admin accounts only\r\n *\n */\n updateWebUserCandidateSettingFilters?: Maybe;\n /**\n * Requests changes to the indicated WebUser's geographies.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateWebUserGeographies?: Maybe;\n /**\n * Requests changes to the indicated WebUser's roles.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n updateWebUserRoles?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: MergeCandidatesCandidateSelfMerge\r\n *\n */\n verifyCandidateSelfMerge?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: Ecommerce\r\n * \r\n * - Requires All Permissions: Ecommerce.Transactions.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\n voidEtransaction?: Maybe;\n}\n\n\nexport interface CertMetricsMutationAddClientSettingArgs {\n request: AddClientSettingRequest;\n}\n\n\nexport interface CertMetricsMutationBulkCorruptExamArgs {\n request: BulkCorruptExamRequest;\n}\n\n\nexport interface CertMetricsMutationBulkCreateAffiliationListArgs {\n request: BulkCreateAffiliationRequest;\n}\n\n\nexport interface CertMetricsMutationBulkCreateExamAuthorizationArgs {\n request: BulkCreateExamAuthorizationRequest;\n}\n\n\nexport interface CertMetricsMutationBulkCreateExamItemCatalogArgs {\n request: BulkCreateExamItemCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkCreateExamSectionCatalogArgs {\n request: BulkCreateExamSectionCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkDeleteExamItemCatalogArgs {\n request: BulkDeleteExamItemCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkDeleteExamSectionCatalogArgs {\n request: BulkDeleteExamSectionCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkExamValidationArgs {\n request: BulkExamValidationRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUpdateAffiliationListArgs {\n request: BulkUpdateAffiliationRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUpdateCandidateAuxiliaryArgs {\n request: BulkUpdateCandidateAuxiliaryRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUpdateExamItemCatalogArgs {\n request: BulkUpdateExamItemCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUpdateExamSectionCatalogArgs {\n request: BulkUpdateExamSectionCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUploadExamArgs {\n request: BulkUploadExamRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUpsertAffiliationListArgs {\n request: BulkUpsertAffiliationRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUpsertExamItemCatalogArgs {\n request: BulkUpsertExamItemCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkUpsertExamSectionCatalogArgs {\n request: BulkUpsertExamSectionCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationBulkVoucherInvalidateArgs {\n request: BulkVoucherInvalidateRequest;\n}\n\n\nexport interface CertMetricsMutationBulkVoucherUploadArgs {\n request: BulkVoucherUploadRequest;\n}\n\n\nexport interface CertMetricsMutationCandidateSelfRegistrationArgs {\n request: SelfRegistration;\n}\n\n\nexport interface CertMetricsMutationClaimBenefitArgs {\n request: ClaimBenefitRequest;\n}\n\n\nexport interface CertMetricsMutationClaimExamAuthorizationPackArgs {\n request: ClaimExamAuthorizationPackRequest;\n}\n\n\nexport interface CertMetricsMutationCompleteCandidateSelfMergeArgs {\n request: CompleteCandidateSelfMergeRequest;\n}\n\n\nexport interface CertMetricsMutationCorruptExamArgs {\n request: CorruptExamRequest;\n}\n\n\nexport interface CertMetricsMutationCreateApiAccountArgs {\n request: CreateApiAccountRequest;\n}\n\n\nexport interface CertMetricsMutationCreateBenefitCcatAssocArgs {\n request: CreateBenefitCcatAssocRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCandidateArgs {\n request: CreateCandidateRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCandidateIdArgs {\n request: CreateCandidateExternalIdRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCandidateMergeArgs {\n request: CreateCandidateMergeRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCandidateSettingFilterArgs {\n request: CreateCandidateSettingFilterRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCandidateTranscriptArgs {\n request: CreateCandidateTranscriptRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCertCatalogArgs {\n request: CreateCertCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCertGroupArgs {\n request: CreateCertGroupRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCertLogicVersionArgs {\n request: CertLogicVersionRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCertProcessRequestArgs {\n request: CreateCprRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCertRequirementArgs {\n request: CreateCertRequirementRequest;\n}\n\n\nexport interface CertMetricsMutationCreateCertRequirementGroupArgs {\n request: CreateCertRequirementGroupRequest;\n}\n\n\nexport interface CertMetricsMutationCreateClientFeatureArgs {\n request: CreateClientFeatureRequest;\n}\n\n\nexport interface CertMetricsMutationCreateClientLocalizationListArgs {\n request: CreateLocalizationListRequest;\n}\n\n\nexport interface CertMetricsMutationCreateEmailCatalogWithContextArgs {\n request: CreateEmailCatalogWithContextRequest;\n}\n\n\nexport interface CertMetricsMutationCreateEtransactionArgs {\n request: CreateEtransactionRequest;\n}\n\n\nexport interface CertMetricsMutationCreateExamArgs {\n request: CreateExamRequest;\n}\n\n\nexport interface CertMetricsMutationCreateExamAccommPackArgs {\n request: CreateExamAccommPackRequest;\n}\n\n\nexport interface CertMetricsMutationCreateExamCatalogArgs {\n request: CreateExamCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationCreateExamGroupArgs {\n request: CreateExamGroupRequest;\n}\n\n\nexport interface CertMetricsMutationCreateExamViolationArgs {\n request: CreateExamViolationRequest;\n}\n\n\nexport interface CertMetricsMutationCreateFilterArgs {\n request: CreateFilterRequest;\n}\n\n\nexport interface CertMetricsMutationCreateGeographyArgs {\n request: CreateGeographyRequest;\n}\n\n\nexport interface CertMetricsMutationCreateHubLocalizationListArgs {\n request: CreateHubLocalizationListRequest;\n}\n\n\nexport interface CertMetricsMutationCreateLineupAccountArgs {\n request: CandidateIdRequest;\n}\n\n\nexport interface CertMetricsMutationCreateLinkedExtensionArgs {\n request: CreateLinkedExtensionRequest;\n}\n\n\nexport interface CertMetricsMutationCreateLocalizationListArgs {\n request: CreateLocalizationListRequest;\n}\n\n\nexport interface CertMetricsMutationCreateNewsArticleArgs {\n request: CreateNewsArticleRequest;\n}\n\n\nexport interface CertMetricsMutationCreateOtherAchievementArgs {\n request: CreateOtherAchievementRequest;\n}\n\n\nexport interface CertMetricsMutationCreateOtherAchievementCatalogArgs {\n request: CreateOtherAchievementCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationCreatePhysicalFulfillmentArgs {\n request: CreatePhysicalFulfillmentRequest;\n}\n\n\nexport interface CertMetricsMutationCreateRoleArgs {\n request: CreateRoleRequest;\n}\n\n\nexport interface CertMetricsMutationCreateTagDomainArgs {\n request: CreateTagDomainRequest;\n}\n\n\nexport interface CertMetricsMutationCreateTestEmailArgs {\n request: CreateTestEmailRequest;\n}\n\n\nexport interface CertMetricsMutationCreateWebUserArgs {\n request: CreateWebUserRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteCandidateIdArgs {\n request: DeleteCandidateExternalIdRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteCandidateSettingFilterArgs {\n request: DeleteCandidateSettingFilterRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteClientFeatureArgs {\n request: DeleteClientFeatureRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteClientLocalizationListArgs {\n request: DeleteLocalizationListRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteClientSettingArgs {\n request: DeleteClientSettingRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteFilterArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsMutationDeleteGeographyArgs {\n request: DeleteGeographyRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteLinkedExtensionArgs {\n request: DeleteLinkedExtensionRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteLocalizationListArgs {\n request: DeleteLocalizationListRequest;\n}\n\n\nexport interface CertMetricsMutationDeleteNewsArticleArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsMutationDeleteRoleArgs {\n request: DeleteRoleRequest;\n}\n\n\nexport interface CertMetricsMutationEmployeeSelfRegisterCandidateRequestArgs {\n request: EmployeeSelfRegistrationRequest;\n}\n\n\nexport interface CertMetricsMutationGdprCandidateArgs {\n request: CandidateGdprRequest;\n}\n\n\nexport interface CertMetricsMutationGenerateShortLivedTokenArgs {\n request: GenerateShortLivedTokenRequest;\n}\n\n\nexport interface CertMetricsMutationGrantExamAuthorizationPackArgs {\n request: GrantExamAuthorizationPackRequest;\n}\n\n\nexport interface CertMetricsMutationImportExamArgs {\n request: ImportExamRequest;\n}\n\n\nexport interface CertMetricsMutationInsertCandidateHistoryArgs {\n request: InsertCandidateHistory;\n}\n\n\nexport interface CertMetricsMutationInsertWebUserHistoryArgs {\n request: InsertWebUserHistory;\n}\n\n\nexport interface CertMetricsMutationReassignCandidateDataArgs {\n request: ReassignCandidateDataRequest;\n}\n\n\nexport interface CertMetricsMutationReassignClaimedBenefitArgs {\n request: ReassignClaimedBenefitRequest;\n}\n\n\nexport interface CertMetricsMutationReleaseFulfillmentsArgs {\n request: ReleaseFulfillmentRequest;\n}\n\n\nexport interface CertMetricsMutationRequeueEmailRequestArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsMutationRevokeExamAuthorizationPackArgs {\n request: RevokeExamAuthorizationPackRequest;\n}\n\n\nexport interface CertMetricsMutationSelfRegisterCandidateRequestArgs {\n request: SelfRegistrationRequest;\n}\n\n\nexport interface CertMetricsMutationSendTestEmailArgs {\n request: SendTestEmail;\n}\n\n\nexport interface CertMetricsMutationSignLatestAgreementArgs {\n request: SignLatestAgreementRequest;\n}\n\n\nexport interface CertMetricsMutationStartCandidateSelfMergeArgs {\n request: StartCandidateSelfMergeRequest;\n}\n\n\nexport interface CertMetricsMutationUnmergeCandidateArgs {\n request: CandidateUnmergeRequest;\n}\n\n\nexport interface CertMetricsMutationUnrevokeExamAuthorizationPackArgs {\n request: UnrevokeExamAuthorizationPackRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateApiAccountArgs {\n request: UpdateApiAccountRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateApiAccountRolesArgs {\n request: UpdateApiAccountRoles;\n}\n\n\nexport interface CertMetricsMutationUpdateBadgeCatalogArgs {\n request: UpdateBadgeCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateBenefitCatalogArgs {\n request: UpdateBenefitCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateBenefitCatalogLocalizedFieldsArgs {\n request: UpdateBenefitCatalogLocaliedFieldsRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateBenefitGroupArgs {\n request: UpdateBenefitGroupRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateArgs {\n request: UpdateCandidateRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateAttributeListArgs {\n request: UpdateCandidateAttributeListRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateAuxiliaryArgs {\n request: UpdateCandidateAuxiliaryRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateIdArgs {\n request: UpdateCandidateExternalIdRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateMergeArgs {\n request: UpdateCandidateMergeRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidatePasswordArgs {\n request: UpdateCandidatePasswordRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateSettingFilterArgs {\n request: UpdateCandidateSettingFilterRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateSettingListArgs {\n request: UpdateCandidateSettingListRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateTranscriptArgs {\n request: UpdateCandidateTranscriptRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateTranscriptCertCatalogInclusionsArgs {\n request: UpdateCandidateTranscriptInclusionsRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateTranscriptCertRequirementInclusionsArgs {\n request: UpdateCandidateTranscriptInclusionsRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCandidateTranscriptExamInclusionsArgs {\n request: UpdateCandidateTranscriptInclusionsRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCatalogAttachmentArgs {\n request: UpdateCatalogAttachmentRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCertCatalogArgs {\n request: UpdateCertCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCertGroupArgs {\n request: UpdateCertGroupRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCertLogicVersionArgs {\n request: UpdateCertLogicVersionRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCertRequirementArgs {\n request: UpdateCertRequirementRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCertRequirementCatalogArgs {\n request: UpdateCertRequirementCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateCertRequirementGroupArgs {\n request: UpdateCertRequirementGroupRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateClientFeatureArgs {\n request: UpdateClientFeatureRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateClientLocalizationListArgs {\n request: UpdateLocalizationListRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateClientSettingArgs {\n request: UpdateClientSettingRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateEmailCatalogArgs {\n request: UpdateEmailCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateEmailLocalizationArgs {\n request: UpdateEmailLocalizationRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateExamArgs {\n request: UpdateExamRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateExamAccommArgs {\n request: UpdateExamAccommRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateExamAccommPackArgs {\n request: UpdateExamAccommPackRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateExamAuthorizationPackArgs {\n request: UpdateExamAuthorizationPackRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateExamCatalogArgs {\n request: UpdateExamCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateExamGroupArgs {\n request: UpdateExamGroupRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateExamVoucherArgs {\n request: UpdateExamVoucherRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateFilterArgs {\n request: UpdateFilterRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateGeographyArgs {\n request: UpdateGeographyRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateHubLocalizationArgs {\n request: UpdateHubLocalizationRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateLocalizationListArgs {\n request: UpdateLocalizationListRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateNavigationArgs {\n request: UpdateNavigationRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateNewsArticleArgs {\n request: UpdateNewsArticleRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateOtherAchievementArgs {\n request: UpdateOtherAchievementRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateOtherAchievementCatalogArgs {\n request: UpdateOtherAchievementCatalogRequest;\n}\n\n\nexport interface CertMetricsMutationUpdatePhysicalFulfillmentArgs {\n request: UpdatePhysicalFulfillmentRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateRoleArgs {\n request: UpdateRoleRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateStagingCandidateArgs {\n request: UpdateStagingCandidateRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateStagingCertRequirementArgs {\n request: UpdateStagingCertRequirementRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateStagingExamArgs {\n request: UpdateStagingExamRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateTagDomainArgs {\n request: UpdateTagDomainRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateWebUserArgs {\n request: UpdateWebUserRequest;\n}\n\n\nexport interface CertMetricsMutationUpdateWebUserCandidateSettingFiltersArgs {\n request: UpdateWebUserCandidateSettingFilters;\n}\n\n\nexport interface CertMetricsMutationUpdateWebUserGeographiesArgs {\n request: UpdateWebUserGeographies;\n}\n\n\nexport interface CertMetricsMutationUpdateWebUserRolesArgs {\n request: UpdateWebUserRoles;\n}\n\n\nexport interface CertMetricsMutationVerifyCandidateSelfMergeArgs {\n request: VerifyCandidateSelfMergeRequest;\n}\n\n\nexport interface CertMetricsMutationVoidEtransactionArgs {\n request: VoidEtransactionRequest;\n}\n\nexport interface CertMetricsQuery {\n /**\n * A list of all Accredible catalogs.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ShareAccredibleBadging\r\n * \r\n * - Requires All Permissions: AccredibleBadging.Catalog.View\r\n *\n */\n accredibleCatalogList?: Maybe>>;\n /**\n * A single affiliation entry.\r\n * \r\n * \r\n * - Requires All Permissions: Affiliation.Catalog.View\r\n *\n */\n affiliation?: Maybe;\n /**\n * A list of all affiliation entries available.\r\n * \r\n * \r\n * - Requires All Permissions: Affiliation.Catalog.View\r\n *\n */\n affiliationList?: Maybe>>;\n /**\n * A list of all distinct affiliation web groups.\r\n * \r\n * \r\n * - Requires All Permissions: Affiliation.Catalog.View\r\n *\n */\n affiliationWebGroupList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n apiAccount?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n apiAccountList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: SponsorAttribute.Catalog.View\r\n *\n */\n attributeCatalogList?: Maybe>>;\n /**\n * A list of all badge catalogs.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: CertMetricsBadging.Catalog.View\r\n *\n */\n badgeCatalogList?: Maybe>>;\n /**\n * A specific benefit catalog entry.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n benefitCatalogDetail?: Maybe;\n /**\n * A list of all benefit catalog entries available.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n benefitCatalogList?: Maybe>>;\n /**\n * The full list of available benefit groups.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n benefitGroupList?: Maybe>>;\n /**\n * \r\n * \r\n *\n */\n candidateAccount?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.MergeDetails.View\r\n *\n */\n candidateMergeDetail?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: MergeList.View\r\n *\n */\n candidateMergeList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n candidateSearch?: Maybe>>;\n /**\n * Gets one specific candidate setting filter.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n candidateSettingFilter?: Maybe;\n /**\n * List all available candidate setting filters.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n candidateSettingFilters?: Maybe>>;\n /** A single Cert Catalog entry. */\n certCatalogDetail?: Maybe;\n /**\n * A list of all Cert Catalog entries available.\r\n * \r\n * \r\n * - Requires All Permissions: Credential.Catalog.View\r\n *\n */\n certCatalogList?: Maybe>>;\n /**\n * The full list of available Cert Groups.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n certGroupList?: Maybe>>;\n /**\n * Detailed information about a single certification requirement catalog entry.\r\n * \r\n * \r\n * - Requires Any Permissions: Requirements.Miscellaneous.Catalog.View, CredentialAgreements.Catalog.View, Requirements.ExternalCert.Catalog.View, Requirements.ContinuingEducation.Catalog.View, Requirements.ProgramFee.Catalog.View, Requirements.Enrollment.Catalog.View, Requirements.Training.Catalog.View, Requirements.Lab.Catalog.View, Requirements.ExternalExam.Catalog.View, Requirements.Participation.Catalog.View, CredentialAchievements.Catalog.View, Requirements.AdditionalAgreement.Catalog.View\r\n *\n */\n certRequirementCatalogDetail?: Maybe;\n /**\n * A list of 'other' certification requirement catalog entries available.\r\n * \r\n * \r\n * - Requires Any Permissions: Requirements.Miscellaneous.Catalog.View, CredentialAgreements.Catalog.View, Requirements.ExternalCert.Catalog.View, Requirements.ContinuingEducation.Catalog.View, Requirements.ProgramFee.Catalog.View, Requirements.Enrollment.Catalog.View, Requirements.Training.Catalog.View, Requirements.Lab.Catalog.View, Requirements.ExternalExam.Catalog.View, Requirements.Participation.Catalog.View, CredentialAchievements.Catalog.View, Requirements.AdditionalAgreement.Catalog.View\r\n *\n */\n certRequirementCatalogList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n certRequirementGroupList?: Maybe>>;\n /**\n * \r\n * \r\n *\n */\n client?: Maybe;\n /** Returns client localization info filtered by feature. */\n clientLocalizationList?: Maybe>>;\n clientSponsor?: Maybe;\n countries?: Maybe>>;\n /**\n * A list of all credly badge templates.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ShareCredlyBadging\r\n * \r\n * - Requires All Permissions: Credly.Catalog.View\r\n *\n */\n credlyBadgeCatalogList?: Maybe>>;\n /** The list of allowed cultures. */\n cultures?: Maybe>>;\n /** The list of data providers that exams can be imported for. */\n dataProviderList?: Maybe>>;\n /** Returns client localization info as a json object filtered by feature. */\n defaultClientLocalizationList?: Maybe>>;\n /**\n * Gets all differences reports\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n differencesList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: Ecommerce.Catalog.View\r\n *\n */\n eTransactionItemCatalogList?: Maybe>>;\n /** The list of data providers where sponsors may create or delete external ids via the ui. */\n editableCandidateDataProviderList?: Maybe>>;\n /**\n * A single physical Fulfillment Catalog entry.\r\n * \r\n * \r\n * - Requires All Permissions: CredentialFulfillment.Catalog.View\r\n *\n */\n electronicFulfillmentCatalogDetail?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: CredentialFulfillment.Catalog.View\r\n *\n */\n electronicFulfillmentCatalogList?: Maybe>>;\n /**\n * A single Email Catalog entry.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Email.Catalog.View\r\n *\n */\n emailCatalogDetail?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Email.Catalog.View\r\n *\n */\n emailCatalogList?: Maybe>>;\n /**\n * A list of the EmcatContexts available for a each EmcatType.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n emailContextList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n emailContextOptionList?: Maybe>>;\n /** The distinct list of cultures in which candidate emails have been localized/customized. The list contains IETF BCP 47 language tags. */\n emailCultures?: Maybe>>;\n /**\n * A list of all exam accommodation entries available.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\n examAccommodationCatalogList?: Maybe>>;\n /**\n * A list of all exam accommodation pack entries available.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\n examAccommodationPackCatalogList?: Maybe>>;\n /**\n * A single Exam Catalog entry.\r\n * \r\n * \r\n * - Requires All Permissions: Exam.Catalog.View\r\n *\n */\n examCatalogDetail?: Maybe;\n /**\n * A list of all Exam Catalog entries available.\r\n * \r\n * \r\n * - Requires All Permissions: Exam.Catalog.View\r\n *\n */\n examCatalogList?: Maybe>>;\n /**\n * The full list of available Exam Groups.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n examGroupList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires Any Features: CandidateSegmentation, Announcements\r\n * \r\n * - Requires Any Permissions: Announcements.Catalog.View, Candidate.Segmentation.View\r\n *\n */\n filterList?: Maybe>>;\n /**\n * Lists all geographies setup by the client.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n geographies?: Maybe>>;\n /**\n * Gets one specific geography and it's related countries.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n geography?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n hubFeature?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n hubPermission?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n linkedExtensionList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount\n */\n navigation?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: Announcements.Catalog.View\r\n *\n */\n newsArticleDetail?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: Announcements.Catalog.View\r\n *\n */\n newsArticleList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateAccessLoginEMCOtherAchievements\r\n * \r\n * - Requires All Permissions: CredentialAchievements.Catalog.View\r\n *\n */\n otherAchievementCatalogList?: Maybe>>;\n /**\n * Lists all permissions available.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n permissions?: Maybe>>;\n /**\n * A single physical Fulfillment Catalog entry.\r\n * \r\n * \r\n * - Requires All Permissions: CredentialFulfillment.Catalog.View\r\n *\n */\n physicalFulfillmentCatalogDetail?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Permissions: CredentialFulfillment.Catalog.View\r\n *\n */\n physicalFulfillmentCatalogList?: Maybe>>;\n /** Returns all candidate's e-certs for download. */\n publicEcert?: Maybe>>;\n /**\n * The quick list of candidates.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n quickList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n role?: Maybe;\n /**\n * Lists all available roles.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n roles?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires Any Permissions: SponsorSetting.Catalog.View\r\n *\n */\n settingCatalogList?: Maybe>>;\n /**\n * \r\n * \r\n *\n */\n ssoEgress?: Maybe;\n /**\n * A single Tag Domain entry.\r\n * \r\n * \r\n * - Requires All Features: Tagging\r\n * \r\n * - Requires All Permissions: Tagging.Catalog.View\r\n *\n */\n tagDomainDetail?: Maybe;\n /**\n * A list of all tag domains.\r\n * \r\n * \r\n * - Requires All Features: Tagging\r\n * \r\n * - Requires All Permissions: Tagging.Catalog.View\r\n *\n */\n tagDomainList?: Maybe>>;\n /**\n * \r\n * \r\n *\n */\n tools?: Maybe;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n users?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n webUserAccount?: Maybe;\n}\n\n\nexport interface CertMetricsQueryAffiliationArgs {\n request: RequestByIdOrExternalId;\n}\n\n\nexport interface CertMetricsQueryAffiliationListArgs {\n requestConfig?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryApiAccountArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryBenefitCatalogDetailArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsQueryCandidateAccountArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryCandidateMergeDetailArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsQueryCandidateMergeListArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryCandidateSearchArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryCandidateSettingFilterArgs {\n request: RequestByIdOrExternalId;\n}\n\n\nexport interface CertMetricsQueryCertCatalogDetailArgs {\n request: RequestByIdOrExternalId;\n}\n\n\nexport interface CertMetricsQueryCertCatalogListArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryCertRequirementCatalogDetailArgs {\n request: RequestByIdOrExternalId;\n}\n\n\nexport interface CertMetricsQueryCertRequirementCatalogListArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryClientLocalizationListArgs {\n request: ClientLocalizationRequest;\n}\n\n\nexport interface CertMetricsQueryCulturesArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryDefaultClientLocalizationListArgs {\n request: DefaultClientLocalizationRequest;\n}\n\n\nexport interface CertMetricsQueryElectronicFulfillmentCatalogDetailArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsQueryEmailCatalogDetailArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsQueryEmailContextOptionListArgs {\n request: EmcatContextOptionListRequest;\n}\n\n\nexport interface CertMetricsQueryExamCatalogDetailArgs {\n request: RequestByIdOrExternalId;\n}\n\n\nexport interface CertMetricsQueryGeographyArgs {\n request: RequestByIdOrExternalId;\n}\n\n\nexport interface CertMetricsQueryNavigationArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryNewsArticleDetailArgs {\n request?: InputMaybe;\n}\n\n\nexport interface CertMetricsQueryPhysicalFulfillmentCatalogDetailArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsQueryPublicEcertArgs {\n request: PublicEcertRequest;\n}\n\n\nexport interface CertMetricsQueryRoleArgs {\n request: RequestByIdOrExternalId;\n}\n\n\nexport interface CertMetricsQueryTagDomainDetailArgs {\n request: RequestById;\n}\n\n\nexport interface CertMetricsQueryWebUserAccountArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertProcessRequest {\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n attempts?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n ccatId?: Maybe;\n cmcId?: Maybe;\n created?: Maybe;\n creator?: Maybe;\n date?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n elapsed?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n handler?: Maybe;\n id?: Maybe;\n message?: Maybe;\n priority?: Maybe;\n requested?: Maybe;\n state?: Maybe;\n type?: Maybe;\n updated?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n * \r\n * - Requires Any Permissions: Candidate.Requirements.Miscellaneous.View, Candidate.CredentialAgreements.View, Candidate.Requirements.ExternalCert.View, Candidate.Requirements.ContinuingEducation.View, Candidate.Requirements.ProgramFee.View, Candidate.Requirements.Enrollment.View, Candidate.Requirements.Training.View, Candidate.Requirements.Lab.View, Candidate.Requirements.ExternalExam.View, Candidate.Requirements.Participation.View, Candidate.CredentialAchievements.View, Candidate.Requirements.AdditionalAgreement.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertRequirement {\n activeDate: Scalars['CmDate']['output'];\n catalogId: Scalars['Int']['output'];\n certRequirementCatalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n docChangeable?: Maybe;\n docLanguage?: Maybe;\n docNotes?: Maybe;\n docUploadUrl?: Maybe;\n docUrl?: Maybe;\n expireDate?: Maybe;\n externalId?: Maybe;\n id: Scalars['Int']['output'];\n importSource?: Maybe;\n invalid: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementShowOverrideName\r\n *\n */\n override?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n provider?: Maybe;\n /** Indicates what part of the review process the requirement is in. None indicates that no review is needed. */\n reviewState: CreqReviewState;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialAchievementsCertificate\r\n *\n */\n standingECertUrl?: Maybe;\n status?: Maybe;\n updated?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n *\n */\nexport interface CertRequirementCatalog {\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n badgeCatalog?: Maybe;\n canCurrentAccountCreate: Scalars['Boolean']['output'];\n candidateCreateEnabled: Scalars['Boolean']['output'];\n /** The catalog attachment associated with this cert requirement catalog. */\n catalogAttachment?: Maybe>>;\n certRequirementGroup?: Maybe;\n /** Indicates how certification requirements are created for this catalog */\n createType: CrcatCreateType;\n /**\n * Are certification transcripts enabled?\r\n * \r\n * \r\n * - Requires All Features: ShareTranscript\r\n *\n */\n ctranEnabled: Scalars['Boolean']['output'];\n /** A description of this requirement catalog */\n description?: Maybe;\n /** The order this requirement should display in the ui */\n displayOrder?: Maybe;\n /** When the requirement ends */\n endDate?: Maybe;\n /** The external identifier for the requirement catalog */\n externalId?: Maybe;\n /**\n * The factor for converting between what a person is expected to enter and the actual point-value that should be used for creq-points.\r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n factor?: Maybe;\n /**\n * Indicates text to use for the label that goes with the input where the value of the creq being created is entered.\r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n factorUnits?: Maybe;\n id: Scalars['Int']['output'];\n instructions?: Maybe;\n /**\n * A link to download the logo file(s) for this particular crcat\r\n * \r\n * \r\n * - Requires All Features: CredentialAchievementsLogoDownload\r\n *\n */\n logoDownloadUrl?: Maybe;\n /** A flag indicating if the standing logo is enabled. */\n logoEnabled?: Maybe;\n /**\n * A link to upload the logo file(s) for this particular cert\r\n * \r\n * \r\n * - Requires All Features: CredentialAchievementsLogoDownload\r\n *\n */\n logoUploadUrl?: Maybe;\n name: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n pointsMax?: Maybe;\n /** Determines if the UI requires creq-provider to be set when creating/editing a creq. */\n providerRequired?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementSchedulingUrl\r\n *\n */\n schedulingUrl?: Maybe;\n /**\n * Indicates if this requirement can only be used one time\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n singleUse: Scalars['Boolean']['output'];\n /** A flag indicating if the catalog attachment catch is disabled. */\n standingECertEnabled?: Maybe;\n /** When the requirement begins */\n startDate?: Maybe;\n /** Indicates the types of requirement possible */\n type: CrcatType;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementInformationUrl\r\n *\n */\n url?: Maybe;\n /** How long this requirement is valid for in months */\n validPeriod: Scalars['Short']['output'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n *\n */\nexport interface CertRequirementCatalogDetail {\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n badgeCatalog?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n cadcExclude: Scalars['Boolean']['output'];\n canCurrentAccountCreate: Scalars['Boolean']['output'];\n candidateCreateEnabled: Scalars['Boolean']['output'];\n /** The catalog attachment associated with this cert requirement catalog. */\n catalogAttachment?: Maybe>>;\n /** Any catalog external ids associated with the requirement. */\n catalogExternalIdList?: Maybe>>;\n certRequirementGroup?: Maybe;\n createAge?: Maybe;\n /** Indicates how certification requirements are created for this catalog */\n createType: CrcatCreateType;\n /** When this catalog was created */\n created: Scalars['CmDateTimeOffset']['output'];\n /**\n * Are certification transcripts enabled?\r\n * \r\n * \r\n * - Requires All Features: ShareTranscript\r\n *\n */\n ctranEnabled: Scalars['Boolean']['output'];\n /** A description of this requirement catalog */\n description?: Maybe;\n /** The order this requirement should display in the ui */\n displayOrder?: Maybe;\n docRequired?: Maybe;\n /** When the requirement ends */\n endDate?: Maybe;\n /** The external identifier for the requirement catalog */\n externalId?: Maybe;\n /**\n * The factor for converting between what a person is expected to enter and the actual point-value that should be used for creq-points.\r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n factor?: Maybe;\n /**\n * Indicates text to use for the label that goes with the input where the value of the creq being created is entered.\r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n factorUnits?: Maybe;\n /** The id of the associated requirement group */\n groupId: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n historyList?: Maybe>>;\n id: Scalars['Int']['output'];\n instructions?: Maybe;\n /**\n * A link to download the logo file(s) for this particular crcat\r\n * \r\n * \r\n * - Requires All Features: CredentialAchievementsLogoDownload\r\n *\n */\n logoDownloadUrl?: Maybe;\n /** A flag indicating if the standing logo is enabled. */\n logoEnabled?: Maybe;\n /**\n * A link to upload the logo file(s) for this particular cert\r\n * \r\n * \r\n * - Requires All Features: CredentialAchievementsLogoDownload\r\n *\n */\n logoUploadUrl?: Maybe;\n name: Scalars['String']['output'];\n /**\n * A specific cert requirement override groups associated with the requirement.\r\n * \r\n * \r\n * - Requires All Features: OtherRequirementAdvancedSelection\r\n *\n */\n overrideGroupDetail?: Maybe;\n /**\n * Any cert requirement override groups associated with the requirement.\r\n * \r\n * \r\n * - Requires All Features: OtherRequirementAdvancedSelection\r\n *\n */\n overrideGroupList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n pointsMax?: Maybe;\n /** Determines if the UI requires creq-provider to be set when creating/editing a creq. */\n providerRequired?: Maybe;\n /** Returns the list of Cert tracks that use this Cert track in logic processing. */\n relatedCertCatalogList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementSchedulingUrl\r\n *\n */\n schedulingUrl?: Maybe;\n /**\n * Indicates if this requirement can only be used one time\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n singleUse: Scalars['Boolean']['output'];\n /** A flag indicating if the catalog attachment catch is disabled. */\n standingECertEnabled?: Maybe;\n /**\n * The url to make a PUT request to, in order to upload a standing ecert template.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n standingECertTemplateUploadUrl?: Maybe;\n /**\n * A link for the creq standing ecert template url, null if no file exists\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n standingECertTemplateUrl?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialAchievements\r\n *\n */\n standingRule?: Maybe;\n /** When the requirement begins */\n startDate?: Maybe;\n /** Indicates the types of requirement possible */\n type: CrcatType;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementInformationUrl\r\n *\n */\n url?: Maybe;\n /** How long this requirement is valid for in months */\n validPeriod: Scalars['Short']['output'];\n}\n\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n *\n */\nexport interface CertRequirementCatalogDetailOverrideGroupDetailArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirement\r\n *\n */\nexport interface CertRequirementCatalogListRequest {\n creatable?: InputMaybe;\n logicCcatId?: InputMaybe;\n logicType?: InputMaybe;\n type?: InputMaybe;\n}\n\n/**\n * This is for the certification requirement override catalogs (cocats).\r\n * \r\n * \r\n * - Requires All Features: OtherRequirementAdvancedSelection\r\n *\n */\nexport interface CertRequirementCatalogOverrideCatalog {\n createAge: Scalars['Byte']['output'];\n /** Creation date. */\n created: Scalars['CmDateTimeOffset']['output'];\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: Maybe;\n /** Creation date. */\n endDate: Scalars['CmDate']['output'];\n factor: Scalars['Decimal']['output'];\n /** Unique identifier for this certification requirement override catalog */\n id: Scalars['Int']['output'];\n maxPoints: Scalars['Short']['output'];\n /** Catalog display name. */\n name: Scalars['String']['output'];\n points: Scalars['Short']['output'];\n /** Last updated date. */\n startDate: Scalars['CmDate']['output'];\n /** Last updated date. */\n updated: Scalars['CmDateTimeOffset']['output'];\n validPeriod: Scalars['Short']['output'];\n}\n\n/**\n * This is for the grouping of certification requirement overrides (cogs).\r\n * \r\n * \r\n * - Requires All Features: OtherRequirementAdvancedSelection\r\n *\n */\nexport interface CertRequirementCatalogOverrideGroup {\n /** Creation date. */\n created: Scalars['CmDateTimeOffset']['output'];\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: Maybe;\n /** Unique identifier for this certification requirement override group */\n id: Scalars['Int']['output'];\n /** Group display name. */\n name: Scalars['String']['output'];\n /** Last updated date. */\n updated: Scalars['CmDateTimeOffset']['output'];\n}\n\n/**\n * This is for the grouping of certification requirement overrides (cogs).\r\n * \r\n * \r\n * - Requires All Features: OtherRequirementAdvancedSelection\r\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementAdvancedSelection\r\n *\n */\nexport interface CertRequirementCatalogOverrideGroupDetail {\n /** The cert requirement override catalogs */\n catalogList?: Maybe>>;\n /** Creation date. */\n created: Scalars['CmDateTimeOffset']['output'];\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: Maybe;\n /** Unique identifier for this certification requirement override group */\n id: Scalars['Int']['output'];\n /** Group display name. */\n name: Scalars['String']['output'];\n /** Last updated date. */\n updated: Scalars['CmDateTimeOffset']['output'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n * \r\n * - Requires Any Permissions: Candidate.Requirements.Miscellaneous.View, Candidate.CredentialAgreements.View, Candidate.Requirements.ExternalCert.View, Candidate.Requirements.ContinuingEducation.View, Candidate.Requirements.ProgramFee.View, Candidate.Requirements.Enrollment.View, Candidate.Requirements.Training.View, Candidate.Requirements.Lab.View, Candidate.Requirements.ExternalExam.View, Candidate.Requirements.Participation.View, Candidate.CredentialAchievements.View, Candidate.Requirements.AdditionalAgreement.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertRequirementDetail {\n activeDate: Scalars['CmDate']['output'];\n candidateCreated: Scalars['Boolean']['output'];\n catalogId: Scalars['Int']['output'];\n certRequirementCatalog?: Maybe;\n certRequirementCatalogDetail?: Maybe;\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n /** The unique Id (PK) of the data provider that delivered the Exam. This is considered the domain/context/scope within which the Exam.RegistrationNumber is unique. */\n dataProviderId?: Maybe;\n docChangeable?: Maybe;\n docLanguage?: Maybe;\n docNotes?: Maybe;\n docUploadUrl?: Maybe;\n docUrl?: Maybe;\n expireDate?: Maybe;\n externalId?: Maybe;\n id: Scalars['Int']['output'];\n importSource?: Maybe;\n invalid: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementShowOverrideName\r\n *\n */\n override?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n provider?: Maybe;\n /** Indicates what part of the review process the requirement is in. None indicates that no review is needed. */\n reviewState: CreqReviewState;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialAchievementsCertificate\r\n *\n */\n standingECertUrl?: Maybe;\n status?: Maybe;\n updated?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n *\n */\nexport interface CertRequirementListRequest {\n types?: InputMaybe>>;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: OtherRequirementUploadCandidateAccess\r\n * \r\n * - Requires All Permissions: OtherRequirements.ReviewList.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertRequirementUnderReviewResponse {\n candidate?: Maybe;\n catalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n id: Scalars['Int']['output'];\n updated: Scalars['CmDateTimeOffset']['output'];\n}\n\nexport enum CertStatus {\n /** Active */\n Active = 'Active',\n /** Deleted */\n Deleted = 'Deleted',\n /** Expired */\n Expired = 'Expired',\n /** Started */\n Started = 'Started',\n /** Suspended */\n Suspended = 'Suspended'\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n * \r\n * - Requires All Permissions: Candidate.CredentialDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CertUsedItem {\n cert?: Maybe;\n certRequirement?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n exam?: Maybe;\n id?: Maybe;\n points: Scalars['Int']['output'];\n}\n\n/**\n * This is for the grouping of certification requirements (crcats). Groups are able to be further/alternately grouped into programs.\r\n * \r\n * \r\n * - Requires Any Features: CredentialAchievements, OtherRequirement, CredentialAgreement, CredentialContinuingEducation\r\n *\n */\nexport interface CertificationRequirementGroup {\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: Maybe;\n /** Unique identifier for this certification requirement group */\n id: Scalars['Int']['output'];\n /** Group display name. */\n name: Scalars['String']['output'];\n /** Optional Grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: Maybe;\n}\n\n/** Contains a variety of helper links for Certiverse candidate egress sso. */\nexport interface CertiverseSsoEgress {\n dashboard?: Maybe;\n store?: Maybe;\n}\n\nexport enum CfcRule {\n /** CcatAchieved */\n CcatAchieved = 'CcatAchieved',\n /** CcatActive */\n CcatActive = 'CcatActive',\n /** CcatExpired */\n CcatExpired = 'CcatExpired',\n /** CcatInactive */\n CcatInactive = 'CcatInactive',\n /** CcatSuspended */\n CcatSuspended = 'CcatSuspended',\n /** ClaListItems */\n ClaListItems = 'ClaListItems',\n /** CrcatAchieved */\n CrcatAchieved = 'CrcatAchieved',\n /** CrcatActive */\n CrcatActive = 'CrcatActive',\n /** CrcatInactive */\n CrcatInactive = 'CrcatInactive',\n /** ExcatFailed */\n ExcatFailed = 'ExcatFailed',\n /** ExcatPassed */\n ExcatPassed = 'ExcatPassed',\n /** ExcatTaken */\n ExcatTaken = 'ExcatTaken',\n /** IcCodeAddr1 */\n IcCodeAddr1 = 'IcCodeAddr1',\n /** StandingAchieved */\n StandingAchieved = 'StandingAchieved',\n /** StandingActive */\n StandingActive = 'StandingActive',\n /** StandingInactive */\n StandingInactive = 'StandingInactive'\n}\n\nexport enum ChType {\n /** InitialCert */\n InitialCert = 'InitialCert',\n /** LinkedExtension */\n LinkedExtension = 'LinkedExtension',\n /** LinkedSuspendedExtension */\n LinkedSuspendedExtension = 'LinkedSuspendedExtension',\n /** ManualCertAdjust */\n ManualCertAdjust = 'ManualCertAdjust',\n /** ManualCertAdjustNLE */\n ManualCertAdjustNle = 'ManualCertAdjustNLE',\n /** ManualCertCreate */\n ManualCertCreate = 'ManualCertCreate',\n /** ManualCertCreateNLE */\n ManualCertCreateNle = 'ManualCertCreateNLE',\n /** ManualCertExtend */\n ManualCertExtend = 'ManualCertExtend',\n /** ManualCertExtendNLE */\n ManualCertExtendNle = 'ManualCertExtendNLE',\n /** ManualCertReduce */\n ManualCertReduce = 'ManualCertReduce',\n /** ManualCertReduceNLE */\n ManualCertReduceNle = 'ManualCertReduceNLE',\n /** NormalExtension */\n NormalExtension = 'NormalExtension',\n /** SuspendedExtension */\n SuspendedExtension = 'SuspendedExtension'\n}\n\nexport enum ChistType {\n /** AccommEdit */\n AccommEdit = 'AccommEdit',\n /** AuthEdit */\n AuthEdit = 'AuthEdit',\n /** BadgeEmailRemoval */\n BadgeEmailRemoval = 'BadgeEmailRemoval',\n /** BenefitEdit */\n BenefitEdit = 'BenefitEdit',\n /** BenefitVoucherEdit */\n BenefitVoucherEdit = 'BenefitVoucherEdit',\n /** CandidateAPIAuthChange */\n CandidateApiAuthChange = 'CandidateAPIAuthChange',\n /** CandidateBanning */\n CandidateBanning = 'CandidateBanning',\n /** CandidateEdit */\n CandidateEdit = 'CandidateEdit',\n /** CandidateEligAgrSigned */\n CandidateEligAgrSigned = 'CandidateEligAgrSigned',\n /** CandidateEmailAddrReset */\n CandidateEmailAddrReset = 'CandidateEmailAddrReset',\n /** CandidateExtBadgeRestrict */\n CandidateExtBadgeRestrict = 'CandidateExtBadgeRestrict',\n /** CandidateExtIDMove */\n CandidateExtIdMove = 'CandidateExtIDMove',\n /** CandidateGdpr */\n CandidateGdpr = 'CandidateGdpr',\n /** CandidateLogin */\n CandidateLogin = 'CandidateLogin',\n /** CandidateLogoAgrSigned */\n CandidateLogoAgrSigned = 'CandidateLogoAgrSigned',\n /** CandidateLogout */\n CandidateLogout = 'CandidateLogout',\n /** CandidateMerge */\n CandidateMerge = 'CandidateMerge',\n /** CandidatePrivacyNotice */\n CandidatePrivacyNotice = 'CandidatePrivacyNotice',\n /** CandidatePwdReset */\n CandidatePwdReset = 'CandidatePwdReset',\n /** CandidateRestrictTesting */\n CandidateRestrictTesting = 'CandidateRestrictTesting',\n /** CandidateWatch */\n CandidateWatch = 'CandidateWatch',\n /** CertEdit */\n CertEdit = 'CertEdit',\n /** CertLogoDownload */\n CertLogoDownload = 'CertLogoDownload',\n /** CertRegression */\n CertRegression = 'CertRegression',\n /** Comment */\n Comment = 'Comment',\n /** CookieAgrSigned */\n CookieAgrSigned = 'CookieAgrSigned',\n /** CreqEdit */\n CreqEdit = 'CreqEdit',\n /** CxEdit */\n CxEdit = 'CxEdit',\n /** ExamBulkUpload */\n ExamBulkUpload = 'ExamBulkUpload',\n /** ExamEdit */\n ExamEdit = 'ExamEdit',\n /** ExamEventEdit */\n ExamEventEdit = 'ExamEventEdit',\n /** ExamExtSecurityEvent */\n ExamExtSecurityEvent = 'ExamExtSecurityEvent',\n /** ExamReviewNote */\n ExamReviewNote = 'ExamReviewNote',\n /** ExamScoreReportDownload */\n ExamScoreReportDownload = 'ExamScoreReportDownload',\n /** ExamViolationEdit */\n ExamViolationEdit = 'ExamViolationEdit',\n /** ExamVoucherEdit */\n ExamVoucherEdit = 'ExamVoucherEdit',\n /** ExternalComment */\n ExternalComment = 'ExternalComment',\n /** FulfillmentCreate */\n FulfillmentCreate = 'FulfillmentCreate',\n /** FulfillmentEdit */\n FulfillmentEdit = 'FulfillmentEdit',\n /** FulfillmentElectronicDownload */\n FulfillmentElectronicDownload = 'FulfillmentElectronicDownload',\n /** OtherAchEdit */\n OtherAchEdit = 'OtherAchEdit',\n /** QstnrComment */\n QstnrComment = 'QstnrComment',\n /** QstnrEdit */\n QstnrEdit = 'QstnrEdit',\n /** QstnrItemApproved */\n QstnrItemApproved = 'QstnrItemApproved',\n /** QstnrItemEdit */\n QstnrItemEdit = 'QstnrItemEdit',\n /** QstnrPaidApplication */\n QstnrPaidApplication = 'QstnrPaidApplication',\n /** QstnrStatusChange */\n QstnrStatusChange = 'QstnrStatusChange',\n /** SecurityNote */\n SecurityNote = 'SecurityNote',\n /** StandingsDownload */\n StandingsDownload = 'StandingsDownload',\n /** VignetteEdit */\n VignetteEdit = 'VignetteEdit'\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: CiscoCustomReports\r\n *\n */\nexport interface CiscoTools {\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CiscoCustomReportsNetAcad\r\n * \r\n * - Requires All Permissions: CiscoCustomReport.NetAcad.Modify\r\n *\n */\n netacadReport?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: CiscoCustomReportsTPM\r\n * \r\n * - Requires All Permissions: CiscoCustomReport.TPM.Modify\r\n *\n */\n tpmReport?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: CiscoCustomReports\r\n *\n */\nexport interface CiscoToolsNetacadReportArgs {\n request: NetacadReportRequest;\n requestConfig?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: CiscoCustomReports\r\n *\n */\nexport interface CiscoToolsTpmReportArgs {\n request: TpmReportRequest;\n requestConfig?: InputMaybe;\n}\n\nexport enum ClType {\n /** Invalid */\n Invalid = 'Invalid',\n /** Normal */\n Normal = 'Normal',\n /** Suspended */\n Suspended = 'Suspended'\n}\n\nexport interface ClaimBenefitRequest {\n benefitId?: InputMaybe;\n candidateId: CandidateIdRequest;\n}\n\nexport interface ClaimExamAuthorizationPackRequest {\n candidateId?: InputMaybe;\n excatId: Scalars['Int']['input'];\n}\n\nexport enum CliType {\n /** CEActivity */\n CeActivity = 'CEActivity',\n /** CertFee */\n CertFee = 'CertFee',\n /** Normal */\n Normal = 'Normal'\n}\n\n/** Information about a CertMetrics client. */\nexport interface Client {\n id: Scalars['Int']['output'];\n idAuthority: DataProvider;\n name: Scalars['String']['output'];\n}\n\nexport interface ClientDisplayNameRequest {\n clientAlias: Scalars['String']['input'];\n}\n\nexport interface ClientFeatureListRequest {\n clientAlias?: InputMaybe;\n includeAvailable?: InputMaybe;\n}\n\n/**\n * The geography and its associated countries\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface ClientGeography {\n /** All the countries that fall within the geography. */\n countries?: Maybe>>;\n /** When the geography was created by the client. */\n created: Scalars['CmDate']['output'];\n /** The id of the geography. */\n id: Scalars['Int']['output'];\n /** The name of the geography. */\n name: Scalars['String']['output'];\n}\n\nexport interface ClientLocalization {\n cultureInfoName: Scalars['String']['output'];\n englishValueResolved?: Maybe;\n id?: Maybe;\n locType?: Maybe;\n name: Scalars['String']['output'];\n value?: Maybe;\n}\n\nexport interface ClientLocalizationRequest {\n clientDbAlias: Scalars['String']['input'];\n filterNotFound?: InputMaybe;\n language: Scalars['String']['input'];\n localizations?: InputMaybe>>;\n}\n\n/**\n * The roles for users\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface ClientRole {\n /** The filter associated with this role. */\n clientFilter?: Maybe;\n /** The id of the filter associated with this role. */\n clientFilterId?: Maybe;\n /** The date it was created. */\n created: Scalars['CmDate']['output'];\n /** The id of the role. */\n id: Scalars['Int']['output'];\n /** The name of the role. */\n name: Scalars['String']['output'];\n permissions?: Maybe>>;\n}\n\n/** The name of the setting being controlled/defined. Names should be in PascalCase */\nexport interface ClientSetting {\n csetDatetime?: Maybe;\n csetId: Scalars['Int']['output'];\n csetInt?: Maybe;\n csetName: Scalars['String']['output'];\n csetNvarchar?: Maybe;\n csetVarchar?: Maybe;\n}\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsor {\n /** Lists current features for the client. */\n currentAccountFeatures?: Maybe>>;\n /** The public client display name. */\n displayName?: Maybe;\n /** Tells the consumer whether emails are being sent/rejected for candidates */\n emailsDisabled?: Maybe;\n /** Lists enabled/available features for the client. */\n features?: Maybe>>;\n /**\n * A specific hub localization.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n hubLocalization?: Maybe;\n /**\n * A list of hub localizations.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n hubLocalizationList?: Maybe>>;\n /**\n * A specific localization.\r\n * \r\n * \r\n * - Must have localization enabled\r\n *\n */\n localization?: Maybe;\n /** A list of localizations. */\n localizationList?: Maybe>>;\n /** A list of all client resource strings by culture. */\n localizationListByCulture?: Maybe>>;\n /** A list of customized cultures in-use by the indicated client. */\n localizedCultures?: Maybe>>;\n /**\n * \r\n * \r\n *\n */\n name?: Maybe;\n /**\n * Lists all possible features in CertMetrics.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n possibleFeatures?: Maybe>>;\n /** A list of all regional markets. */\n regionalMarketList?: Maybe>>;\n /** A list of supported cultures. */\n supportedCultures?: Maybe>>;\n /** A list of supported localization types. */\n supportedLocalizationTypes?: Maybe>>;\n /** A list of system histories. */\n systemHistoryList?: Maybe>>;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorDisplayNameArgs {\n request: ClientDisplayNameRequest;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorFeaturesArgs {\n includeAvailable?: InputMaybe;\n request?: InputMaybe;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorHubLocalizationArgs {\n request: RequestById;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorLocalizationArgs {\n request: GetLocalizationRequest;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorLocalizationListArgs {\n request: GetLocalizationListRequest;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorLocalizationListByCultureArgs {\n request: GetLocalizationListRequest;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorLocalizedCulturesArgs {\n request?: InputMaybe;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorSupportedCulturesArgs {\n request?: InputMaybe;\n}\n\n\n/** Information about the CertMetrics client/sponsor. */\nexport interface ClientSponsorSystemHistoryListArgs {\n requestConfig?: InputMaybe;\n}\n\nexport interface CmLocalizationItem {\n name: Scalars['String']['input'];\n type: LocType;\n}\n\nexport enum CmSearchMethodEnum {\n /** Contains */\n Contains = 'Contains',\n /** EndsWith */\n EndsWith = 'EndsWith',\n /** Equals */\n Equals = 'Equals',\n /** GreaterThan */\n GreaterThan = 'GreaterThan',\n /** GreaterThanOrEquals */\n GreaterThanOrEquals = 'GreaterThanOrEquals',\n /** LessThan */\n LessThan = 'LessThan',\n /** LessThanOrEquals */\n LessThanOrEquals = 'LessThanOrEquals',\n /** StartsWith */\n StartsWith = 'StartsWith'\n}\n\nexport interface CompleteCandidateSelfMergeRequest {\n jwt: Scalars['String']['input'];\n}\n\nexport interface ContinuingEducationProgress {\n catalogList?: Maybe>>;\n examCatalogList?: Maybe>>;\n requiredPoints: Scalars['Int']['output'];\n startDate?: Maybe;\n submittedPoints: Scalars['Int']['output'];\n usedItemList?: Maybe>>;\n}\n\nexport interface CorruptExamRequest {\n comment: Scalars['String']['input'];\n dataProviderExternalId?: InputMaybe;\n examRegistrationNumber?: InputMaybe;\n id?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n *\n */\nexport interface CprCommand {\n ccatId?: InputMaybe;\n denyLinkedExtension?: InputMaybe;\n effectiveDate: Scalars['CmDate']['input'];\n expireDate?: InputMaybe;\n inactiveDate?: InputMaybe;\n type: CprCommandType;\n}\n\nexport enum CprCommandType {\n /** Adjust */\n Adjust = 'Adjust',\n /** Cert */\n Cert = 'Cert',\n /** Extend */\n Extend = 'Extend',\n /** Omit */\n Omit = 'Omit',\n /** Reduce */\n Reduce = 'Reduce'\n}\n\nexport enum CprState {\n /** Broadcast */\n Broadcast = 'Broadcast',\n /** Complete */\n Complete = 'Complete',\n /** Error */\n Error = 'Error',\n /** Queued */\n Queued = 'Queued',\n /** Rejected */\n Rejected = 'Rejected',\n /** Requested */\n Requested = 'Requested'\n}\n\nexport enum CprType {\n /** CertRebuild */\n CertRebuild = 'CertRebuild',\n /** CertRebuildBulk */\n CertRebuildBulk = 'CertRebuildBulk',\n /** CertRegression */\n CertRegression = 'CertRegression',\n /** Invalid */\n Invalid = 'Invalid',\n /** Maintenance */\n Maintenance = 'Maintenance',\n /** ManualAdjustment */\n ManualAdjustment = 'ManualAdjustment',\n /** ManualCertify */\n ManualCertify = 'ManualCertify',\n /** ManualExtension */\n ManualExtension = 'ManualExtension',\n /** ManualReduction */\n ManualReduction = 'ManualReduction',\n /** Normal */\n Normal = 'Normal',\n /** NormalInRebuild */\n NormalInRebuild = 'NormalInRebuild',\n /** NormalWithoutTree */\n NormalWithoutTree = 'NormalWithoutTree'\n}\n\nexport enum CrcatCreateType {\n /** Normal */\n Normal = 'Normal',\n /** PostReview */\n PostReview = 'PostReview',\n /** PreReview */\n PreReview = 'PreReview'\n}\n\nexport enum CrcatType {\n /** AdditionalAgreement */\n AdditionalAgreement = 'AdditionalAgreement',\n /** CEActivity */\n CeActivity = 'CEActivity',\n /** CertAgreement */\n CertAgreement = 'CertAgreement',\n /** Enrollment */\n Enrollment = 'Enrollment',\n /** ExternalCert */\n ExternalCert = 'ExternalCert',\n /** ExternalExam */\n ExternalExam = 'ExternalExam',\n /** Lab */\n Lab = 'Lab',\n /** Miscellaneous */\n Miscellaneous = 'Miscellaneous',\n /** Participation */\n Participation = 'Participation',\n /** ProgramFee */\n ProgramFee = 'ProgramFee',\n /** StandingLengthyCert */\n StandingLengthyCert = 'StandingLengthyCert',\n /** StandingMultiCert */\n StandingMultiCert = 'StandingMultiCert',\n /** Training */\n Training = 'Training'\n}\n\nexport interface CreateAffiliationRequest {\n /** Makes the affiliation unable to be selected by a candidate. Does not remove the record from the database. */\n disabled?: InputMaybe;\n /** This pipe delimited list field, if not null, will require a candidate to enter something into the affiliation email field. The items in this field are the domains that are allowed in the email address. if this field is a blank stirng, anything can be entered. If sub-domains should match, start the pattern with the '@' character. To only include sub-domains, start the pattern with the '.' character. To turn this field into an exclusion list, start the pattern with the '!' character. */\n emailFormat?: InputMaybe;\n /** Determines if an email is required or not. If this field is left null, then an email can't be added at all. False means it can be added, but is not required. True means required. */\n emailRequired?: InputMaybe;\n /** The unique identifier used by any system outside certmetrics to identify the affiliation. */\n externalId?: InputMaybe;\n /** This RegEx field, if not null, will require a candidate to enter something into the affiliation id field. This field determines how the information in the affiliation id field can look. If this field is a blank string, anything can be entered in affiliation id. */\n idFormat?: InputMaybe;\n /** The display name of the affiliation. */\n name?: InputMaybe;\n /** This RegEx field, if not null, will require a candidate to enter something into the company name field. This field determines how the information in the company name field can look. If this field is a blank string, anything can be entered in company name. */\n otherFormat?: InputMaybe;\n /** The group that this affiliation belongs to according to reports. If one affiliation belongs to a web group, they're all expected to. */\n reportGroup?: InputMaybe;\n /** Determines the type of affiliation. */\n type?: InputMaybe;\n /** The group that this affiliation belongs to according to the website. This field is required to create a new affiliation. */\n webGroup?: InputMaybe;\n}\n\nexport interface CreateApiAccountRequest {\n /** If true, the api account is treated as if they have all permissions. This field is only editable by Admin accounts, and an api account cannot edit this field on their own account. */\n admin?: InputMaybe;\n /** If true, the api account has access to all candidate accounts. */\n anyCandidate?: InputMaybe;\n /** The email address associated with the api account account. When this is changed, it sends an email to the new and old addresses to ensure it isn't fraudulent. */\n contactEmail?: InputMaybe;\n /** The phone number associated with the api account account. When this is changed, it sends an email to the new and old addresses to ensure it isn't fraudulent. */\n contactNumber?: InputMaybe;\n /** If true, the api account will no longer be able to login. This field is only editable by Admin accounts, and an api account cannot edit this field on their own account. */\n disabled?: InputMaybe;\n /** The dp id that the api account is associated with. */\n dpId?: InputMaybe;\n /** If true, the api account is not visible in the UI. */\n hidden?: InputMaybe;\n /** The dp id that the api account is associated with for imports. */\n importDpId?: InputMaybe;\n /**\n * If true, the api account is internal to Alpine. This field is only editable by Internal Admin accounts.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n internal?: InputMaybe;\n /** A comma dillimited list of ip addresses that this api account can login from. */\n ipWhiteList?: InputMaybe;\n /** The desired login id of the api account being created. */\n loginId?: InputMaybe;\n /** The login token for the api account. */\n loginToken: Scalars['String']['input'];\n /** The name of the api account. */\n name: Scalars['String']['input'];\n /** The url associated with the api account. */\n url?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface CreateBenefitCcatAssocRequest {\n bcatId: Scalars['Int']['input'];\n ccatId: Scalars['Int']['input'];\n grantEndDate?: InputMaybe;\n grantStartDate: Scalars['CmDate']['input'];\n}\n\nexport interface CreateCandidateExternalIdRequest {\n candidateId?: InputMaybe;\n dataProvider: RequestByIdOrExternalId;\n externalId: Scalars['String']['input'];\n preferred?: InputMaybe;\n}\n\nexport enum CreateCandidateMergeLoserOverride {\n /** Addr1City */\n Addr1City = 'Addr1City',\n /** Addr1CountryCode */\n Addr1CountryCode = 'Addr1CountryCode',\n /** Addr1FaxNumber */\n Addr1FaxNumber = 'Addr1FaxNumber',\n /** Addr1Line1 */\n Addr1Line1 = 'Addr1Line1',\n /** Addr1Line2 */\n Addr1Line2 = 'Addr1Line2',\n /** Addr1Line3 */\n Addr1Line3 = 'Addr1Line3',\n /** Addr1PhoneNumber */\n Addr1PhoneNumber = 'Addr1PhoneNumber',\n /** Addr1PostalCode */\n Addr1PostalCode = 'Addr1PostalCode',\n /** Addr1State */\n Addr1State = 'Addr1State',\n /** Addr2City */\n Addr2City = 'Addr2City',\n /** Addr2CountryCode */\n Addr2CountryCode = 'Addr2CountryCode',\n /** Addr2FaxNumber */\n Addr2FaxNumber = 'Addr2FaxNumber',\n /** Addr2Line1 */\n Addr2Line1 = 'Addr2Line1',\n /** Addr2Line2 */\n Addr2Line2 = 'Addr2Line2',\n /** Addr2Line3 */\n Addr2Line3 = 'Addr2Line3',\n /** Addr2PhoneNumber */\n Addr2PhoneNumber = 'Addr2PhoneNumber',\n /** Addr2PostalCode */\n Addr2PostalCode = 'Addr2PostalCode',\n /** Addr2State */\n Addr2State = 'Addr2State',\n /** AffiliationAffiliateId */\n AffiliationAffiliateId = 'AffiliationAffiliateId',\n /** AffiliationEmail */\n AffiliationEmail = 'AffiliationEmail',\n /** AffiliationId */\n AffiliationId = 'AffiliationId',\n /** CompanyName */\n CompanyName = 'CompanyName',\n /** Email */\n Email = 'Email',\n /** LocAddr1City */\n LocAddr1City = 'LocAddr1City',\n /** LocAddr1Line1 */\n LocAddr1Line1 = 'LocAddr1Line1',\n /** LocAddr1Line2 */\n LocAddr1Line2 = 'LocAddr1Line2',\n /** LocAddr1Line3 */\n LocAddr1Line3 = 'LocAddr1Line3',\n /** LocAddr1PostalCode */\n LocAddr1PostalCode = 'LocAddr1PostalCode',\n /** LocAddr1State */\n LocAddr1State = 'LocAddr1State',\n /** LocCompanyName */\n LocCompanyName = 'LocCompanyName',\n /** NameFirst */\n NameFirst = 'NameFirst',\n /** NameLast */\n NameLast = 'NameLast',\n /** Password */\n Password = 'Password',\n /** PreferredNameFirst */\n PreferredNameFirst = 'PreferredNameFirst',\n /** PreferredNameLast */\n PreferredNameLast = 'PreferredNameLast'\n}\n\nexport interface CreateCandidateMergeRequest {\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.MergeDetails.Modify\r\n *\n */\n approved?: InputMaybe;\n comment?: InputMaybe;\n loserCmcId?: InputMaybe;\n loserOverrides?: InputMaybe>>;\n winnerCmcId?: InputMaybe;\n}\n\nexport interface CreateCandidateRequest {\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1Business?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1City?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1CountryCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1FaxNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1Line1?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1Line2?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1Line3?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1PhoneNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1PostalCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n *\n */\n addr1State?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2Business?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2City?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2CountryCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2FaxNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2Line1?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2Line2?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2Line3?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2PhoneNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2PostalCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n *\n */\n addr2State?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n *\n */\n affiliation?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n *\n */\n companyName?: InputMaybe;\n /**\n * When the change is effective, creates Candidate's date of birth.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.DateOfBirth.MOdify\r\n *\n */\n dateOfBirth?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n *\n */\n emailAddr?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n *\n */\n localizedAddr1City?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n *\n */\n localizedAddr1Line1?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n *\n */\n localizedAddr1Line2?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n *\n */\n localizedAddr1Line3?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n *\n */\n localizedAddr1PostalCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n *\n */\n localizedAddr1State?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n *\n */\n localizedCompanyName?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n *\n */\n localizedNameFirst?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n *\n */\n localizedNameLast?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n *\n */\n nameFirst?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n *\n */\n nameLast?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n *\n */\n preferredNameFirst?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n *\n */\n preferredNameLast?: InputMaybe;\n}\n\nexport interface CreateCandidateSettingFilterRequest {\n /** The list of candidate setting ids to be assigned to a filter. */\n litemIdList?: InputMaybe>>;\n /** The name of the candidate setting filter to be created. */\n name: Scalars['String']['input'];\n}\n\nexport interface CreateCandidateTranscriptRequest {\n addrDisplay?: InputMaybe;\n candidateId?: InputMaybe;\n certDateOk?: InputMaybe;\n creqDateOk?: InputMaybe;\n disabled?: InputMaybe;\n displayPreferredName?: InputMaybe;\n examDateOk?: InputMaybe;\n expireDate: Scalars['CmDate']['input'];\n imageOk?: InputMaybe;\n includeAllCerts?: InputMaybe;\n includeAllCreqs?: InputMaybe;\n includeAllExams?: InputMaybe;\n includeAllStandings?: InputMaybe;\n label?: InputMaybe;\n remarks?: InputMaybe;\n standingsDateOk?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Credential\r\n *\n */\nexport interface CreateCertCatalogRequest {\n /** The date on which the Cert track went active, and, if applicable, when the logic engine started processing against this track. */\n activeDate: Scalars['CmDate']['input'];\n /** The number of months that a granted cert should be active; zero means no expiration date. (This cannot be changed unless all certs on the ccat get rebuilt.) */\n activePeriod?: InputMaybe;\n /** Determines if certs for this ccat should be included in the \"cert active date calculation\". (This cannot be changed unless all candidates with certs on the ccat get rebuilt.) Ccats are never \"single use\"; they are a status/state, so they count whenever they are active. */\n cadcExclude?: InputMaybe;\n /** On or after this date, only extensions/re-certs will be processed (as long as the ccat has not been expired/retired yet). No new certifications can be achieved. This is used when a client wishes no new certs to be given, but to allow existing certs to be maintained. */\n ceFeePeriod?: InputMaybe;\n /** The primary key of the associated cert group. */\n cgId: Scalars['Int']['input'];\n /** If true, certs will not show up on a candidate transcript. */\n ctranProhibited?: InputMaybe;\n /** A short description of the cert catalog entry for public consumption. */\n description?: InputMaybe;\n /** Used to override default sorting. */\n displayOrder?: InputMaybe;\n /** Indicates if the ccat is not a \"real\" certification and is hidden from candidates. Eligibilities (aka hidden ccats) allow the system to track arbitrary progress without presenting it to candidates---no possible confusion over whether or not it is an actual certification. Achievement of this type of ccat is expected to be used as a trigger-event for other functionality/features in the site (e.g. exam-vouchers, emails, special fulfillment, etc.) Eligibilities are to be used only if a real certification's logic is not sufficient for what the client needs. */\n eligibility: Scalars['Boolean']['input'];\n /** I.e., the retire date of the Cert track. After this date, no new Certs will be granted and Certs can no longer be extended on this track. */\n expireDate?: InputMaybe;\n /** See CcatExtensionType enum. Determines the way the achievement of a logic-tree extends a non-expired (active/suspended) certification. */\n extensionType?: InputMaybe;\n externalId: Scalars['String']['input'];\n /** If true, when a candidate initially certifies (first time ever), they are assigned the next number in the ccat's candidate certification number sequence. (These numbers are not reset during a rebuild.) */\n generateCcn?: InputMaybe;\n /** When true, there is a logo attachment available to download for Candidates who hold an Active Cert in this Cert track. */\n logoDownload?: InputMaybe;\n /** The name of the Cert track */\n name: Scalars['String']['input'];\n /** The shortened name of the Cert track */\n nameAbbr?: InputMaybe;\n /** 2.0 only: This field is used exclusively for the open badging criteria url. */\n obCriteriaUrl?: InputMaybe;\n /** 2.0 only: This field is used exclusively for the open badging description. */\n obDescription?: InputMaybe;\n /** 2.0 only: This field is used exclusively for the open badging description html. */\n obDescriptionHtml?: InputMaybe;\n /** An optional, short description of the ccat, for public consumption (e.g. used in badging). No longer used for open badging criteria url in 2.0. See ob_description. */\n obEnabled?: InputMaybe;\n /** See CcatPathType enum. Determines the path-behavior (from logic-tree to logic-tree) for a cert. */\n pathType?: InputMaybe;\n /** The cut-off date is calculated as a number of months (specified here) prior to the ccat's active date. Null means any valid, active requirement counts (legacy rules). Zero means that all requirements must be completed on or after the ccat's active date to be valid towards achievement. */\n reqCutoff?: InputMaybe;\n /** The maximum age, in months, of completed requirements allowed to be counted towards achievement. This setting is used to assure completed requirements are \"current\". It is an additional restriction to each item's active period (e.g. between when an exam was taken and the result expires). */\n reqMaxAge?: InputMaybe;\n /** Suspended Certs Are Valid Towards Achievement */\n scavta?: InputMaybe;\n /** On or after this date, only extensions/re-certs will be processed (as long as the ccat has not been expired/retired yet). No new certifications can be achieved. This is used when a client wishes no new certs to be given, but to allow existing certs to be maintained. */\n sunsetDate?: InputMaybe;\n /** The number of months after the track goes inactive that the track should be considered suspended. Zero means there is no suspend-period and the track goes inactive at the same time it expires. (This cannot be changed unless all certs on the ccat get rebuilt.) */\n suspendPeriod?: InputMaybe;\n /** A public Url with information about the cert catalog entry. */\n url?: InputMaybe;\n}\n\nexport interface CreateCertGroupRequest {\n /** An optional classification/family/type of the group; if any groups have this set (non-null), then all groups should have one set. The distinct list of all values in the table define the set of classifications used. */\n classification?: InputMaybe;\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: InputMaybe;\n /** Group display name. */\n name: Scalars['String']['input'];\n /** Optional grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: InputMaybe;\n /** Order of the program groups, if programs is used this must be set for all or alphabetical will be used. */\n programDisplayOrder?: InputMaybe;\n}\n\nexport interface CreateCertRequirementGroupRequest {\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: InputMaybe;\n /** Group display name. */\n name: Scalars['String']['input'];\n /** Optional grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: InputMaybe;\n}\n\nexport interface CreateCertRequirementRequest {\n activeDate: Scalars['CmDateTimeOffset']['input'];\n cmcId?: InputMaybe;\n cocatId?: InputMaybe;\n crcatExternalId?: InputMaybe;\n crcatId?: InputMaybe;\n docLanguage?: InputMaybe;\n docNotes?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n expireDate?: InputMaybe;\n externalId?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n historyComment?: InputMaybe;\n points?: InputMaybe;\n provider?: InputMaybe;\n simulated?: InputMaybe;\n}\n\nexport interface CreateClientFeatureRequest {\n id: Scalars['Int']['input'];\n}\n\nexport interface CreateCprRequest {\n candidateId: CandidateIdRequest;\n ccatId?: InputMaybe;\n commands?: InputMaybe;\n date?: InputMaybe;\n debug?: InputMaybe;\n message?: InputMaybe;\n type: CprType;\n}\n\nexport interface CreateEmailCatalogWithContextRequest {\n context: Scalars['String']['input'];\n contextId: Scalars['Int']['input'];\n type: EmcatType;\n}\n\n/**\n * Defines a request for an eTransaction.\r\n * \r\n * \r\n * - Requires All Permissions: Ecommerce.Transactions.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface CreateEtransactionRequest {\n candidateId: CandidateIdRequest;\n etransactionItemCatalogId: Scalars['Int']['input'];\n}\n\nexport interface CreateExamAccommPackRequest {\n candidateId: CandidateIdRequest;\n docNotes?: InputMaybe;\n exapcatId: Scalars['Int']['input'];\n /**\n * \r\n * \r\n * \r\n * - Requires Any Permissions: Exam.Accommodations.Modify\r\n *\n */\n expireDate?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires Any Permissions: Exam.Accommodations.Modify\r\n *\n */\n reviewNotes?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires Any Permissions: Exam.Accommodations.Modify\r\n *\n */\n reviewState?: InputMaybe;\n}\n\nexport interface CreateExamAuthorizationNcarbRequest {\n activeDate: Scalars['DateTime']['input'];\n cmcId: Scalars['Int']['input'];\n excatId: Scalars['Int']['input'];\n expireDate: Scalars['DateTime']['input'];\n}\n\nexport interface CreateExamAuthorizationRequest {\n /** The date on which the auth is active. */\n activeDate: Scalars['CmDate']['input'];\n /** External id of the candidate that this auth is for. */\n candidateExternalId: Scalars['String']['input'];\n /** Exam catalog external id. */\n examCode: Scalars['String']['input'];\n /** The date after which the auth expires. */\n expireDate?: InputMaybe;\n /** The date after which the auth may be sent to the testing data provider. */\n sendOkDate: Scalars['CmDate']['input'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Exam\r\n *\n */\nexport interface CreateExamCatalogRequest {\n /** Determines if exams for this excat should be included in the cert active date calculation (this cannot be changed unless all candidates passing the exam get rebuild). Exams are always considered single use. */\n cadcExclude?: InputMaybe;\n /** A short description of the exam catalog entry for public consumption. */\n description?: InputMaybe;\n /** This is used to override the default sorting. */\n displayOrder?: InputMaybe;\n /** The primary key of the associated exam group. */\n egId: Scalars['Int']['input'];\n /** I.e., the retire date of the exam catalog. After this date, new Exams will not be counted as achieved items for cert logic. */\n endDate?: InputMaybe;\n externalId: Scalars['String']['input'];\n /** This should only have a value for beta exams. This is the primary key of the live version of this exam catalog. */\n liveExcatId?: InputMaybe;\n /** The name of the exam catalog */\n name: Scalars['String']['input'];\n /** The shortened name of the exam catalog */\n nameAbbr?: InputMaybe;\n /** 2.0 only: This field is used exclusively for the open badging criteria url. */\n obCriteriaUrl?: InputMaybe;\n /** 2.0 only: This field is used exclusively for the open badging description. */\n obDescription?: InputMaybe;\n /** 2.0 only: This field is used exclusively for the open badging description html. */\n obDescriptionHtml?: InputMaybe;\n /** Optional url to display for scheduling. This should link to wherever a candidate needs to go in order to start the scheduling process. */\n scheduleUrl?: InputMaybe;\n /** Stores the maximum score achievable, when known. This is used to calculate the percent correct, among other things. */\n scoreMax?: InputMaybe;\n /** how Exam With Altered Grade. When true, we always show/reveal the exam result to candidates in the UI (ungraded results are normally not revealed), and custom text will be displayed for the grade instead of what is normally used. */\n sewag?: InputMaybe;\n /** The date on which the exam catalog went active. */\n startDate?: InputMaybe;\n /** A public Url with information about the exam catalog entry. */\n url?: InputMaybe;\n /** The number of months that a granted exam should be active; zero means no expiration date. (This cannot be changed unless all certs associated with this exam catalog are rebuilt.) */\n validPeriod?: InputMaybe;\n}\n\nexport interface CreateExamGroupRequest {\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: InputMaybe;\n /** Group display name. */\n name: Scalars['String']['input'];\n /** Optional grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: InputMaybe;\n /** Order of the program groups, if programs is used this must be set for all or alphabetical will be used. */\n programDisplayOrder?: InputMaybe;\n}\n\nexport interface CreateExamItemCatalogRequest {\n comment?: InputMaybe;\n itemCorrectAnswer?: InputMaybe;\n itemName: Scalars['String']['input'];\n itemScoreMax?: InputMaybe;\n itemScoreWeight?: InputMaybe;\n languageId: Scalars['String']['input'];\n unscoredForms?: InputMaybe>>;\n}\n\n/** Allows for the creation of exam request manually. For standard exam imports in real-time, see the import exam request mutation. */\nexport interface CreateExamRequest {\n autoGenerateRegNum?: InputMaybe;\n candidateId: CandidateIdRequest;\n correctItemCount?: InputMaybe;\n dataProviderId?: InputMaybe;\n dateTime: Scalars['CmDateTimeOffset']['input'];\n examComment?: InputMaybe;\n excatExternalId?: InputMaybe;\n excatId?: InputMaybe;\n expireDate?: InputMaybe;\n form?: InputMaybe;\n grade: ExamGradeLabel;\n incorrectItemCount?: InputMaybe;\n languageId?: InputMaybe;\n message?: InputMaybe;\n registrationNumber?: InputMaybe;\n rescored?: InputMaybe;\n score?: InputMaybe;\n scoreScaled?: InputMaybe;\n simulated?: InputMaybe;\n state?: InputMaybe;\n testCenterId?: InputMaybe;\n version?: InputMaybe;\n}\n\nexport interface CreateExamSectionCatalogRequest {\n coverage?: InputMaybe;\n cutScore?: InputMaybe;\n examForm: Scalars['String']['input'];\n high?: InputMaybe;\n label?: InputMaybe;\n low?: InputMaybe;\n maxScore?: InputMaybe;\n mid?: InputMaybe;\n sectionName: Scalars['String']['input'];\n}\n\nexport interface CreateExamViolationRequest {\n detail: Scalars['String']['input'];\n examId: Scalars['Int']['input'];\n type: ExamViolationType;\n}\n\nexport interface CreateFilterRequest {\n criteriaList: Array>;\n description?: InputMaybe;\n name?: InputMaybe;\n}\n\nexport interface CreateGeographyRequest {\n /** The list of country codes to be assigned to a geography. */\n countryCodeList?: InputMaybe>>;\n /** The name of the geography to be created. */\n name: Scalars['String']['input'];\n}\n\nexport interface CreateHubLocalizationListRequest {\n localizationList: Array>;\n}\n\nexport interface CreateHubLocalizationRequest {\n description?: InputMaybe;\n featureId: Scalars['Int']['input'];\n htmlAllowed: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n path: Scalars['String']['input'];\n shared: Scalars['Boolean']['input'];\n type: LocType;\n uiType: LocUiType;\n value?: InputMaybe;\n}\n\nexport interface CreateLinkedExtensionRequest {\n activeDate?: InputMaybe;\n expireDate?: InputMaybe;\n greaterCcatId: Scalars['Int']['input'];\n jules?: InputMaybe;\n lesserCcatId: Scalars['Int']['input'];\n scarble?: InputMaybe;\n}\n\nexport interface CreateLocalizationListRequest {\n /** The culture that all localizations will be applied to. */\n cultureName: Scalars['String']['input'];\n /** A list of localizations by key and value to operate on. */\n localizationList: Array>;\n /** See LocType enum for more information. */\n type: LocType;\n}\n\nexport interface CreateNewsArticleRequest {\n body: Scalars['String']['input'];\n ends?: InputMaybe;\n filterId?: InputMaybe;\n headline: Scalars['String']['input'];\n newsDisplayOrder?: InputMaybe;\n pictureLinkUrl?: InputMaybe;\n starts: Scalars['CmDateTimeOffset']['input'];\n summary?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\nexport interface CreateOtherAchievementCatalogRequest {\n achievementName: Scalars['String']['input'];\n disabled?: InputMaybe;\n externalId?: InputMaybe;\n reimbursable?: InputMaybe;\n vendor: Scalars['String']['input'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\nexport interface CreateOtherAchievementRequest {\n activeDate: Scalars['DateTime']['input'];\n candidateId?: InputMaybe;\n catalogId?: InputMaybe;\n expirationDate?: InputMaybe;\n externalId: Scalars['String']['input'];\n vendor: Scalars['String']['input'];\n verificationUrl: Scalars['String']['input'];\n verified?: InputMaybe;\n}\n\nexport interface CreatePhysicalFulfillmentRequest {\n candidateId: CandidateIdRequest;\n catalogId: Scalars['Int']['input'];\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n expedite?: InputMaybe;\n trackable?: InputMaybe;\n}\n\nexport interface CreateRoleRequest {\n /** The id of the filter to which the role will be assigned. */\n filterId?: InputMaybe;\n /** The name of the role to be created. */\n name: Scalars['String']['input'];\n /** The list of permission names to be assigned to the role. */\n permissionNameList?: InputMaybe>>;\n}\n\nexport interface CreateTagDomainRequest {\n name: Scalars['String']['input'];\n}\n\nexport interface CreateTestEmailRequest {\n context?: InputMaybe;\n contextId?: InputMaybe;\n cultureName?: InputMaybe;\n type: EmcatType;\n}\n\nexport interface CreateWebUserRequest {\n /** If true, the user is treated as if they have all permissions. This field is only editable by Admin accounts, and a user cannot edit this field on their own account. */\n admin?: InputMaybe;\n /** Restricts the level that WebUsers can access candidates. Restricted, Filtered, or Unrestricted. */\n candRestrictType?: InputMaybe;\n /** When a (non-internal) user account is not for an employee of our client, this is used by the client to designate their employer. */\n companyName?: InputMaybe;\n /** If true, the user will no longer be able to login. This field is only editable by Admin accounts, and a user cannot edit this field on their own account. */\n disabled?: InputMaybe;\n /** The email address associated with the user account. When this is changed, it sends an email to the new and old addresses to ensure it isn't fraudulent. */\n email: Scalars['String']['input'];\n /**\n * If true, the user is internal to Alpine. This field is only editable by Internal Admin accounts.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n internal?: InputMaybe;\n /** The desired login id of the user being created. */\n login: Scalars['String']['input'];\n /** When set, this is a comma-delimited list of IP-addresses (simple wild-cards supported) that the user is restricted to logging-in from. This is ignored for an administrator. This field is only editable by Admin accounts. */\n loginLocation?: InputMaybe;\n /** The name of the user, usually the first and last names. */\n name: Scalars['String']['input'];\n /** What the new WebUser's password will be changed to in plain text. */\n newPassword: Scalars['String']['input'];\n /**\n * If set, this stores the CmRole value that determines basic permissions the user holds in Qlik. This field is only editable by Internal Admin accounts.\r\n * \r\n * \r\n * - Requires All Features: ReportsAdvanced\r\n * \r\n * - Internal accounts only\r\n *\n */\n qlik?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCredlyBadging\r\n *\n */\nexport interface CredlyBadge {\n active: Scalars['DateTime']['output'];\n created?: Maybe;\n credlyId: Scalars['String']['output'];\n email: Scalars['String']['output'];\n expires?: Maybe;\n issuedTo: Scalars['String']['output'];\n name: Scalars['String']['output'];\n state: CredlyBadgeState;\n templateExpireDate?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCredlyBadging\r\n *\n */\nexport interface CredlyBadgeCatalog {\n abbrName?: Maybe;\n allowDuplicateBadges?: Maybe;\n catalogId?: Maybe;\n name?: Maybe;\n templateExpireDate?: Maybe;\n templateId: Scalars['String']['output'];\n templateName: Scalars['String']['output'];\n templateStatus: CredlyBadgeTemplateStatus;\n type?: Maybe;\n validPeriod?: Maybe;\n}\n\nexport enum CredlyBadgeState {\n /** Accepted */\n Accepted = 'Accepted',\n /** Pending */\n Pending = 'Pending',\n /** Rejected */\n Rejected = 'Rejected',\n /** Revoked */\n Revoked = 'Revoked'\n}\n\n/** Possible values are: Active, Disabled, Inactive, or NotFound. */\nexport enum CredlyBadgeTemplateStatus {\n /** Active */\n Active = 'Active',\n /** Disabled */\n Disabled = 'Disabled',\n /** Inactive */\n Inactive = 'Inactive',\n /** NotFound */\n NotFound = 'NotFound'\n}\n\nexport enum CreqReviewState {\n /** None */\n None = 'None',\n /** PendingPostReview */\n PendingPostReview = 'PendingPostReview',\n /** PendingPreReview */\n PendingPreReview = 'PendingPreReview',\n /** Reviewed */\n Reviewed = 'Reviewed',\n /** UnderReview */\n UnderReview = 'UnderReview'\n}\n\nexport enum CreqStatus {\n /** Active */\n Active = 'Active',\n /** InActive */\n InActive = 'InActive',\n /** Invalid */\n Invalid = 'Invalid'\n}\n\nexport enum CtranAddrDisplay {\n /** Addr1 */\n Addr1 = 'Addr1',\n /** Addr2 */\n Addr2 = 'Addr2',\n /** LocAddr1 */\n LocAddr1 = 'LocAddr1',\n /** None */\n None = 'None'\n}\n\nexport enum CtranDisplayMode {\n /** Badges */\n Badges = 'Badges',\n /** Normal */\n Normal = 'Normal'\n}\n\n/** Information about an ISO-defined culture. */\nexport interface Culture {\n id: Scalars['Int']['output'];\n isInvariant: Scalars['Boolean']['output'];\n isNeutral: Scalars['Boolean']['output'];\n isoCode: Scalars['String']['output'];\n isoDefault: Scalars['Boolean']['output'];\n label: Scalars['String']['output'];\n labelNative: Scalars['String']['output'];\n name: Scalars['String']['output'];\n parentId?: Maybe;\n winCode: Scalars['String']['output'];\n winDefault: Scalars['Boolean']['output'];\n}\n\nexport interface CultureInfoResponse {\n /** The IetfBcp47 tag for the culture. */\n ietfBcp47Name: Scalars['String']['output'];\n /** The ISO 3 character name for the culture. */\n iso3CharName: Scalars['String']['output'];\n /** The label for the culture. */\n label: Scalars['String']['output'];\n /** The native label for the culture. */\n nativeLabel: Scalars['String']['output'];\n /** The Windows 3 character name for the culture. */\n windows3CharName: Scalars['String']['output'];\n}\n\n/** Information about an ISO-defined culture. */\nexport interface CulturesRequest {\n /** This will filter the results by only those with a flag of neutral. This list is used for the allowed cultures in cert requirements. */\n onlyNeutral?: InputMaybe;\n /** This will filter the results so there is only 1 result per win code. This list is used for the allowed cultures in exams. */\n onlyUniqueWinCodes?: InputMaybe;\n}\n\n/** Contains data about a data provider, which is an entity that provides data to the CertMetrics system. Most commonly, these have their own unique Ids with which they identify candidate accounts. */\nexport interface DataProvider {\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n created: Scalars['CmDate']['output'];\n displayName?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n exauthActiveDateLimit?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n exauthAppointmentDateLimit?: Maybe;\n /** The unique text-Id of the data provider. This is used more often than the DpId itself. */\n externalId: Scalars['String']['output'];\n id: Scalars['Int']['output'];\n name: Scalars['String']['output'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface DateRule {\n rulesByPosition?: Maybe>>;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface DateRuleByPosition {\n delayFailure?: Maybe;\n description?: Maybe;\n position?: Maybe;\n unparsedJson?: Maybe;\n}\n\nexport interface DefaultClientLocalizationRequest {\n clientDbAlias: Scalars['String']['input'];\n fileName: Scalars['String']['input'];\n portal?: InputMaybe;\n}\n\nexport interface DefaultClientLocalizationResponse {\n description?: Maybe;\n feature?: Maybe;\n htmlAllowed?: Maybe;\n name?: Maybe;\n path?: Maybe;\n shared?: Maybe;\n type?: Maybe;\n uiType?: Maybe;\n value?: Maybe;\n}\n\nexport interface DeleteCandidateExternalIdRequest {\n candidateId?: InputMaybe;\n id?: InputMaybe;\n}\n\nexport interface DeleteCandidateSettingFilterRequest {\n /** The id of the candidate setting filter to be deleted. */\n id?: InputMaybe;\n /** The name of the candidate setting filter to be deleted. */\n name?: InputMaybe;\n}\n\nexport interface DeleteClientFeatureRequest {\n id: Scalars['Int']['input'];\n}\n\n/** Removes the specified client setting from the client_settings table by either CsetId or CsetName (Id will be checked first). */\nexport interface DeleteClientSettingRequest {\n csetId?: InputMaybe;\n /** The name of the setting being controlled/defined. Names should be in PascalCase. */\n csetName?: InputMaybe;\n}\n\nexport interface DeleteGeographyRequest {\n /** The id of the geography to be deleted. */\n id?: InputMaybe;\n /** The name of the geography to be deleted. */\n name?: InputMaybe;\n}\n\nexport interface DeleteLinkedExtensionRequest {\n id: Scalars['Int']['input'];\n}\n\nexport interface DeleteLocalizationListRequest {\n /** The culture that all localizations will be applied to. */\n cultureName: Scalars['String']['input'];\n /** A list of localizations by key and value to operate on. */\n localizationList: Array>;\n /** See LocType enum for more information. */\n type: LocType;\n}\n\nexport interface DeleteRoleRequest {\n /** The id of the role to delete. */\n id?: InputMaybe;\n /** The name of the role to delete. */\n name?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface DescriptionGqlType {\n culture?: Maybe;\n description?: Maybe;\n}\n\nexport interface DifferencesReport {\n remainingCandidates?: Maybe;\n reportId?: Maybe;\n}\n\nexport interface DownloadableReport {\n comment?: Maybe;\n created?: Maybe;\n directoryPath?: Maybe;\n downloadUrl?: Maybe;\n fileName?: Maybe;\n fileNameWithoutExtension?: Maybe;\n fileSize?: Maybe;\n report?: Maybe;\n user?: Maybe;\n}\n\n/**\n * Returns a list of duplicate candidates.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Must have candidate access\r\n *\n */\nexport interface DuplicateCandidateResponse {\n cmcIdList?: Maybe>>;\n /**\n * \r\n * \r\n * Sortable.\n */\n count: Scalars['Int']['output'];\n unique: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n value?: Maybe;\n}\n\n/**\n * Represents an electronic transaction for a candidate.\r\n * \r\n * \r\n * - Requires All Features: Ecommerce\r\n *\n */\nexport interface ETransaction {\n /** The date and time the transaction was created. */\n created: Scalars['DateTime']['output'];\n /** The external id of the transaction. */\n externalId: Scalars['String']['output'];\n /** The items in the transaction. */\n items?: Maybe>>;\n /** The transaction's state. */\n state: EtState;\n /** The tax amount for the transaction. */\n tax?: Maybe;\n /** The total cost of the transaction. */\n total: Scalars['Decimal']['output'];\n /** The internal id of the transaction. */\n transactionId: Scalars['Int']['output'];\n}\n\n/**\n * An item purchased in an eTransaction.\r\n * \r\n * \r\n * - Requires All Features: Ecommerce\r\n *\n */\nexport interface ETransactionItem {\n /** The catalog item that was purchased. */\n catalog: EtransactionItemCatalog;\n /** The internal id of the item. */\n itemId: Scalars['Int']['output'];\n /** The total cost of the item. */\n total: Scalars['Decimal']['output'];\n}\n\nexport enum EimgType {\n /** CandidatePhoto */\n CandidatePhoto = 'CandidatePhoto',\n /** Fingerprint */\n Fingerprint = 'Fingerprint',\n /** PalmVein */\n PalmVein = 'PalmVein',\n /** Signature */\n Signature = 'Signature'\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ElectronicFulfillment {\n catalogId: Scalars['Int']['output'];\n cmcId: Scalars['Int']['output'];\n created: Scalars['CmDateTimeOffset']['output'];\n downloads?: Maybe;\n externalId: Scalars['String']['output'];\n /** Shows summary information on the associated fulfillment catalog. */\n fulfillmentCatalog?: Maybe;\n id: Scalars['Int']['output'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n *\n */\nexport interface ElectronicFulfillmentCatalog {\n certCatalog?: Maybe;\n /** When set, this indicates the Certification that the candidate must earn and have active in order to receive physical fulfillment, or be able to download electronic fulfillment. */\n certCatalogId?: Maybe;\n /** Used to indicate if electronic fulfillment is available for download. When the value is false, this exclusively represents a fulfillment that is shipped to the candidate by a fulfillment house. */\n electronic: Scalars['Boolean']['output'];\n /** When set, this is the identifier for the client, the fulfillment house, or both indicating what specific kit is intended. */\n externalId?: Maybe;\n /** Internal id for the Fulfillment definition. */\n id: Scalars['Int']['output'];\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.Name value is used. */\n name?: Maybe;\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.NameAbbr value is used. */\n nameAbbr?: Maybe;\n /** Indicates how often fulfillment can be queued for a candidate. Options are Manual, Once, EachNewItem, and Never. Never is used for fulfillment that is electronic only. */\n queueType: FcatQueueType;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface ElectronicFulfillmentCatalogDetail {\n certCatalog?: Maybe;\n /** When set, this indicates the Certification that the candidate must earn and have active in order to receive physical fulfillment, or be able to download electronic fulfillment. */\n certCatalogId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n created: Scalars['CmDateTimeOffset']['output'];\n /** Used to indicate if electronic fulfillment is available for download. When the value is false, this exclusively represents a fulfillment that is shipped to the candidate by a fulfillment house. */\n electronic: Scalars['Boolean']['output'];\n /** When set, this is the identifier for the client, the fulfillment house, or both indicating what specific kit is intended. */\n externalId?: Maybe;\n /** Internal id for the Fulfillment definition. */\n id: Scalars['Int']['output'];\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.Name value is used. */\n name?: Maybe;\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.NameAbbr value is used. */\n nameAbbr?: Maybe;\n /** Indicates how often fulfillment can be queued for a candidate. Options are Manual, Once, EachNewItem, and Never. Never is used for fulfillment that is electronic only. */\n queueType: FcatQueueType;\n}\n\nexport interface EligibilityCatalog {\n activeDate?: Maybe;\n ecatDelaySuccess: Scalars['Short']['output'];\n ecatDpConfig?: Maybe;\n expireDate?: Maybe;\n positionResetAge?: Maybe;\n positionResetDate?: Maybe;\n}\n\n/**\n * Shows details for an exam that the candidate is eligible to test for.\r\n * \r\n * \r\n * - Requires All Features: ExamScheduling, Exam\r\n *\n */\nexport interface EligibleExam {\n actionUrlList?: Maybe>>;\n /**\n * Indicates the last date the exam was being delivered.\n * @deprecated Use examCatalog.endDate\n */\n endDate?: Maybe;\n /**\n * The active exam authorization pack (eligibility) for this candidate and exam candidate.\r\n * \r\n * \r\n * - Requires All Features: ExamAuthorization\r\n *\n */\n examAuthorizationPack?: Maybe;\n examCatalog?: Maybe;\n /** @deprecated Use examCatalog.examGroup */\n examGroup?: Maybe;\n /**\n * Unique identifier of the exam as defined at the test delivery provider. Commonly known as the exam code.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n * @deprecated Use examCatalog.externalId\n */\n externalId: Scalars['String']['output'];\n id: Scalars['Int']['output'];\n /**\n * The name of the exam.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n * @deprecated Use examCatalog.name\n */\n name: Scalars['String']['output'];\n /**\n * Indicates the date the exam started being delivered.\n * @deprecated Use examCatalog.startDate\n */\n startDate?: Maybe;\n}\n\nexport enum EligibleExamActionType {\n /** LiteweightRecertify */\n LiteweightRecertify = 'LiteweightRecertify',\n /** Schedule */\n Schedule = 'Schedule'\n}\n\nexport interface EligibleExamActionUrl {\n dataProvider?: Maybe;\n type?: Maybe;\n url?: Maybe;\n}\n\n/** Shows high-level information about the Email definition. */\nexport interface EmailCatalog {\n /** Used to further specify email sending context - there must always be at least 1 default email for each type with context of null */\n context?: Maybe;\n /** An ID - the meaning is determined by the context field - always null if context is null */\n contextId?: Maybe;\n contextItem?: Maybe;\n /** If an email has been disabled it will not be sent */\n disabled: Scalars['Boolean']['output'];\n /** This gives the localizations for the current email catalog entry */\n emailLocalizationList?: Maybe>>;\n /** The email address the email will appear to have been sent from. If this is not set, a default \"no reply\" address will be used. */\n from?: Maybe;\n /** The name the email will appear to have been sent from */\n fromLabel?: Maybe;\n /**\n * If an email has been hidden then it will not display in the users interface\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n hidden: Scalars['Boolean']['output'];\n /** Unique ID for this email catalog entry */\n id: Scalars['Int']['output'];\n /** The email subject */\n subject: Scalars['String']['output'];\n /** Determines what event triggers this email to send */\n type: EmcatType;\n /** When the email catalog was last updated */\n updated: Scalars['CmDate']['output'];\n /** Who last update the email catalog */\n updator: Scalars['String']['output'];\n /** Set to true if this is a user, rather than a candidate email */\n userBased: Scalars['Boolean']['output'];\n}\n\n/** Shows full details about the Email definition. */\nexport interface EmailCatalogDetail {\n /** Any email addresses to BCC - comma-separated */\n bcc?: Maybe;\n /** The HTML email content */\n bodyHtml?: Maybe;\n /** The plain-text email content */\n bodyPlain?: Maybe;\n /** Used to further specify email sending context - there must always be at least 1 default email for each type with context of null */\n context?: Maybe;\n /** An ID - the meaning is determined by the context field - always null if context is null */\n contextId?: Maybe;\n contextItem?: Maybe;\n /** If an email has been disabled it will not be sent */\n disabled: Scalars['Boolean']['output'];\n /** This gives the localizations for the current email catalog entry */\n emailLocalizationList?: Maybe>>;\n /** The email address the email will appear to have been sent from. If this is not set, a default \"no reply\" address will be used. */\n from?: Maybe;\n /** The name the email will appear to have been sent from */\n fromLabel?: Maybe;\n /**\n * If an email has been hidden then it will not display in the users interface\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n hidden: Scalars['Boolean']['output'];\n /** Unique ID for this email catalog entry */\n id: Scalars['Int']['output'];\n /** The email subject */\n subject: Scalars['String']['output'];\n /** The substitutions available for use in the email template */\n substitutions: Array>;\n /** Determines what event triggers this email to send */\n type: EmcatType;\n /** When the email catalog was last updated */\n updated: Scalars['CmDate']['output'];\n /** Who last update the email catalog */\n updator: Scalars['String']['output'];\n /** Set to true if this is a user, rather than a candidate email */\n userBased: Scalars['Boolean']['output'];\n}\n\n/**\n * Shows selectors available in email templates.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Email.Catalog.View\r\n *\n */\nexport interface EmailCatalogSubstitution {\n /** A description of the value that will be inserted */\n description: Scalars['String']['output'];\n /** The same as selector, provided for caching purposes */\n id: Scalars['String']['output'];\n /** The unique string to be replaced with mail-merge style values in an email template */\n selector: Scalars['String']['output'];\n}\n\nexport interface EmailContextListResponse {\n context?: Maybe;\n id?: Maybe;\n typeList?: Maybe>>;\n}\n\nexport interface EmailContextOptionResponse {\n externalId?: Maybe;\n id: Scalars['Int']['output'];\n type: EmcatContext;\n}\n\n/** Contains localizations for email catalog items */\nexport interface EmailLocalization {\n /** The HTML email body */\n bodyHtml?: Maybe;\n /** The plain-text email body */\n bodyPlain?: Maybe;\n /** Unique ID for the email catalog this localizes */\n catalogId: Scalars['Int']['output'];\n /** The culture / localization this applies to */\n cultureInfoName: Scalars['String']['output'];\n /** Unique ID for this email localization entry */\n id: Scalars['Int']['output'];\n /** The email subject */\n subject: Scalars['String']['output'];\n /** When the localization was last updated */\n updated: Scalars['CmDate']['output'];\n /** Who last updated the localization */\n updator: Scalars['String']['output'];\n}\n\nexport interface EmailRequest {\n /**\n * The number of attempts taken to send this email\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n attempts: Scalars['Byte']['output'];\n /** The HTML email body */\n bodyHtml?: Maybe;\n /** The plain-text email body */\n bodyPlain?: Maybe;\n /** The candidate this request was for */\n cmcId?: Maybe;\n /** When the email was sent */\n completed?: Maybe;\n contextId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n elapsed?: Maybe;\n /** Shows summary information on the associated email catalog. */\n emailCatalog?: Maybe;\n /** The email catalog entry this request was derived from */\n emcatId?: Maybe;\n /** The email address this was sent from */\n from?: Maybe;\n /** The sender name for this email */\n fromLabel?: Maybe;\n id: Scalars['Int']['output'];\n /** When the email was requested */\n requested: Scalars['CmDate']['output'];\n /** Was this email resent */\n resend?: Maybe;\n /** The current state the email is in */\n state: EmrState;\n /** A text description of the current state */\n stateMessage?: Maybe;\n /** The email subject line */\n subject?: Maybe;\n /** Email address to send to */\n to?: Maybe;\n /** Name to send to */\n toLabel?: Maybe;\n /**\n * The web user this request was for, used if CmcId is null\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n webUserId?: Maybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface EmailRequestDetail {\n /**\n * The number of attempts taken to send this email\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n attempts: Scalars['Byte']['output'];\n /** The HTML email body */\n bodyHtml?: Maybe;\n /** The plain-text email body */\n bodyPlain?: Maybe;\n /** The candidate this request was for */\n cmcId?: Maybe;\n /** When the email was sent */\n completed?: Maybe;\n contextId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n elapsed?: Maybe;\n /** Shows summary information on the associated email catalog. */\n emailCatalog?: Maybe;\n /** Shows detailed information on the associated email catalog. */\n emailCatalogDetail?: Maybe;\n /** The email catalog entry this request was derived from */\n emcatId?: Maybe;\n /** The email address this was sent from */\n from?: Maybe;\n /** The sender name for this email */\n fromLabel?: Maybe;\n id: Scalars['Int']['output'];\n /** When the email was requested */\n requested: Scalars['CmDate']['output'];\n /** Was this email resent */\n resend?: Maybe;\n /** The current state the email is in */\n state: EmrState;\n /** A text description of the current state */\n stateMessage?: Maybe;\n /** The email subject line */\n subject?: Maybe;\n /** Email address to send to */\n to?: Maybe;\n /** Name to send to */\n toLabel?: Maybe;\n /**\n * The web user this request was for, used if CmcId is null\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n webUserId?: Maybe;\n}\n\nexport enum EmcatContext {\n /** Benefits */\n Bcat = 'Bcat',\n /** Benefit Group */\n BenefitGroup = 'BenefitGroup',\n /** Certifications */\n Ccat = 'Ccat',\n /** Certification Group */\n CertGroup = 'CertGroup',\n /** Other Requirements */\n Crcat = 'Crcat',\n /** Other Requirement Group */\n CrcatGroup = 'CrcatGroup',\n /** Other Requirement Type */\n CrcatType = 'CrcatType',\n /** Exam Violation Type */\n EvType = 'EvType',\n /** Exam Group */\n ExamGroup = 'ExamGroup',\n /** Exams */\n Excat = 'Excat',\n /** Fulfillments */\n Fcat = 'Fcat',\n /** Questionnaires */\n Qcat = 'Qcat',\n /** Questionnaire Group */\n QcatGroup = 'QcatGroup',\n /** Questionnaire Results */\n Qrcat = 'Qrcat',\n /** Questionnaire Result Group */\n QrcatGroup = 'QrcatGroup'\n}\n\nexport interface EmcatContextOptionListRequest {\n context: EmcatContext;\n}\n\nexport enum EmcatType {\n /** AccountVerification */\n AccountVerification = 'AccountVerification',\n /** AuditComplete */\n AuditComplete = 'AuditComplete',\n /** AuditOnHold */\n AuditOnHold = 'AuditOnHold',\n /** AuditOnHoldReminder */\n AuditOnHoldReminder = 'AuditOnHoldReminder',\n /** BadAddress */\n BadAddress = 'BadAddress',\n /** BenefitExpirationLong */\n BenefitExpirationLong = 'BenefitExpirationLong',\n /** BenefitExpirationMedium */\n BenefitExpirationMedium = 'BenefitExpirationMedium',\n /** BenefitExpirationShort */\n BenefitExpirationShort = 'BenefitExpirationShort',\n /** BenefitExpired */\n BenefitExpired = 'BenefitExpired',\n /** CertExpired */\n CertExpired = 'CertExpired',\n /** CertExtension */\n CertExtension = 'CertExtension',\n /** CertRequirementCreated */\n CertRequirementCreated = 'CertRequirementCreated',\n /** CertSuspended */\n CertSuspended = 'CertSuspended',\n /** CertSuspension2L */\n CertSuspension2L = 'CertSuspension2L',\n /** CertSuspension3L */\n CertSuspension3L = 'CertSuspension3L',\n /** CertSuspension4L */\n CertSuspension4L = 'CertSuspension4L',\n /** CertSuspensionLong */\n CertSuspensionLong = 'CertSuspensionLong',\n /** CertSuspensionMedium */\n CertSuspensionMedium = 'CertSuspensionMedium',\n /** CertSuspensionShort */\n CertSuspensionShort = 'CertSuspensionShort',\n /** Certification */\n Certification = 'Certification',\n /** Eligibility */\n Eligibility = 'Eligibility',\n /** ExamAccommodation */\n ExamAccommodation = 'ExamAccommodation',\n /** ExamAuthExpirationLong */\n ExamAuthExpirationLong = 'ExamAuthExpirationLong',\n /** ExamAuthExpirationMedium */\n ExamAuthExpirationMedium = 'ExamAuthExpirationMedium',\n /** ExamAuthExpirationShort */\n ExamAuthExpirationShort = 'ExamAuthExpirationShort',\n /** ExamAuthExpired */\n ExamAuthExpired = 'ExamAuthExpired',\n /** ExamEligibility */\n ExamEligibility = 'ExamEligibility',\n /** ExamExpirationLong */\n ExamExpirationLong = 'ExamExpirationLong',\n /** ExamExpirationMedium */\n ExamExpirationMedium = 'ExamExpirationMedium',\n /** ExamExpirationShort */\n ExamExpirationShort = 'ExamExpirationShort',\n /** ExamScheduleReminder */\n ExamScheduleReminder = 'ExamScheduleReminder',\n /** ExamScoreReportAvailable */\n ExamScoreReportAvailable = 'ExamScoreReportAvailable',\n /** ExamViolationAdvancedSecurityRuleInvalidated */\n ExamViolationAdvancedSecurityRuleInvalidated = 'ExamViolationAdvancedSecurityRuleInvalidated',\n /** ExamViolationAdvancedSecurityRuleWarning */\n ExamViolationAdvancedSecurityRuleWarning = 'ExamViolationAdvancedSecurityRuleWarning',\n /** ExamViolationInvalidated */\n ExamViolationInvalidated = 'ExamViolationInvalidated',\n /** ExamViolationWarning */\n ExamViolationWarning = 'ExamViolationWarning',\n /** Expire2L */\n Expire2L = 'Expire2L',\n /** Expire3L */\n Expire3L = 'Expire3L',\n /** Expire4L */\n Expire4L = 'Expire4L',\n /** ExpireLong */\n ExpireLong = 'ExpireLong',\n /** ExpireMedium */\n ExpireMedium = 'ExpireMedium',\n /** ExpireShort */\n ExpireShort = 'ExpireShort',\n /** FailedExamReschedule */\n FailedExamReschedule = 'FailedExamReschedule',\n /** FirstExam */\n FirstExam = 'FirstExam',\n /** Fulfillment */\n Fulfillment = 'Fulfillment',\n /** Invalid */\n Invalid = 'Invalid',\n /** ItemUnderReview */\n ItemUnderReview = 'ItemUnderReview',\n /** Merge */\n Merge = 'Merge',\n /** MergeConfirmation */\n MergeConfirmation = 'MergeConfirmation',\n /** MergeRejected */\n MergeRejected = 'MergeRejected',\n /** MergeRequest */\n MergeRequest = 'MergeRequest',\n /** Miscellaneous */\n Miscellaneous = 'Miscellaneous',\n /** NewBenefit */\n NewBenefit = 'NewBenefit',\n /** NewCandidate */\n NewCandidate = 'NewCandidate',\n /** NewExam */\n NewExam = 'NewExam',\n /** NewFailedExam */\n NewFailedExam = 'NewFailedExam',\n /** NewPassedExam */\n NewPassedExam = 'NewPassedExam',\n /** OtherRequirementStatusChange */\n OtherRequirementStatusChange = 'OtherRequirementStatusChange',\n /** PaymentReminderLong */\n PaymentReminderLong = 'PaymentReminderLong',\n /** PaymentReminderMedium */\n PaymentReminderMedium = 'PaymentReminderMedium',\n /** PaymentReminderShort */\n PaymentReminderShort = 'PaymentReminderShort',\n /** QuestionnaireApproved */\n QuestionnaireApproved = 'QuestionnaireApproved',\n /** QuestionnaireDeficient */\n QuestionnaireDeficient = 'QuestionnaireDeficient',\n /** QuestionnaireDenied */\n QuestionnaireDenied = 'QuestionnaireDenied',\n /** QuestionnaireEligible */\n QuestionnaireEligible = 'QuestionnaireEligible',\n /** QuestionnaireExpireLong */\n QuestionnaireExpireLong = 'QuestionnaireExpireLong',\n /** QuestionnaireExpireMedium */\n QuestionnaireExpireMedium = 'QuestionnaireExpireMedium',\n /** QuestionnaireExpireShort */\n QuestionnaireExpireShort = 'QuestionnaireExpireShort',\n /** QuestionnaireExpired */\n QuestionnaireExpired = 'QuestionnaireExpired',\n /** QuestionnaireResultExpireLong */\n QuestionnaireResultExpireLong = 'QuestionnaireResultExpireLong',\n /** QuestionnaireResultExpireMedium */\n QuestionnaireResultExpireMedium = 'QuestionnaireResultExpireMedium',\n /** QuestionnaireResultExpireShort */\n QuestionnaireResultExpireShort = 'QuestionnaireResultExpireShort',\n /** QuestionnaireResultExpired */\n QuestionnaireResultExpired = 'QuestionnaireResultExpired',\n /** RestrictTesting */\n RestrictTesting = 'RestrictTesting',\n /** RollingClockExpirationChange */\n RollingClockExpirationChange = 'RollingClockExpirationChange',\n /** StandingCreated */\n StandingCreated = 'StandingCreated',\n /** StandingExpireLong */\n StandingExpireLong = 'StandingExpireLong',\n /** StandingExpireMedium */\n StandingExpireMedium = 'StandingExpireMedium',\n /** StandingExpireShort */\n StandingExpireShort = 'StandingExpireShort',\n /** StandingExpired */\n StandingExpired = 'StandingExpired',\n /** WebBadgeEmailSig */\n WebBadgeEmailSig = 'WebBadgeEmailSig',\n /** WebConversationAlert */\n WebConversationAlert = 'WebConversationAlert',\n /** WebEmailAddrReset */\n WebEmailAddrReset = 'WebEmailAddrReset',\n /** WebFirstTimeLogin */\n WebFirstTimeLogin = 'WebFirstTimeLogin',\n /** WebForgotPassword */\n WebForgotPassword = 'WebForgotPassword',\n /** WebNameChange */\n WebNameChange = 'WebNameChange',\n /** WebSelfRegistration */\n WebSelfRegistration = 'WebSelfRegistration',\n /** WebTranscript */\n WebTranscript = 'WebTranscript',\n /** WebUserEmailAddressChanged */\n WebUserEmailAddressChanged = 'WebUserEmailAddressChanged',\n /** WebUserForgotPassword */\n WebUserForgotPassword = 'WebUserForgotPassword',\n /** WebUserTwoStepAuthentication */\n WebUserTwoStepAuthentication = 'WebUserTwoStepAuthentication'\n}\n\nexport interface EmployeeSelfRegistrationRequest {\n affiliation: UpdateCandidateAffiliationRequest;\n clientAlias: Scalars['String']['input'];\n emailAddr: Scalars['String']['input'];\n nameFirst: Scalars['String']['input'];\n nameLast: Scalars['String']['input'];\n}\n\nexport enum EmrState {\n /** Complete */\n Complete = 'Complete',\n /** Error */\n Error = 'Error',\n /** Queued */\n Queued = 'Queued',\n /** Rejected */\n Rejected = 'Rejected',\n /** Requested */\n Requested = 'Requested'\n}\n\nexport enum EtState {\n /** Failure */\n Failure = 'Failure',\n /** Pending */\n Pending = 'Pending',\n /** Success */\n Success = 'Success',\n /** Void */\n Void = 'Void'\n}\n\nexport enum EticatType {\n /** Crcat */\n Crcat = 'Crcat',\n /** Fcat */\n Fcat = 'Fcat',\n /** None */\n None = 'None'\n}\n\n/**\n * This defines the types of items that can be created as part of an e-transaction.\r\n * \r\n * \r\n * - Requires All Features: Ecommerce\r\n *\n */\nexport interface EtransactionItemCatalog {\n /** When set, this indicates that this item will purchase an item represented by a Certification Requirement. */\n certRequirementCatalog?: Maybe;\n /** When set, indicates that this item may only be purchased by candidates whose primary address is set to the country indicated here. */\n country?: Maybe;\n /** This is the value we supply to PayPal to identify an item in the shopping-cart/transaction that we submit to them. They echo this back to us, so it is not directly important to PayPal, but it is how we identify what was purchased when PayPal notifies our system of a completed purchase. */\n externalId: Scalars['String']['output'];\n /** When set, this indicates that this item will purchase a fulfillment item. This contains high-level information about that fulfillment item. */\n fulfillmentCatalog?: Maybe;\n /**\n * Internal id.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n id: Scalars['Int']['output'];\n /** The label to display on the web to indicate what is going to be purchased. */\n name: Scalars['String']['output'];\n /** This is the cost of the item; what we require PayPal to charge the shopper when they want to purchase the item this row represents. */\n price: Scalars['Decimal']['output'];\n /** Indicates the maximum number of times the candidate can purchase this item. Zero means no limit (they can buy as many as they wish). NULL means the item is disabled (no purchasing allowed). */\n purchaseMax?: Maybe;\n /** When true, this item is eligible for taxes. */\n taxEligible: Scalars['Boolean']['output'];\n /** Indicates what kind of item will be created with a purchase of this item. Available options are Fcat (Fulfillment) and Crcat (CertRequirement). */\n type: EticatType;\n}\n\n/**\n * Shows high-level information about the Exam.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface Exam {\n /** When true, indicates that the exam had a state of either Invalid or Under Review but has since been marked as valid toward certification. */\n approved: Scalars['Boolean']['output'];\n /** Indicates the authorization id that was used to take the Exam. */\n authorizationId?: Maybe;\n catalog?: Maybe;\n catalogId: Scalars['Int']['output'];\n /** The candidate for this exam */\n cmcId: Scalars['Int']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n /** The unique Id (PK) of the data provider that delivered the Exam. This is considered the domain/context/scope within which the Exam.RegistrationNumber is unique. */\n dataProviderId?: Maybe;\n /** The date and time the exam was taken. The time is the local time where the exam was taken. No time zone offset is supplied for that reason. Only the date portion of this is used to calculate cert.ActiveDate values. */\n dateTime: Scalars['DateTime']['output'];\n /** When set, indicates the last date on which the exam can be used toward certification. This value is only set for exams with passing grades. */\n expireDate?: Maybe;\n grade?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n hideUntil?: Maybe;\n /** The unique id of this exam */\n id: Scalars['Int']['output'];\n /** The 3-char Windows API language code that indicates the language the Exam was delivered in. */\n languageId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n /** This is the unique identifier of the Exam at the test delivery vendor. */\n registrationNumber?: Maybe;\n /** Indicates if the exam has been rescored (beta exams, etc.). Any non-null value indicates that there has been a rescore. Most commonly the value is 'r'. */\n rescored?: Maybe;\n /**\n * The primary score Field<> for the Exam. This is typically the raw score. Depending on publishing practices, this could contain a scaled score.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n score?: Maybe;\n /**\n * When true, indicates that a score report is available for download.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportUrl?: Maybe;\n /**\n * A processed score value, set by the Exam delivery vendor using an algorithm to obfuscate the raw Exam score value for more secure public consumption.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n scoreScaled?: Maybe;\n /** When true, indicates that the exam was created via the web site, not imported through daily feeds or API creation. */\n simulated: Scalars['Boolean']['output'];\n /** Exams can either be in a valid (OK) state or in a state that cannot be used toward certification. States that cannot be used toward certification are: Invalid, UnderReview, Hidden, and Corrupted. */\n state: ExamState;\n /** Indicates if the exam is Active or has Expired. */\n status: Scalars['String']['output'];\n /** More information about the data provider's test center. */\n testCenter?: Maybe;\n /** This is the id of the testing center for the exam delivery vendor that delivered the exam. */\n testCenterId?: Maybe;\n /** This indicates that a voucher was used as part or all of payment when the candidate registered to take the Exam. */\n voucherId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: VmwareItsScoreReports\r\n *\n */\n vueItsScoreReportUrl?: Maybe;\n}\n\n/**\n * Shows information about the Exam Accommodation.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\nexport interface ExamAccomm {\n catalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n /** Stores notes from users to be sent to external systems. */\n externalNotes?: Maybe;\n id: Scalars['Int']['output'];\n /** When the exam accommodation was last changed or created. */\n updated: Scalars['DateTime']['output'];\n}\n\n/**\n * Shows information about the Exam Accommodation Catalog.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n *\n */\nexport interface ExamAccommCatalog {\n /** More information about the data provider. */\n dataProvider?: Maybe;\n /** An optional brief description. */\n description?: Maybe;\n /** When true, indicates that accommodation cannot be created for a candidate. Does not affect existing accommodations. */\n disabled?: Maybe;\n /** Unique identifier for the Exam Accommodation Pack definition. */\n exapcatId: Scalars['Int']['output'];\n /** The exam accommodations unique identifier. */\n externalId: Scalars['String']['output'];\n id: Scalars['Int']['output'];\n /** If true, a candidate with this accommodation is not allowed to schedule exams at a physical location. */\n restrictSchedulePhysical?: Maybe;\n /** If true, a candidate with this accommodation is not allowed to exams remotely. */\n restrictScheduleRemote?: Maybe;\n}\n\n/**\n * Shows information about the Exam Accommodation Pack.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\nexport interface ExamAccommPack {\n catalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n /** The date this pack was created. */\n created: Scalars['DateTime']['output'];\n /** Optional notes that web users can leave about the document for this pack. */\n docNotes?: Maybe;\n downloadUrl?: Maybe;\n examAccommList?: Maybe>>;\n /** The last day this pack can be used. */\n expireDate?: Maybe;\n id: Scalars['Int']['output'];\n /** The date that the ReviewState last changed. */\n reviewDate?: Maybe;\n /** Optional notes that web users can leave when reviewing this pack. */\n reviewNotes?: Maybe;\n reviewState: ExapReviewState;\n /** The last time this pack was updates */\n updated?: Maybe;\n uploadUrl?: Maybe;\n}\n\n/**\n * Shows information about the Exam Accommodation Pack Catalog.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n *\n */\nexport interface ExamAccommPackCatalog {\n /** If true, a web user must approve an accommodation under this pack that was created by a candidate before it is applied to them. */\n approvalRequired: Scalars['Boolean']['output'];\n /** If true, a candidate is able to create accommodations under this pack for themselves. */\n candidateCreate: Scalars['Boolean']['output'];\n /** An optional brief description. */\n description?: Maybe;\n /** When true, indicates that accommodations under this pack cannot be created for a candidate. Does not affect existing accommodations. */\n disabled: Scalars['Boolean']['output'];\n /** Gets the exam accomm catalogs associated with this pack catalog. */\n examAccommCatalogList?: Maybe>>;\n id: Scalars['Int']['output'];\n /** The exam accommodation pack generic identifier across all data providers. */\n label: Scalars['String']['output'];\n}\n\n/** Shows detailed information about the Exam Accommodation Pack. */\nexport interface ExamAccommPackDetail {\n catalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n /** The date this pack was created. */\n created: Scalars['DateTime']['output'];\n /** Optional notes that web users can leave about the document for this pack. */\n docNotes?: Maybe;\n downloadUrl?: Maybe;\n examAccommList?: Maybe>>;\n /** The last day this pack can be used. */\n expireDate?: Maybe;\n id: Scalars['Int']['output'];\n /** The date that the ReviewState last changed. */\n reviewDate?: Maybe;\n /** Optional notes that web users can leave when reviewing this pack. */\n reviewNotes?: Maybe;\n reviewState: ExapReviewState;\n /** The last time this pack was updates */\n updated?: Maybe;\n uploadUrl?: Maybe;\n}\n\n/**\n * Shows high-level information about the Exam Attribute.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamAttribute {\n /** The associated exam attribute catalog. */\n catalog?: Maybe;\n /** The associated exam attribute catalog id */\n catalogId: Scalars['Int']['output'];\n /** The unique id for this exam attribute. */\n id: Scalars['Int']['output'];\n /** This attribute's value */\n value?: Maybe;\n}\n\n/**\n * Shows all information about the Exam Attribute Catalog.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n *\n */\nexport interface ExamAttributeCatalog {\n /** The external id for this exam attribute catalog */\n externalId?: Maybe;\n /** The unique id for this exam attribute catalog */\n id: Scalars['Int']['output'];\n /** The attribute label text */\n label?: Maybe;\n}\n\nexport interface ExamAuthHistory {\n activeDate?: Maybe;\n completed?: Maybe;\n errorMessage?: Maybe;\n examDateTime?: Maybe;\n examId?: Maybe;\n excatId?: Maybe;\n excatName?: Maybe;\n expireDate?: Maybe;\n expkId?: Maybe;\n externalId?: Maybe;\n registrationNumber?: Maybe;\n requested?: Maybe;\n revoked?: Maybe;\n sent?: Maybe;\n state?: Maybe;\n}\n\n/**\n * Shows data provider specific information about the Exam Authorization.\r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamAuthorization {\n attempts?: Maybe;\n completed?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n errorMessage?: Maybe;\n /** The unique id for this entry. */\n id: Scalars['Int']['output'];\n requested?: Maybe;\n sendOkDate?: Maybe;\n sent?: Maybe;\n state?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n updateData?: Maybe;\n}\n\n/**\n * Shows data provider agnostic information about the Exam Authorization.\r\n * \r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamAuthorizationPack {\n /** The date that the candidate is eligible. */\n activeDate?: Maybe;\n /** The current status of the auth package. */\n authPackageState?: Maybe;\n /** Indicates that a candidate has requested the authorization, and that it has been queued to be sent to the data provider. */\n claimed: Scalars['Boolean']['output'];\n current: Scalars['Boolean']['output'];\n currentExamAuthorizationList?: Maybe>>;\n editable: Scalars['Boolean']['output'];\n examAuthorizationList?: Maybe>>;\n examCatalog?: Maybe;\n /** The last date that the candidate is eligible. */\n expireDate?: Maybe;\n /** The unique id for this entry at data providers - null if not yet claimed. */\n externalId?: Maybe;\n /** The unique id for this entry. */\n id: Scalars['Int']['output'];\n /** Indicates that this eligibility was manually granted, or a manual change was made to this eligibility. */\n manual?: Maybe;\n revokable: Scalars['Boolean']['output'];\n /** Indicates that this eligibility was manually revoked. */\n revoked?: Maybe;\n /** The date that associated authorizations can be sent to the data providers. */\n sendOkDate?: Maybe;\n updated?: Maybe;\n used: Scalars['Boolean']['output'];\n}\n\nexport interface ExamAuthorizationResponse {\n activeDate?: Maybe;\n completed?: Maybe;\n errorMessage?: Maybe;\n excatId?: Maybe;\n excatName?: Maybe;\n expireDate?: Maybe;\n expkId?: Maybe;\n externalId?: Maybe;\n requested?: Maybe;\n revoked?: Maybe;\n sent?: Maybe;\n state?: Maybe;\n}\n\nexport interface ExamBatch {\n candidateFirstName?: Maybe;\n candidateLastName?: Maybe;\n cmcId: Scalars['Int']['output'];\n examCatalogName?: Maybe;\n examDateTime?: Maybe;\n examGrade?: Maybe;\n examGroupName?: Maybe;\n examId: Scalars['Int']['output'];\n examRegistrationNumber?: Maybe;\n jurisdiction?: Maybe;\n scoreReportBatchCreator?: Maybe;\n scoreReportBatchDate?: Maybe;\n}\n\nexport interface ExamBatchRequest {\n examGradeLabel?: InputMaybe;\n excatId?: InputMaybe;\n jurisdictionId: Scalars['Int']['input'];\n /** If true, will return previously batched certs. If false, will return certs that can be batched. Null is treated as false. */\n rebatch?: InputMaybe;\n}\n\n/**\n * Shows high-level information about the Exam definition.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n *\n */\nexport interface ExamCatalog {\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n badgeCatalog?: Maybe;\n /** An optional brief description of the Exam. */\n description?: Maybe;\n /**\n * This value is used to override the default sorting, which is alphabetical. ExamCatalog will sort by items with a DisplayOrder value, in that order, then alphabetically.\r\n * \r\n * Sortable.\n */\n displayOrder?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n egEditable?: Maybe;\n eligibilityCatalog?: Maybe;\n /** Indicates the last date the exam was being delivered. */\n endDate?: Maybe;\n examGroup?: Maybe;\n /**\n * Unique identifier of the exam as defined at the test delivery provider. Commonly known as the exam code.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n externalId: Scalars['String']['output'];\n /** Unique identifier for the Exam group definition. */\n groupId: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n maximizePoints?: Maybe;\n /**\n * The name of the exam.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n name: Scalars['String']['output'];\n /**\n * The abbreviated name of the exam.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n nameAbbr?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n pointsMax?: Maybe;\n /**\n * An optional url that links to where the Candidate can schedule the Exam.\r\n * \r\n * \r\n * - Requires All Features: ExamSchedulingUrl\r\n *\n */\n schedulingUrl?: Maybe;\n /**\n * When true, indicates that score reports are available to download for Exams of this type.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportEnabled?: Maybe;\n /**\n * If ScoreReport is true, this indicates the latest Exam.Date for which score reorts can be generated. Exams taken after this date will not have a score report generated.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportEndDate?: Maybe;\n scoreReportFailAvailable: Scalars['Boolean']['output'];\n scoreReportPassAvailable: Scalars['Boolean']['output'];\n /**\n * If ScoreReport is true, this indicates the earliest Exam.Date for which score reports can be generated. Exams taken prior to this date will not have a score report generated.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportStartDate?: Maybe;\n /** When true, a grade will show for all exams, including ungraded exams, and the candidate will be shown alternate text, such as 'Completed' instead of the normal grade text. */\n showExamWithAlteredGrade: Scalars['Boolean']['output'];\n /** Indicates the date the exam started being delivered. */\n startDate?: Maybe;\n /** Indicates if the Exam Catalog entry is Active (being delivered), Inactive, Future, or Beta. */\n status: ExamCatalogStatus;\n /**\n * An optional public url to show more information about the Exam.\r\n * \r\n * \r\n * - Requires All Features: ExamInformationUrl\r\n *\n */\n url?: Maybe;\n /** Indicates the number of months the exam will be considered valid toward certification. This determines the ExpireDate of the exam. ExpireDate is only set on exams with a passing grade. When this value is 0, this indicates that the exam is good forever, and no ExpireDate value is set. */\n validPeriod: Scalars['Short']['output'];\n}\n\n/**\n * Shows more detailed information about the Exam definition.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Exam.Catalog.View\r\n *\n */\nexport interface ExamCatalogDetail {\n /**\n * When true, indicates that if the exam is used toward certification achievement, the Exam.Date will not be part of the Cert.ActiveDate calculation.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n activeDateCalcExclude: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n activeDateRule?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n badgeCatalog?: Maybe;\n /** Any catalog external ids associated with the exam. */\n catalogExternalIdList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n created: Scalars['CmDateTimeOffset']['output'];\n /** An optional brief description of the Exam. */\n description?: Maybe;\n /**\n * This value is used to override the default sorting, which is alphabetical. ExamCatalog will sort by items with a DisplayOrder value, in that order, then alphabetically.\r\n * \r\n * Sortable.\n */\n displayOrder?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n egEditable?: Maybe;\n eligibilityCatalog?: Maybe;\n /** Indicates the last date the exam was being delivered. */\n endDate?: Maybe;\n examGroup?: Maybe;\n /** This defines the exam item catalog */\n examItemCatalogList?: Maybe>>;\n /** This defines the sections that are defined for Exam records of this ExamCatalog type. This is typically used to provide section-level feedback on score reports. */\n examSectionCatalogList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n expireDateRule?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n exportDateRule?: Maybe;\n /**\n * Unique identifier of the exam as defined at the test delivery provider. Commonly known as the exam code.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n externalId: Scalars['String']['output'];\n /** Unique identifier for the Exam group definition. */\n groupId: Scalars['Int']['output'];\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n historyList?: Maybe>>;\n id: Scalars['Int']['output'];\n /** If the exam is a beta version, this is the ExamCatalog.Id of the live exam. */\n liveCatalogId?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n liveExamCatalog?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n logicRule?: Maybe;\n /**\n * Defines the maximum score that can be achieved on the exam.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n maxScore?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n maximizePoints?: Maybe;\n /**\n * The name of the exam.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n name: Scalars['String']['output'];\n /**\n * The abbreviated name of the exam.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n nameAbbr?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n pointsMax?: Maybe;\n /** Returns the list of Cert tracks that use this Cert track in logic processing. */\n relatedCertCatalogList?: Maybe>>;\n /**\n * An optional url that links to where the Candidate can schedule the Exam.\r\n * \r\n * \r\n * - Requires All Features: ExamSchedulingUrl\r\n *\n */\n schedulingUrl?: Maybe;\n /**\n * When true, indicates that score reports are available to download for Exams of this type.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportEnabled?: Maybe;\n /**\n * If ScoreReport is true, this indicates the latest Exam.Date for which score reorts can be generated. Exams taken after this date will not have a score report generated.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportEndDate?: Maybe;\n scoreReportFailAvailable: Scalars['Boolean']['output'];\n /**\n * A link to upload the score report template for this excat. You must specify the language in the query string e.g. ?language=en\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportFailUploadUrl?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportList?: Maybe>>;\n scoreReportPassAvailable: Scalars['Boolean']['output'];\n /**\n * A link to upload the score report template for this excat. You must specify the language in the query string e.g. ?language=en\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportPassUploadUrl?: Maybe;\n /**\n * If ScoreReport is true, this indicates the earliest Exam.Date for which score reports can be generated. Exams taken prior to this date will not have a score report generated.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportStartDate?: Maybe;\n /** When true, a grade will show for all exams, including ungraded exams, and the candidate will be shown alternate text, such as 'Completed' instead of the normal grade text. */\n showExamWithAlteredGrade: Scalars['Boolean']['output'];\n /** Indicates the date the exam started being delivered. */\n startDate?: Maybe;\n /** Indicates if the Exam Catalog entry is Active (being delivered), Inactive, Future, or Beta. */\n status: ExamCatalogStatus;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n updated?: Maybe;\n /**\n * An optional public url to show more information about the Exam.\r\n * \r\n * \r\n * - Requires All Features: ExamInformationUrl\r\n *\n */\n url?: Maybe;\n /** Indicates the number of months the exam will be considered valid toward certification. This determines the ExpireDate of the exam. ExpireDate is only set on exams with a passing grade. When this value is 0, this indicates that the exam is good forever, and no ExpireDate value is set. */\n validPeriod: Scalars['Short']['output'];\n}\n\nexport enum ExamCatalogStatus {\n /** Active */\n Active = 'Active',\n /** Beta */\n Beta = 'Beta',\n /** Future */\n Future = 'Future',\n /** Inactive */\n Inactive = 'Inactive'\n}\n\n/**\n * Shows exam comment information.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamComment {\n /** When this record was created */\n created: Scalars['CmDateTimeOffset']['output'];\n /** The unique id for this comment. */\n id: Scalars['Int']['output'];\n /** The name of the file this row originated from. This is NULL if the row didn't come from an import. */\n importSource?: Maybe;\n /** Indicates if the exam was rescored and this comment was part of the rescoring */\n rescored: Scalars['Boolean']['output'];\n /** This indicates the scope of the subject value */\n source?: Maybe;\n /** The comment subject */\n subject?: Maybe;\n /** The comment itself */\n text?: Maybe;\n /** When this record was last updated */\n updated?: Maybe;\n}\n\n/**\n * Shows detailed information about the Exam record.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.View\r\n *\n */\nexport interface ExamDetail {\n /** Additional details for this exam. */\n additionalExamDetails?: Maybe;\n /** When true, indicates that the exam had a state of either Invalid or Under Review but has since been marked as valid toward certification. */\n approved: Scalars['Boolean']['output'];\n attemptNumber?: Maybe;\n /**\n * The attributes for this exam.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n attributeList?: Maybe>>;\n /** Indicates the authorization id that was used to take the Exam. */\n authorizationId?: Maybe;\n catalog?: Maybe;\n catalogId: Scalars['Int']['output'];\n /** The candidate for this exam */\n cmcId: Scalars['Int']['output'];\n /**\n * The comments for this exam.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n commentList?: Maybe>>;\n /** When the Exam record was originally created in CertMetrics. */\n created: Scalars['CmDateTimeOffset']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n /** The unique Id (PK) of the data provider that delivered the Exam. This is considered the domain/context/scope within which the Exam.RegistrationNumber is unique. */\n dataProviderId?: Maybe;\n /** The date and time the exam was taken. The time is the local time where the exam was taken. No time zone offset is supplied for that reason. Only the date portion of this is used to calculate cert.ActiveDate values. */\n dateTime: Scalars['DateTime']['output'];\n daysExtension?: Maybe;\n /** When set, indicates the last date on which the exam can be used toward certification. This value is only set for exams with passing grades. */\n expireDate?: Maybe;\n /** The name of the Exam form as defined by the client. */\n form?: Maybe;\n grade?: Maybe;\n /** When set, this indicates the date the Exam was first graded by the CertMetrics system. Typically applies to beta Exams. */\n graded?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n hideUntil?: Maybe;\n /** The unique id of this exam */\n id: Scalars['Int']['output'];\n /** The images for this exam */\n imageList?: Maybe>>;\n /** When set, indicates the name of the file that this Exam originated from. */\n importSource?: Maybe;\n /** The items for this exam. */\n itemList?: Maybe>>;\n /** The survey items for this exam */\n itemSurveyList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n itemsCorrect?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n itemsIncorrect?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n itemsSkipped?: Maybe;\n /** The 3-char Windows API language code that indicates the language the Exam was delivered in. */\n languageId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n masteredSectionCount?: Maybe;\n /**\n * The minimum score (Exam.Score) needed to achieve a passing grade.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n masteryScore?: Maybe;\n /** An indication of the 'medium' or delivery mode of the Exam as defined by the Exam delivery vendor. */\n mediumIndicator?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialContinuingEducation\r\n *\n */\n points?: Maybe;\n /** Holds the ID of the proctor of this exam. */\n proctorId?: Maybe;\n /** This is the unique identifier of the Exam at the test delivery vendor. */\n registrationNumber?: Maybe;\n /** When set, indicates the last time the Exam was reimported. */\n reimported?: Maybe;\n /** Indicates if the exam has been rescored (beta exams, etc.). Any non-null value indicates that there has been a rescore. Most commonly the value is 'r'. */\n rescored?: Maybe;\n /**\n * The primary score Field<> for the Exam. This is typically the raw score. Depending on publishing practices, this could contain a scaled score.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n score?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n scoreRasch?: Maybe;\n /** When set, this indicates the WebUser that first created this score report as part of a batch in CertMetrics. */\n scoreReportBatchCreator?: Maybe;\n /** When set, this indicates the first date the score report was created as part of a batch by a CertMetrics WebUser. */\n scoreReportBatchDate?: Maybe;\n /**\n * When true, indicates that a score report is available for download.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportUrl?: Maybe;\n /**\n * When set, indicates that a manual score change has been made. Shows the revised score.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n scoreRevised?: Maybe;\n /**\n * A processed score value, set by the Exam delivery vendor using an algorithm to obfuscate the raw Exam score value for more secure public consumption.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n scoreScaled?: Maybe;\n /** The sections for this exam */\n sectionList?: Maybe>>;\n /** When true, indicates that the exam was created via the web site, not imported through daily feeds or API creation. */\n simulated: Scalars['Boolean']['output'];\n standardError?: Maybe;\n /** Exams can either be in a valid (OK) state or in a state that cannot be used toward certification. States that cannot be used toward certification are: Invalid, UnderReview, Hidden, and Corrupted. */\n state: ExamState;\n /** Indicates if the exam is Active or has Expired. */\n status: Scalars['String']['output'];\n /** More information about the data provider's test center. */\n testCenter?: Maybe;\n /** This is the id of the testing center for the exam delivery vendor that delivered the exam. */\n testCenterId?: Maybe;\n /** The number of extra minutes the Candidate was given to complete the Exam, in excess of what is normally allotted. */\n timeExtension?: Maybe;\n /** The number of milliseconds spent on the exam. Will always be non-negative. */\n timeSpent?: Maybe;\n /** The Exam title as sent by the Exam delivery vendor. */\n title?: Maybe;\n updated?: Maybe;\n /** The client-defined version number of the Exam. */\n version?: Maybe;\n /** The violations for this exam */\n violationList?: Maybe>>;\n /** This indicates that a voucher was used as part or all of payment when the candidate registered to take the Exam. */\n voucherId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: VmwareItsScoreReports\r\n *\n */\n vueItsScoreReportUrl?: Maybe;\n}\n\n/**\n * Shows exam event information.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamEvents.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamEvent {\n actionUrlList?: Maybe>>;\n /** This is indicates the authorization ID that was used when the candidate registered to take the exam */\n authId?: Maybe;\n catalog?: Maybe;\n /** The exam catalog item id associated with this event */\n catalogId: Scalars['Int']['output'];\n /** The candidate this event is associated with */\n cmcId: Scalars['Int']['output'];\n /** When this event was created */\n created: Scalars['CmDateTimeOffset']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n /** The unique Id (PK) of the data provider that delivered the Exam. This is considered the domain/context/scope within which the Exam.RegistrationNumber is unique. */\n dataProviderId?: Maybe;\n /** The date/time of the event. E.g. when the appointment was scheduled */\n dateTime?: Maybe;\n discount?: Maybe;\n /** The unique id of this exam event */\n id: Scalars['Int']['output'];\n /** The name of the file this row originated from. This is NULL if the row didn't come from an import. */\n importSource?: Maybe;\n /** The 3-char Windows API language code that indicates the language the Exam was delivered in. */\n languageId?: Maybe;\n /** The ID of the event at the data provider. */\n registrationNumber?: Maybe;\n /** More information about the data provider's test center. */\n testCenter?: Maybe;\n /** This is the id of the testing center for the exam delivery vendor that delivered the exam. */\n testCenterId?: Maybe;\n /** Distinguishes the different things we can get from a data provider that, while they come with exam-data, are not exams. */\n type: ExevtType;\n /** When this event was updated */\n updated?: Maybe;\n /** This is indicates the voucher that was used when the candidate registered to take the exam */\n voucherId?: Maybe;\n}\n\nexport enum ExamEventActionType {\n /** Cancel */\n Cancel = 'Cancel',\n /** LiteweightRecertify */\n LiteweightRecertify = 'LiteweightRecertify',\n /** Reschedule */\n Reschedule = 'Reschedule',\n /** View */\n View = 'View'\n}\n\nexport interface ExamEventActionUrl {\n type?: Maybe;\n url?: Maybe;\n}\n\n/**\n * Returns the discount information for an exam event.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n *\n */\nexport interface ExamEventDiscount {\n accessCode?: Maybe;\n clientReportingCode?: Maybe;\n clientReportingCodeDescription?: Maybe;\n currency: Scalars['String']['output'];\n /** The exam event associated with this discount. */\n examEvent: ExamEvent;\n id: Scalars['Int']['output'];\n name?: Maybe;\n promoCode?: Maybe;\n totalDiscountAmount: Scalars['Decimal']['output'];\n voucherNumber?: Maybe;\n vtsVoucherSalesOrderNumber?: Maybe;\n}\n\nexport enum ExamGradeLabel {\n /** Fail */\n Fail = 'Fail',\n /** Pass */\n Pass = 'Pass',\n /** Ungraded */\n Ungraded = 'Ungraded'\n}\n\n/**\n * This is for the grouping of exam definitions (excats).\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n *\n */\nexport interface ExamGroup {\n /** Color to be used in the exam group card in hex (#000000) format. */\n color?: Maybe;\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. ExamGroup will sort by items with a DisplayOrder value, in that order, then alphabetically. */\n displayOrder?: Maybe;\n id: Scalars['Int']['output'];\n /** Group display name. */\n name: Scalars['String']['output'];\n /** Optional Grouping used instead of defaults built into the catalog. If using, must be on all groups */\n program?: Maybe;\n /** Color to be used in the exam group text in hex (#000000) format. */\n textColor?: Maybe;\n}\n\n/**\n * Shows exam image information.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamImages.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamImage {\n /** The associated exam */\n exam?: Maybe;\n /** The unique id for this item */\n id: Scalars['Int']['output'];\n /** The type of this image */\n type?: Maybe;\n /** The datetime this image was updated */\n updated?: Maybe;\n /** The url for this image */\n url?: Maybe;\n}\n\nexport interface ExamImageSecurityConfigurationGqlType {\n unparsedConfig?: Maybe;\n}\n\n/**\n * Shows exam item information.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamItem {\n /**\n * The correct answer for this item\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamKey.View\r\n *\n */\n correctAnswer?: Maybe;\n /** When this row was created */\n created: Scalars['CmDateTimeOffset']['output'];\n /** The distractor count */\n distractorCount?: Maybe;\n /** The corresponding item catalog for this exam item. */\n examItemCatalog?: Maybe;\n /** Shows detailed information about the ExamItem record. */\n examItemDetail?: Maybe;\n /** The unique id for this item */\n id: Scalars['Int']['output'];\n /** The name of the file this row originated from. NULL if the row didn't come from an import. */\n importSource?: Maybe;\n /** Learning resources for this item */\n learningResources?: Maybe;\n /** The identifying name for this item */\n name?: Maybe;\n /** The order this item was presented in */\n orderPresented?: Maybe;\n /** If this item was part of a rescoring */\n rescored: Scalars['Boolean']['output'];\n /**\n * The item's response\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n response?: Maybe;\n /** When exam-item-response data exists for an item, this will either be \" + \" or \" * \". The value \" + \" means that all of the response data is of the same type, while \" * \" means there are multiple types */\n responseType?: Maybe;\n /**\n * The score on this item\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n score?: Maybe;\n /** Returns the score weight from exam item catalog */\n scoreWeight?: Maybe;\n /** Returns true if an item has been scored, false otherwise. */\n scored?: Maybe;\n /** The calculated score status for the Exam Item. */\n scoredStatus?: Maybe;\n /** A listing of ordinals that link items in an exam to sections in the same exam */\n sectionOrdinal?: Maybe;\n /** A single character status for the item */\n status?: Maybe;\n /** The time spent on this item in seconds */\n timeSpent?: Maybe;\n /** When this row was last updated */\n updated?: Maybe;\n}\n\n/**\n * Shows information about the exam item catalog\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Exam.Catalog.Items.View\r\n *\n */\nexport interface ExamItemCatalog {\n /** This field is for item-definition-level comments that users may wish to store in our system. The main purpose is to provide a way to have comments about an item to be displayed on an item-level (psychometric) report. */\n comment?: Maybe;\n /** The unique id for this item catalog */\n id: Scalars['Int']['output'];\n /**\n * For items we score, this contains the correct answer (AKA answer key). For dichotomous scoring, a simple string-equality test is used to decide between correct (1) and incorrect (0).\r\n * \r\n * \r\n * - Requires All Permissions: Exam.Catalog.Items.Key.View\r\n *\n */\n itemCorrectAnswer?: Maybe;\n /** The name stored in the item table. */\n itemName: Scalars['String']['output'];\n /** The maximum score possible for the item. Used for polytomous scoring. */\n itemScoreMax?: Maybe;\n /** Used in score calculation for the exam. It indicates the item's \"weight\" towards the final score with regard to other items. */\n itemScoreWeight?: Maybe;\n /** The 3-char Windows API language code that indicates the language the Exam was delivered in. */\n languageId: Scalars['String']['output'];\n /** An optional list of values which indicate the forms in which the item is considered un-scored. */\n unscoredForms?: Maybe>>;\n}\n\n/**\n * Shows detailed information about the ExamItem record.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamMSFTExamDetails\r\n *\n */\nexport interface ExamItemDetail {\n /** Whether or not the exam item is part of a case study. */\n caseStudy?: Maybe;\n id: Scalars['Int']['output'];\n /** The ID of the exam_item that this detail record belongs to. */\n itemId: Scalars['Int']['output'];\n /** The time in seconds that \"Open Book\" was used by the candidate on this exam item. */\n itemTimeSeconds?: Maybe;\n /** The max points possible for the exam item. */\n maxPointsPossible?: Maybe;\n /** Whether or not this was the first exam item that the candidate used the \"Open Book\" feature on, for the exam. */\n obFirst?: Maybe;\n /** The number of \"Open Book\" pages that were viewed by the candidate for this exam item. */\n obPages?: Maybe;\n /** Whether \"or not Open Book\" was used on this exam item. */\n obUsed?: Maybe;\n}\n\n/**\n * Shows exam item survey information.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamItemSurvey {\n /** When this survey item was created. */\n created: Scalars['CmDateTimeOffset']['output'];\n /** The unique id of this survey. */\n id: Scalars['Int']['output'];\n /** The name of the file this row originated from. This is NULL if the row didn't come from an import. */\n importSource?: Maybe;\n /** The identifier for this survey item */\n name?: Maybe;\n /** Shows if this survey item was part of an exam rescoring */\n rescored?: Maybe;\n /** The response */\n response?: Maybe;\n /** The response type */\n responseType?: Maybe;\n /** The time spent on this survey item in seconds */\n timeSpent?: Maybe;\n /** The survey item title */\n title?: Maybe;\n /** When this survey item was last updated */\n updated?: Maybe;\n}\n\nexport enum ExamScoredStatusEnum {\n /** NonItem */\n NonItem = 'NonItem',\n /** Scored */\n Scored = 'Scored',\n /** Unscored */\n Unscored = 'Unscored'\n}\n\n/**\n * Shows exam section information.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: Candidate.ExamDetails.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamSection {\n /** When this item was created */\n created: Scalars['CmDateTimeOffset']['output'];\n grade?: Maybe;\n /** The unique id of this section */\n id: Scalars['Int']['output'];\n /** The name of the file this row originated from. This is NULL if the row didn't come from an import. */\n importSource?: Maybe;\n /**\n * The number of items correct on this section\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n itemsCorrect?: Maybe;\n /**\n * The number of items incorrect on this section\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n itemsIncorrect?: Maybe;\n /**\n * The number of items skipped on this section\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n itemsSkipped?: Maybe;\n /**\n * The mastery score\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n masteryScore?: Maybe;\n /** The identifier for this section */\n name?: Maybe;\n /** This is the numeric ID of the section within the exam. It is a legacy Field<> introduced solely because of how sections are linked to items in the CNM11 format. Normally, the sec-name field should be used when choosing an \"external ID\" for sections; when this is null, but the item-section-ordinal field is not, look in sec-name */\n ordinal?: Maybe;\n /** Indicates if this section has been involved in an exam rescoring */\n rescored: Scalars['Boolean']['output'];\n /**\n * The section grade\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n score?: Maybe;\n /** The maximum score achievable in the section, when known. */\n scoreMax?: Maybe;\n /**\n * Indicates if this section was scored\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n scored: Scalars['Boolean']['output'];\n /**\n * The scoring algorithm used\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.View\r\n *\n */\n scoringAlgorithm?: Maybe;\n /** The standard error */\n standardError?: Maybe;\n /** The label/description of the section */\n title?: Maybe;\n /** When this item was last updated */\n updated?: Maybe;\n}\n\n/**\n * Returns generic details about an exam section\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamSectionCatalog\r\n * \r\n * - Requires All Permissions: Exam.Catalog.Sections.View\r\n *\n */\nexport interface ExamSectionCatalog {\n /** The percentage of the exam items that are contained in this section. */\n coverage?: Maybe;\n /** The minimum score required to pass */\n cutScore?: Maybe;\n /** The exam form the section belongs to */\n examForm: Scalars['String']['output'];\n /** A score higher than this indicates strong performance on this section */\n high?: Maybe;\n /** The unique id of the record */\n id: Scalars['Int']['output'];\n /** The label e.g. 'JavaScript is flawless, discuss' */\n label?: Maybe;\n /** A score higher than this indicates weak performance on this section */\n low?: Maybe;\n /** The maximum score possible on this section */\n maxScore?: Maybe;\n /** A score higher than this indicates acceptable performance on this section */\n mid?: Maybe;\n /** The section name e.g. '1.1' */\n sectionName: Scalars['String']['output'];\n}\n\nexport enum ExamSectionGradeLabel {\n /** Fail */\n Fail = 'Fail',\n /** Pass */\n Pass = 'Pass',\n /** Ungraded */\n Ungraded = 'Ungraded'\n}\n\nexport enum ExamState {\n /** Corrupted */\n Corrupted = 'Corrupted',\n /** Hidden */\n Hidden = 'Hidden',\n /** Invalid */\n Invalid = 'Invalid',\n /** OK */\n Ok = 'OK',\n /** UnderReview */\n UnderReview = 'UnderReview'\n}\n\n/**\n * Returns a list of exams under review.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamSecurity\r\n * \r\n * - Requires All Permissions: Exam.ReviewList.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamUnderReviewResponse {\n candidate?: Maybe;\n catalog?: Maybe;\n cmcId: Scalars['Int']['output'];\n dateTime: Scalars['CmDateTimeOffset']['output'];\n dpExternalId?: Maybe;\n emailRequestList?: Maybe>>;\n examRegistrationNumber?: Maybe;\n /** Returns latest exam review note for an exam. */\n examReviewNote?: Maybe;\n examUpdated?: Maybe;\n examViolationList?: Maybe>>;\n id: Scalars['Int']['output'];\n}\n\nexport interface ExamValidationRequest {\n dataProviderExternalId: Scalars['String']['input'];\n examRegistrationNumber: Scalars['String']['input'];\n examState: ExamState;\n note: Scalars['String']['input'];\n notifyCandidate?: InputMaybe;\n}\n\nexport enum ExamValidationUpdateStatus {\n /** DuplicateRecords */\n DuplicateRecords = 'DuplicateRecords',\n /** NotFound */\n NotFound = 'NotFound',\n /** Success */\n Success = 'Success'\n}\n\n/**\n * Shows exam violation information.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ExamViolations.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamViolation {\n /** When this violation was created */\n created: Scalars['CmDateTimeOffset']['output'];\n /** Extra detail about a violation when needed. */\n detail?: Maybe;\n /** Extra detail about a violation when needed for face recognition. */\n detailFaceRecognitionParsed?: Maybe;\n /** Extra detail about a violation when needed for rsi. */\n detailRsiParsed?: Maybe;\n /** The associated exam */\n exam?: Maybe;\n id: Scalars['Int']['output'];\n /** This is meant for use by a violation-detection script to further identify a specify sub-type; it's up to each script to define how this is used (or not). It is useful because some specialized requests require different handling than the default (e.g. some send an email while some don't). */\n subtype?: Maybe;\n /** Indicates the type of violation the exam is guilty of */\n type: ExamViolationType;\n}\n\n/**\n * Shows details of exam violations.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamViolationDetail {\n /** The list of Rsi Zscore matches */\n rsiFlaggedPair: Array>;\n /** The number of other exams that this exam overlaps on Rsi with */\n rsiOverlapCount: Scalars['Int']['output'];\n /** The list of Rsi overlap matches */\n rsiOverlapFlaggedPair: Array>;\n /** The number of other exams that matched on Rsi ZScore */\n rsiZScoreCount: Scalars['Int']['output'];\n /** The list of Ssi Zscore matches */\n ssiFlaggedPair: Array>;\n /** The number of other exams that this exam overlaps on Ssi with */\n ssiOverlapCount: Scalars['Int']['output'];\n /** The list of Ssi overlap matches */\n ssiOverlapFlaggedPair: Array>;\n /** The number of other exams that matched on Ssi ZScore */\n ssiZScoreCount: Scalars['Int']['output'];\n}\n\n/**\n * Shows details of face recognition exam violations.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamViolationFaceRecognitionDetail {\n /** Confidence of the match */\n confidence: Scalars['Decimal']['output'];\n /** Cmc Id the image matched against */\n matchedCmcId: Scalars['Int']['output'];\n}\n\nexport enum ExamViolationType {\n /** AdvancedSecurityRule */\n AdvancedSecurityRule = 'AdvancedSecurityRule',\n /** CandidateRelated */\n CandidateRelated = 'CandidateRelated',\n /** Collusion */\n Collusion = 'Collusion',\n /** DifferentialPerformance */\n DifferentialPerformance = 'DifferentialPerformance',\n /** FaceRecognition */\n FaceRecognition = 'FaceRecognition',\n /** FailThenFail */\n FailThenFail = 'FailThenFail',\n /** FailThenPass */\n FailThenPass = 'FailThenPass',\n /** ItemExposure */\n ItemExposure = 'ItemExposure',\n /** NoViolation */\n NoViolation = 'NoViolation',\n /** Null */\n Null = 'Null',\n /** Order */\n Order = 'Order',\n /** PassThenFail */\n PassThenFail = 'PassThenFail',\n /** PassThenPass */\n PassThenPass = 'PassThenPass',\n /** PoorPerformance */\n PoorPerformance = 'PoorPerformance',\n /** Psychometric */\n Psychometric = 'Psychometric',\n /** Rsi */\n Rsi = 'Rsi',\n /** ScoreChange */\n ScoreChange = 'ScoreChange',\n /** ScoreTooHighTimeTooShort */\n ScoreTooHighTimeTooShort = 'ScoreTooHighTimeTooShort',\n /** ScoredUnscoredPerformance */\n ScoredUnscoredPerformance = 'ScoredUnscoredPerformance',\n /** TimeTooShort */\n TimeTooShort = 'TimeTooShort',\n /** TimeTooShortForTooManyItems */\n TimeTooShortForTooManyItems = 'TimeTooShortForTooManyItems',\n /** TotalExceeded */\n TotalExceeded = 'TotalExceeded',\n /** TrojanItem */\n TrojanItem = 'TrojanItem',\n /** Voucher */\n Voucher = 'Voucher'\n}\n\n/**\n * Shows exam voucher information.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Exam.CertMetricsVouchers.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface ExamVoucher {\n /** The first date this voucher is usable for registration (it is active on this date). Null means it was active from the beginning of time. */\n activeDate?: Maybe;\n /** When the voucher was assigned to the candidate. */\n assigned?: Maybe;\n /** Used to group a set of vouchers together. */\n batchId?: Maybe;\n /** This indicates the candidate the voucher has been assigned to. */\n cmcId?: Maybe;\n /** When this voucher was created */\n created?: Maybe;\n dataProvider?: Maybe;\n /** Optional, custom data that only applies to the data-provider, and is used in a custom way for that provider when it exists. */\n dataProviderData?: Maybe;\n /** When this is not null, the record represents a discount/coupon code (not a single-use voucher). In which case, this is the value used at the data provider when scheduling to take an exam. */\n discountCode?: Maybe;\n /** The associated exam catalog */\n examCatalog?: Maybe;\n /** The unique ID of the voucher data (aka coupon/discount code). */\n externalId?: Maybe;\n id: Scalars['Int']['output'];\n importDataProvider?: Maybe;\n /** The name of the file this row originated from. This is NULL if the row didn't come from an import. */\n importSource?: Maybe;\n /** The last date the voucher is usable for registration (it is still active on this date)---as reported to us during import. Null means it never goes inactive. */\n inactiveDate?: Maybe;\n /** True when the voucher is no longer valid. */\n invalid?: Maybe;\n /** Indicates if an unassigned voucher is available to be assigned to a candidate. (Inactive vouchers should not be assigned, regardless this setting.) */\n isUsable?: Maybe;\n maxAttempts?: Maybe;\n maxRetakes?: Maybe;\n updated?: Maybe;\n}\n\nexport enum ExapReviewState {\n /** Approved */\n Approved = 'Approved',\n /** Denied */\n Denied = 'Denied',\n /** None */\n None = 'None',\n /** Pending */\n Pending = 'Pending',\n /** Revoked */\n Revoked = 'Revoked'\n}\n\nexport enum ExauthState {\n /** Complete */\n Complete = 'Complete',\n /** Error */\n Error = 'Error',\n /** Queued */\n Queued = 'Queued',\n /** Rejected */\n Rejected = 'Rejected',\n /** Requested */\n Requested = 'Requested'\n}\n\nexport enum ExevtType {\n /** Aborted */\n Aborted = 'Aborted',\n /** ApptOK */\n ApptOk = 'ApptOK',\n /** Canceled */\n Canceled = 'Canceled',\n /** Corrupted */\n Corrupted = 'Corrupted',\n /** Exam */\n Exam = 'Exam',\n /** NoShow */\n NoShow = 'NoShow'\n}\n\nexport enum FcatQueueType {\n /** EachNewItem */\n EachNewItem = 'EachNewItem',\n /** Manual */\n Manual = 'Manual',\n /** Never */\n Never = 'Never',\n /** Once */\n Once = 'Once'\n}\n\n/** Client/sponsor feature information */\nexport interface Feature {\n description: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n devNotes?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n editEdInternal: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\n editEdSponsor: Scalars['Boolean']['output'];\n enabled: Scalars['Boolean']['output'];\n id: Scalars['Int']['output'];\n key: HubFeature;\n label: Scalars['String']['output'];\n name: Scalars['String']['output'];\n parentId?: Maybe;\n}\n\n/** Feature information */\nexport interface FeatureInfo {\n children?: Maybe>>;\n description: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n devNotes?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n editEdInternal: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\n editEdSponsor: Scalars['Boolean']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n editMamuInternal: Scalars['Boolean']['output'];\n id: Scalars['Int']['output'];\n key: HubFeature;\n label: Scalars['String']['output'];\n name: Scalars['String']['output'];\n parentId?: Maybe;\n}\n\nexport interface FetchDelayListRequest {\n viewUnfilteredData: Scalars['Boolean']['input'];\n wuserId: Scalars['Int']['input'];\n}\n\nexport interface FetchDelayListResponse {\n csetDefault?: Maybe;\n csetInt?: Maybe;\n lcatName?: Maybe;\n litemExternalId?: Maybe;\n litemId?: Maybe;\n litemName?: Maybe;\n}\n\nexport interface FetchExamAuthHistoryRequest {\n cmcId?: InputMaybe;\n}\n\nexport interface FetchExamAuthsRequest {\n cmcId?: InputMaybe;\n}\n\n/**\n * A grouping of filter criteria\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Announcements\r\n * \r\n * - Requires All Permissions: Announcements.Catalog.View\r\n *\n */\nexport interface Filter {\n criteriaList?: Maybe>>;\n description?: Maybe;\n id?: Maybe;\n name?: Maybe;\n updated?: Maybe;\n updator?: Maybe;\n}\n\n/**\n * A filter criteria\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Announcements\r\n * \r\n * - Requires All Permissions: Announcements.Catalog.View\r\n *\n */\nexport interface FilterCriteria {\n and?: Maybe;\n id?: Maybe;\n idList?: Maybe>>;\n not?: Maybe;\n order?: Maybe;\n requiredCount?: Maybe;\n rule?: Maybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Announcements\r\n * \r\n * - Requires All Permissions: Announcements.Catalog.View\r\n *\n */\nexport interface FilterCriteriaRequest {\n and: Scalars['Boolean']['input'];\n idList: Array>;\n not: Scalars['Boolean']['input'];\n order: Scalars['Byte']['input'];\n requiredCount: Scalars['Int']['input'];\n rule: CfcRule;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface FlaggedOverlapPair {\n /** The number of matching items */\n count: Scalars['Int']['output'];\n /** The id of the matching exam */\n examId: Scalars['Int']['output'];\n /** Expected value \"factor\" for Z-score calculation */\n expectedCount?: Maybe;\n /** The candidate name, cmcId, registration number, exam date, and test center id of the matching exam */\n matchingExam?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface FlaggedPair {\n /** The number of matching items */\n count: Scalars['Int']['output'];\n /** The id of the matching exam */\n examId: Scalars['Int']['output'];\n /** Expected value \"factor\" for Z-score calculation */\n expectedCount?: Maybe;\n /** The candidate name, cmcId, registration number, exam date, and test center id of the matching exam */\n matchingExam?: Maybe;\n /** The Zscore between the matched and matching exams */\n zscore: Scalars['Decimal']['output'];\n}\n\nexport enum FulfStatus {\n /** Failed */\n Failed = 'Failed',\n /** Null */\n Null = 'Null',\n /** OK */\n Ok = 'OK'\n}\n\nexport interface GenerateShortLivedTokenRequest {\n targetMethod?: InputMaybe;\n targetUrl: Scalars['String']['input'];\n}\n\nexport interface GetLocalizationListRequest {\n clientAlias?: InputMaybe;\n /** The culture of the localizations. */\n cultureName: Scalars['String']['input'];\n /** See PortalType enum for more information. */\n portalType?: InputMaybe;\n}\n\nexport interface GetLocalizationRequest {\n /** The culture of the localization. */\n cultureName: Scalars['String']['input'];\n /** The localization name (key). */\n name: Scalars['String']['input'];\n /** See PortalType enum for more information. */\n type: LocType;\n}\n\nexport interface GetLocalizedCulturesListRequest {\n clientAlias: Scalars['String']['input'];\n}\n\nexport interface GetSupportedCulturesListRequest {\n clientAlias: Scalars['String']['input'];\n}\n\nexport interface GrantExamAuthorizationPackRequest {\n activeDate: Scalars['CmDateTimeOffset']['input'];\n candidateId: CandidateIdRequest;\n excatId: Scalars['Int']['input'];\n expireDate?: InputMaybe;\n sendOkDate: Scalars['CmDateTimeOffset']['input'];\n}\n\n/** Hub Feature Enum */\nexport enum HubFeature {\n /** AWSCustomReports */\n AwsCustomReports = 'AWSCustomReports',\n /** AWSCustomReports.VerifyVoucherCode */\n AwsCustomReportsVerifyVoucherCode = 'AWSCustomReportsVerifyVoucherCode',\n /** AddCandidateId */\n AddCandidateId = 'AddCandidateId',\n /** AnnouncementPage */\n AnnouncementPage = 'AnnouncementPage',\n /** Announcements */\n Announcements = 'Announcements',\n /** Benefit */\n Benefit = 'Benefit',\n /** Benefit.BrandVia_Vmware */\n BenefitBrandViaVmware = 'BenefitBrandVia_Vmware',\n /** Benefit.Lineup */\n BenefitLineup = 'BenefitLineup',\n /** Benefit.RecentActivity */\n BenefitRecentActivity = 'BenefitRecentActivity',\n /** BulkCandidateTools */\n BulkCandidateTools = 'BulkCandidateTools',\n /** CandidateAccess */\n CandidateAccess = 'CandidateAccess',\n /** CandidateAccess.BannedLandingPage */\n CandidateAccessBannedLandingPage = 'CandidateAccessBannedLandingPage',\n /** CandidateAccess.CandidatePortalDefaultView */\n CandidateAccessCandidatePortalDefaultView = 'CandidateAccessCandidatePortalDefaultView',\n /** CandidateAccess.CmIdCpNavigation */\n CandidateAccessCmIdCpNavigation = 'CandidateAccessCmIdCpNavigation',\n /** CandidateAccess.Integration */\n CandidateAccessIntegration = 'CandidateAccessIntegration',\n /** CandidateAccess.Integration.Egress */\n CandidateAccessIntegrationEgress = 'CandidateAccessIntegrationEgress',\n /** CandidateAccess.Integration.Egress.Brandvia */\n CandidateAccessIntegrationEgressBrandvia = 'CandidateAccessIntegrationEgressBrandvia',\n /** CandidateAccess.Integration.Egress.Caveon */\n CandidateAccessIntegrationEgressCaveon = 'CandidateAccessIntegrationEgressCaveon',\n /** CandidateAccess.Integration.Egress.Caveon.Scheduling */\n CandidateAccessIntegrationEgressCaveonScheduling = 'CandidateAccessIntegrationEgressCaveonScheduling',\n /** CandidateAccess.Integration.Egress.Caveon.Scheduling.Cancel */\n CandidateAccessIntegrationEgressCaveonSchedulingCancel = 'CandidateAccessIntegrationEgressCaveonSchedulingCancel',\n /** CandidateAccess.Integration.Egress.Caveon.Scheduling.Reschedule */\n CandidateAccessIntegrationEgressCaveonSchedulingReschedule = 'CandidateAccessIntegrationEgressCaveonSchedulingReschedule',\n /** CandidateAccess.Integration.Egress.Caveon.Scheduling.Schedule */\n CandidateAccessIntegrationEgressCaveonSchedulingSchedule = 'CandidateAccessIntegrationEgressCaveonSchedulingSchedule',\n /** CandidateAccess.Integration.Egress.Caveon.Scheduling.View */\n CandidateAccessIntegrationEgressCaveonSchedulingView = 'CandidateAccessIntegrationEgressCaveonSchedulingView',\n /** CandidateAccess.Integration.Egress.Caveon.Scheduling.ViewAppointments */\n CandidateAccessIntegrationEgressCaveonSchedulingViewAppointments = 'CandidateAccessIntegrationEgressCaveonSchedulingViewAppointments',\n /** CandidateAccess.Integration.Egress.Examity */\n CandidateAccessIntegrationEgressExamity = 'CandidateAccessIntegrationEgressExamity',\n /** CandidateAccess.Integration.Egress.Examity.Scheduling */\n CandidateAccessIntegrationEgressExamityScheduling = 'CandidateAccessIntegrationEgressExamityScheduling',\n /** CandidateAccess.Integration.Egress.Examity.Scheduling.Cancel */\n CandidateAccessIntegrationEgressExamitySchedulingCancel = 'CandidateAccessIntegrationEgressExamitySchedulingCancel',\n /** CandidateAccess.Integration.Egress.Examity.Scheduling.Reschedule */\n CandidateAccessIntegrationEgressExamitySchedulingReschedule = 'CandidateAccessIntegrationEgressExamitySchedulingReschedule',\n /** CandidateAccess.Integration.Egress.Examity.Scheduling.Schedule */\n CandidateAccessIntegrationEgressExamitySchedulingSchedule = 'CandidateAccessIntegrationEgressExamitySchedulingSchedule',\n /** CandidateAccess.Integration.Egress.Examity.Scheduling.View */\n CandidateAccessIntegrationEgressExamitySchedulingView = 'CandidateAccessIntegrationEgressExamitySchedulingView',\n /** CandidateAccess.Integration.Egress.Examity.Scheduling.ViewAppointments */\n CandidateAccessIntegrationEgressExamitySchedulingViewAppointments = 'CandidateAccessIntegrationEgressExamitySchedulingViewAppointments',\n /** CandidateAccess.Integration.Egress.Kryterion */\n CandidateAccessIntegrationEgressKryterion = 'CandidateAccessIntegrationEgressKryterion',\n /** CandidateAccess.Integration.Egress.Kryterion.Scheduling */\n CandidateAccessIntegrationEgressKryterionScheduling = 'CandidateAccessIntegrationEgressKryterionScheduling',\n /** CandidateAccess.Integration.Egress.Kryterion.Scheduling.Cancel */\n CandidateAccessIntegrationEgressKryterionSchedulingCancel = 'CandidateAccessIntegrationEgressKryterionSchedulingCancel',\n /** CandidateAccess.Integration.Egress.Kryterion.Scheduling.Reschedule */\n CandidateAccessIntegrationEgressKryterionSchedulingReschedule = 'CandidateAccessIntegrationEgressKryterionSchedulingReschedule',\n /** CandidateAccess.Integration.Egress.Kryterion.Scheduling.Schedule */\n CandidateAccessIntegrationEgressKryterionSchedulingSchedule = 'CandidateAccessIntegrationEgressKryterionSchedulingSchedule',\n /** CandidateAccess.Integration.Egress.Kryterion.Scheduling.View */\n CandidateAccessIntegrationEgressKryterionSchedulingView = 'CandidateAccessIntegrationEgressKryterionSchedulingView',\n /** CandidateAccess.Integration.Egress.Kryterion.Scheduling.ViewAppointments */\n CandidateAccessIntegrationEgressKryterionSchedulingViewAppointments = 'CandidateAccessIntegrationEgressKryterionSchedulingViewAppointments',\n /** CandidateAccess.Integration.Egress.OidcEgress */\n CandidateAccessIntegrationEgressOidcEgress = 'CandidateAccessIntegrationEgressOidcEgress',\n /** CandidateAccess.Integration.Egress.OidcEgress.Certiverse */\n CandidateAccessIntegrationEgressOidcEgressCertiverse = 'CandidateAccessIntegrationEgressOidcEgressCertiverse',\n /** CandidateAccess.Integration.Egress.OidcEgress.Certiverse.Scheduling */\n CandidateAccessIntegrationEgressOidcEgressCertiverseScheduling = 'CandidateAccessIntegrationEgressOidcEgressCertiverseScheduling',\n /** CandidateAccess.Integration.Egress.PearsonVue */\n CandidateAccessIntegrationEgressPearsonVue = 'CandidateAccessIntegrationEgressPearsonVue',\n /** CandidateAccess.Integration.Egress.PearsonVue.Scheduling */\n CandidateAccessIntegrationEgressPearsonVueScheduling = 'CandidateAccessIntegrationEgressPearsonVueScheduling',\n /** CandidateAccess.Integration.Egress.PearsonVue.Scheduling.Cancel */\n CandidateAccessIntegrationEgressPearsonVueSchedulingCancel = 'CandidateAccessIntegrationEgressPearsonVueSchedulingCancel',\n /** CandidateAccess.Integration.Egress.PearsonVue.Scheduling.Reschedule */\n CandidateAccessIntegrationEgressPearsonVueSchedulingReschedule = 'CandidateAccessIntegrationEgressPearsonVueSchedulingReschedule',\n /** CandidateAccess.Integration.Egress.PearsonVue.Scheduling.Schedule */\n CandidateAccessIntegrationEgressPearsonVueSchedulingSchedule = 'CandidateAccessIntegrationEgressPearsonVueSchedulingSchedule',\n /** CandidateAccess.Integration.Egress.PearsonVue.Scheduling.View */\n CandidateAccessIntegrationEgressPearsonVueSchedulingView = 'CandidateAccessIntegrationEgressPearsonVueSchedulingView',\n /** CandidateAccess.Integration.Egress.PearsonVue.Scheduling.ViewAppointments */\n CandidateAccessIntegrationEgressPearsonVueSchedulingViewAppointments = 'CandidateAccessIntegrationEgressPearsonVueSchedulingViewAppointments',\n /** CandidateAccess.Integration.Egress.Psi */\n CandidateAccessIntegrationEgressPsi = 'CandidateAccessIntegrationEgressPsi',\n /** CandidateAccess.Integration.Egress.Psi.Scheduling */\n CandidateAccessIntegrationEgressPsiScheduling = 'CandidateAccessIntegrationEgressPsiScheduling',\n /** CandidateAccess.Integration.Egress.Psi.Scheduling.Cancel */\n CandidateAccessIntegrationEgressPsiSchedulingCancel = 'CandidateAccessIntegrationEgressPsiSchedulingCancel',\n /** CandidateAccess.Integration.Egress.Psi.Scheduling.Reschedule */\n CandidateAccessIntegrationEgressPsiSchedulingReschedule = 'CandidateAccessIntegrationEgressPsiSchedulingReschedule',\n /** CandidateAccess.Integration.Egress.Psi.Scheduling.Schedule */\n CandidateAccessIntegrationEgressPsiSchedulingSchedule = 'CandidateAccessIntegrationEgressPsiSchedulingSchedule',\n /** CandidateAccess.Integration.Egress.Psi.Scheduling.View */\n CandidateAccessIntegrationEgressPsiSchedulingView = 'CandidateAccessIntegrationEgressPsiSchedulingView',\n /** CandidateAccess.Integration.Egress.Psi.Scheduling.ViewAppointments */\n CandidateAccessIntegrationEgressPsiSchedulingViewAppointments = 'CandidateAccessIntegrationEgressPsiSchedulingViewAppointments',\n /** CandidateAccess.Integration.Egress.Qualified */\n CandidateAccessIntegrationEgressQualified = 'CandidateAccessIntegrationEgressQualified',\n /** CandidateAccess.Integration.Egress.Qualified.Scheduling */\n CandidateAccessIntegrationEgressQualifiedScheduling = 'CandidateAccessIntegrationEgressQualifiedScheduling',\n /** CandidateAccess.Integration.Egress.Qualified.Scheduling.Cancel */\n CandidateAccessIntegrationEgressQualifiedSchedulingCancel = 'CandidateAccessIntegrationEgressQualifiedSchedulingCancel',\n /** CandidateAccess.Integration.Egress.Qualified.Scheduling.Reschedule */\n CandidateAccessIntegrationEgressQualifiedSchedulingReschedule = 'CandidateAccessIntegrationEgressQualifiedSchedulingReschedule',\n /** CandidateAccess.Integration.Egress.Qualified.Scheduling.Schedule */\n CandidateAccessIntegrationEgressQualifiedSchedulingSchedule = 'CandidateAccessIntegrationEgressQualifiedSchedulingSchedule',\n /** CandidateAccess.Integration.Egress.Qualified.Scheduling.View */\n CandidateAccessIntegrationEgressQualifiedSchedulingView = 'CandidateAccessIntegrationEgressQualifiedSchedulingView',\n /** CandidateAccess.Integration.Egress.Qualified.Scheduling.ViewAppointments */\n CandidateAccessIntegrationEgressQualifiedSchedulingViewAppointments = 'CandidateAccessIntegrationEgressQualifiedSchedulingViewAppointments',\n /** CandidateAccess.Integration.Egress.TestWise */\n CandidateAccessIntegrationEgressTestWise = 'CandidateAccessIntegrationEgressTestWise',\n /** CandidateAccess.Integration.Egress.Testrun */\n CandidateAccessIntegrationEgressTestrun = 'CandidateAccessIntegrationEgressTestrun',\n /** CandidateAccess.Integration.Egress.Xvoucher */\n CandidateAccessIntegrationEgressXvoucher = 'CandidateAccessIntegrationEgressXvoucher',\n /** CandidateAccess.Integration.Egress.Zendesk */\n CandidateAccessIntegrationEgressZendesk = 'CandidateAccessIntegrationEgressZendesk',\n /** CandidateAccess.Integration.Ingress */\n CandidateAccessIntegrationIngress = 'CandidateAccessIntegrationIngress',\n /** CandidateAccess.Integration.Ingress.Jwt */\n CandidateAccessIntegrationIngressJwt = 'CandidateAccessIntegrationIngressJwt',\n /** CandidateAccess.Integration.Ingress.Oidc */\n CandidateAccessIntegrationIngressOidc = 'CandidateAccessIntegrationIngressOidc',\n /** CandidateAccess.Integration.Ingress.Oidc.LogIdToken */\n CandidateAccessIntegrationIngressOidcLogIdToken = 'CandidateAccessIntegrationIngressOidcLogIdToken',\n /** CandidateAccess.Integration.Ingress.WsTrust */\n CandidateAccessIntegrationIngressWsTrust = 'CandidateAccessIntegrationIngressWsTrust',\n /** CandidateAccess.Integration.XvoucherSsoEgress */\n CandidateAccessIntegrationXvoucherSsoEgress = 'CandidateAccessIntegrationXvoucherSsoEgress',\n /** CandidateAccess.Login */\n CandidateAccessLogin = 'CandidateAccessLogin',\n /** CandidateAccess.Login.ChangePassword */\n CandidateAccessLoginChangePassword = 'CandidateAccessLoginChangePassword',\n /** CandidateAccess.Login.EMCEmployeeRegistration */\n CandidateAccessLoginEmcEmployeeRegistration = 'CandidateAccessLoginEMCEmployeeRegistration',\n /** CandidateAccess.Login.EMCOtherAchievements */\n CandidateAccessLoginEmcOtherAchievements = 'CandidateAccessLoginEMCOtherAchievements',\n /** CandidateAccess.Login.Email */\n CandidateAccessLoginEmail = 'CandidateAccessLoginEmail',\n /** CandidateAccess.Login.SelfRegistration */\n CandidateAccessLoginSelfRegistration = 'CandidateAccessLoginSelfRegistration',\n /** CandidateAccess.Login.UsernameOrEmail */\n CandidateAccessLoginUsernameOrEmail = 'CandidateAccessLoginUsernameOrEmail',\n /** CandidateAccess.ShowCertProgress */\n CandidateAccessShowCertProgress = 'CandidateAccessShowCertProgress',\n /** CandidatePreferences */\n CandidatePreferences = 'CandidatePreferences',\n /** CandidatePreferences.CandidateDirectory */\n CandidatePreferencesCandidateDirectory = 'CandidatePreferencesCandidateDirectory',\n /** CandidatePreferences.CandidateEmailLanguage */\n CandidatePreferencesCandidateEmailLanguage = 'CandidatePreferencesCandidateEmailLanguage',\n /** CandidatePreferences.DisableEmails */\n CandidatePreferencesDisableEmails = 'CandidatePreferencesDisableEmails',\n /** CandidatePreferences.ThirdPartyApiAccess */\n CandidatePreferencesThirdPartyApiAccess = 'CandidatePreferencesThirdPartyApiAccess',\n /** CandidateProfile */\n CandidateProfile = 'CandidateProfile',\n /** CandidateProfile.Addresses */\n CandidateProfileAddresses = 'CandidateProfileAddresses',\n /** CandidateProfile.Addresses.Localized */\n CandidateProfileAddressesLocalized = 'CandidateProfileAddressesLocalized',\n /** CandidateProfile.Addresses.Primary */\n CandidateProfileAddressesPrimary = 'CandidateProfileAddressesPrimary',\n /** CandidateProfile.Addresses.Primary.RequireMinimum */\n CandidateProfileAddressesPrimaryRequireMinimum = 'CandidateProfileAddressesPrimaryRequireMinimum',\n /** CandidateProfile.Addresses.Secondary */\n CandidateProfileAddressesSecondary = 'CandidateProfileAddressesSecondary',\n /** CandidateProfile.CustomData */\n CandidateProfileCustomData = 'CandidateProfileCustomData',\n /** CandidateProfile.CustomData.Attributes */\n CandidateProfileCustomDataAttributes = 'CandidateProfileCustomDataAttributes',\n /** CandidateProfile.CustomData.Settings */\n CandidateProfileCustomDataSettings = 'CandidateProfileCustomDataSettings',\n /** CandidateProfile.DateOfBirth */\n CandidateProfileDateOfBirth = 'CandidateProfileDateOfBirth',\n /** CandidateProfile.Education */\n CandidateProfileEducation = 'CandidateProfileEducation',\n /** CandidateProfile.ExternalIds */\n CandidateProfileExternalIds = 'CandidateProfileExternalIds',\n /** CandidateProfile.LocalizedInformation */\n CandidateProfileLocalizedInformation = 'CandidateProfileLocalizedInformation',\n /** CandidateProfile.ManageCandidateId */\n CandidateProfileManageCandidateId = 'CandidateProfileManageCandidateId',\n /** CandidateProfile.PrimaryInformation */\n CandidateProfilePrimaryInformation = 'CandidateProfilePrimaryInformation',\n /** CandidateProfile.PrimaryInformation.Affiliation */\n CandidateProfilePrimaryInformationAffiliation = 'CandidateProfilePrimaryInformationAffiliation',\n /** CandidateProfile.PrimaryInformation.Affiliation.Required */\n CandidateProfilePrimaryInformationAffiliationRequired = 'CandidateProfilePrimaryInformationAffiliationRequired',\n /** CandidateProfile.PrimaryInformation.DuplicatePhoneNumberQueue */\n CandidateProfilePrimaryInformationDuplicatePhoneNumberQueue = 'CandidateProfilePrimaryInformationDuplicatePhoneNumberQueue',\n /** CandidateProfile.PrimaryInformation.EmailCandidateEdit */\n CandidateProfilePrimaryInformationEmailCandidateEdit = 'CandidateProfilePrimaryInformationEmailCandidateEdit',\n /** CandidateProfile.PrimaryInformation.NameUpdate */\n CandidateProfilePrimaryInformationNameUpdate = 'CandidateProfilePrimaryInformationNameUpdate',\n /** CandidateProfile.PrimaryInformation.PreferredName */\n CandidateProfilePrimaryInformationPreferredName = 'CandidateProfilePrimaryInformationPreferredName',\n /** CandidateProfile.PrimaryInformation.PreferredName.CandidateEdit */\n CandidateProfilePrimaryInformationPreferredNameCandidateEdit = 'CandidateProfilePrimaryInformationPreferredNameCandidateEdit',\n /** CandidateProfile.PrimaryInformation.RequireEmailConfirmation */\n CandidateProfilePrimaryInformationRequireEmailConfirmation = 'CandidateProfilePrimaryInformationRequireEmailConfirmation',\n /** CandidateProfile.PrimaryInformation.RequireMinimum */\n CandidateProfilePrimaryInformationRequireMinimum = 'CandidateProfilePrimaryInformationRequireMinimum',\n /** CandidateProfile.PrimaryInformation.RequireNameVerification */\n CandidateProfilePrimaryInformationRequireNameVerification = 'CandidateProfilePrimaryInformationRequireNameVerification',\n /** CandidateProfile.PrimaryInformation.RequireRomanizedName */\n CandidateProfilePrimaryInformationRequireRomanizedName = 'CandidateProfilePrimaryInformationRequireRomanizedName',\n /** CandidateProfile.WorkHistory */\n CandidateProfileWorkHistory = 'CandidateProfileWorkHistory',\n /** CandidateSegmentation */\n CandidateSegmentation = 'CandidateSegmentation',\n /** CiscoCustomPermissions */\n CiscoCustomPermissions = 'CiscoCustomPermissions',\n /** CiscoCustomReports */\n CiscoCustomReports = 'CiscoCustomReports',\n /** CiscoCustomReports.NetAcad */\n CiscoCustomReportsNetAcad = 'CiscoCustomReportsNetAcad',\n /** CiscoCustomReports.TPM */\n CiscoCustomReportsTpm = 'CiscoCustomReportsTPM',\n /** ClientSettingsModify */\n ClientSettingsModify = 'ClientSettingsModify',\n /** Core */\n Core = 'Core',\n /** Credential */\n Credential = 'Credential',\n /** Credential.Achievements */\n CredentialAchievements = 'CredentialAchievements',\n /** Credential.Achievements.Certificate */\n CredentialAchievementsCertificate = 'CredentialAchievementsCertificate',\n /** Credential.Achievements.LogoDownload */\n CredentialAchievementsLogoDownload = 'CredentialAchievementsLogoDownload',\n /** Credential.Achievements.RecentActivity */\n CredentialAchievementsRecentActivity = 'CredentialAchievementsRecentActivity',\n /** Credential.Agreement */\n CredentialAgreement = 'CredentialAgreement',\n /** Credential.Agreement.AtLogin */\n CredentialAgreementAtLogin = 'CredentialAgreementAtLogin',\n /** Credential.ContinuingEducation */\n CredentialContinuingEducation = 'CredentialContinuingEducation',\n /** Credential.ContinuingEducation.CECourseName */\n CredentialContinuingEducationCeCourseName = 'CredentialContinuingEducationCECourseName',\n /** Credential.ContinuingEducation.CEMaxPoints */\n CredentialContinuingEducationCeMaxPoints = 'CredentialContinuingEducationCEMaxPoints',\n /** Credential.ContinuingEducation.CEProgress */\n CredentialContinuingEducationCeProgress = 'CredentialContinuingEducationCEProgress',\n /** Credential.ContinuingEducation.HideTracks */\n CredentialContinuingEducationHideTracks = 'CredentialContinuingEducationHideTracks',\n /** Credential.CredentialShowInactiveDate */\n CredentialCredentialShowInactiveDate = 'CredentialCredentialShowInactiveDate',\n /** Credential.ElectronicCertificate */\n CredentialElectronicCertificate = 'CredentialElectronicCertificate',\n /** Credential.ElectronicCertificate.Batch */\n CredentialElectronicCertificateBatch = 'CredentialElectronicCertificateBatch',\n /** Credential.ElectronicCertificate.PublicDownload */\n CredentialElectronicCertificatePublicDownload = 'CredentialElectronicCertificatePublicDownload',\n /** Credential.Fulfillment */\n CredentialFulfillment = 'CredentialFulfillment',\n /** Credential.Fulfillment.RecentActivity */\n CredentialFulfillmentRecentActivity = 'CredentialFulfillmentRecentActivity',\n /** Credential.Fulfillment.SuppressFulfillmentBanner */\n CredentialFulfillmentSuppressFulfillmentBanner = 'CredentialFulfillmentSuppressFulfillmentBanner',\n /** Credential.Fulfillment.SuppressQueueTypeNever */\n CredentialFulfillmentSuppressQueueTypeNever = 'CredentialFulfillmentSuppressQueueTypeNever',\n /** Credential.HideCertLogic */\n CredentialHideCertLogic = 'CredentialHideCertLogic',\n /** Credential.LogoDownload */\n CredentialLogoDownload = 'CredentialLogoDownload',\n /** Credential.LogoDownload.Agreement */\n CredentialLogoDownloadAgreement = 'CredentialLogoDownloadAgreement',\n /** Credential.ProgramNumber */\n CredentialProgramNumber = 'CredentialProgramNumber',\n /** Credential.RecentActivity */\n CredentialRecentActivity = 'CredentialRecentActivity',\n /** Credential.Url */\n CredentialUrl = 'CredentialUrl',\n /** Credential.UseStarted */\n CredentialUseStarted = 'CredentialUseStarted',\n /** Credential.Verification */\n CredentialVerification = 'CredentialVerification',\n /** Ecommerce */\n Ecommerce = 'Ecommerce',\n /** Ecommerce.Fulfillment */\n EcommerceFulfillment = 'EcommerceFulfillment',\n /** Ecommerce.OtherRequirement */\n EcommerceOtherRequirement = 'EcommerceOtherRequirement',\n /** Ecommerce.ShowTransactionHistory */\n EcommerceShowTransactionHistory = 'EcommerceShowTransactionHistory',\n /** Ecommerce.Xvoucher */\n EcommerceXvoucher = 'EcommerceXvoucher',\n /** Exam */\n Exam = 'Exam',\n /** Exam.Accommodations */\n ExamAccommodations = 'ExamAccommodations',\n /** Exam.Accommodations.CandidateSelfSelect */\n ExamAccommodationsCandidateSelfSelect = 'ExamAccommodationsCandidateSelfSelect',\n /** Exam.Appointments */\n ExamAppointments = 'ExamAppointments',\n /** Exam.Appointments.ExamAppointmentsDashboardUpcomingAppointments */\n ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments = 'ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments',\n /** Exam.Authorization */\n ExamAuthorization = 'ExamAuthorization',\n /** Exam.AutoGenerateRegistrationNumber */\n ExamAutoGenerateRegistrationNumber = 'ExamAutoGenerateRegistrationNumber',\n /** Exam.CertMetricsVouchers */\n ExamCertMetricsVouchers = 'ExamCertMetricsVouchers',\n /** Exam.ComptiaAnsiCriteria */\n ExamComptiaAnsiCriteria = 'ExamComptiaAnsiCriteria',\n /** Exam.EnableDataProviders */\n ExamEnableDataProviders = 'ExamEnableDataProviders',\n /** Exam.FacebookExamScheduling */\n ExamFacebookExamScheduling = 'ExamFacebookExamScheduling',\n /** Exam.InformationUrl */\n ExamInformationUrl = 'ExamInformationUrl',\n /** Exam.MSFTExamDetails */\n ExamMsftExamDetails = 'ExamMSFTExamDetails',\n /** Exam.NCARBCertBatching */\n ExamNcarbCertBatching = 'ExamNCARBCertBatching',\n /** Exam.NCARBExamAuthorizations */\n ExamNcarbExamAuthorizations = 'ExamNCARBExamAuthorizations',\n /** Exam.NCARBHideExamExpireDate */\n ExamNcarbHideExamExpireDate = 'ExamNCARBHideExamExpireDate',\n /** Exam.RecentActivity */\n ExamRecentActivity = 'ExamRecentActivity',\n /** Exam.Scheduling */\n ExamScheduling = 'ExamScheduling',\n /** ExamScheduling.Intellum */\n ExamSchedulingIntellum = 'ExamSchedulingIntellum',\n /** Exam.SchedulingUrl */\n ExamSchedulingUrl = 'ExamSchedulingUrl',\n /** Exam.Scheduling_Ncarb */\n ExamSchedulingNcarb = 'ExamScheduling_Ncarb',\n /** Exam.Scheduling_Ncarb.Accommodations */\n ExamSchedulingNcarbAccommodations = 'ExamScheduling_NcarbAccommodations',\n /** Exam.Scheduling_Ncarb.AuthorizationDetail */\n ExamSchedulingNcarbAuthorizationDetail = 'ExamScheduling_NcarbAuthorizationDetail',\n /** Exam.ScoreReports */\n ExamScoreReports = 'ExamScoreReports',\n /** Exam.ScoreReports.Batch */\n ExamScoreReportsBatch = 'ExamScoreReportsBatch',\n /** Exam.SectionCatalog */\n ExamSectionCatalog = 'ExamSectionCatalog',\n /** Exam.Security */\n ExamSecurity = 'ExamSecurity',\n /** Exam.ShowExpireDate */\n ExamShowExpireDate = 'ExamShowExpireDate',\n /** Exam.ShowScaledScore */\n ExamShowScaledScore = 'ExamShowScaledScore',\n /** Exam.TestCenterRestriction */\n ExamTestCenterRestriction = 'ExamTestCenterRestriction',\n /** Exam.Verification */\n ExamVerification = 'ExamVerification',\n /** Jurisdictions */\n Jurisdictions = 'Jurisdictions',\n /** MergeCandidates */\n MergeCandidates = 'MergeCandidates',\n /** MergeCandidates.CandidateSelfMerge */\n MergeCandidatesCandidateSelfMerge = 'MergeCandidatesCandidateSelfMerge',\n /** MergeCandidates.CandidateSelfMerge.CandidateSelfMergeNonMatching */\n MergeCandidatesCandidateSelfMergeCandidateSelfMergeNonMatching = 'MergeCandidatesCandidateSelfMergeCandidateSelfMergeNonMatching',\n /** MergeCandidates.MergeQueueAttributeData */\n MergeCandidatesMergeQueueAttributeData = 'MergeCandidatesMergeQueueAttributeData',\n /** NCARBCustomHideCatalogs */\n NcarbCustomHideCatalogs = 'NCARBCustomHideCatalogs',\n /** NCARBHideCandidateDemographicPages */\n NcarbHideCandidateDemographicPages = 'NCARBHideCandidateDemographicPages',\n /** NCARBHideSponsorSettings */\n NcarbHideSponsorSettings = 'NCARBHideSponsorSettings',\n /** NCARBJurisdictions */\n NcarbJurisdictions = 'NCARBJurisdictions',\n /** NcarbReports */\n NcarbReports = 'NcarbReports',\n /** OtherRequirement */\n OtherRequirement = 'OtherRequirement',\n /** OtherRequirement.AdvancedSelection */\n OtherRequirementAdvancedSelection = 'OtherRequirementAdvancedSelection',\n /** OtherRequirement.AtlassianCredentialUploadCandidateAccess */\n OtherRequirementAtlassianCredentialUploadCandidateAccess = 'OtherRequirementAtlassianCredentialUploadCandidateAccess',\n /** OtherRequirement.InformationUrl */\n OtherRequirementInformationUrl = 'OtherRequirementInformationUrl',\n /** OtherRequirement.LiteWeightRecertifyFacebook */\n OtherRequirementLiteWeightRecertifyFacebook = 'OtherRequirementLiteWeightRecertifyFacebook',\n /** OtherRequirement.RecentActivity */\n OtherRequirementRecentActivity = 'OtherRequirementRecentActivity',\n /** OtherRequirement.SchedulingUrl */\n OtherRequirementSchedulingUrl = 'OtherRequirementSchedulingUrl',\n /** OtherRequirement.ShowOverrideName */\n OtherRequirementShowOverrideName = 'OtherRequirementShowOverrideName',\n /** OtherRequirement.Upload */\n OtherRequirementUpload = 'OtherRequirementUpload',\n /** OtherRequirement.Upload.CandidateAccess */\n OtherRequirementUploadCandidateAccess = 'OtherRequirementUploadCandidateAccess',\n /** OtherRequirement.Upload.CandidateAccess.Audits */\n OtherRequirementUploadCandidateAccessAudits = 'OtherRequirementUploadCandidateAccessAudits',\n /** OtherRequirement.Upload.CandidateAccess.InitialCertification */\n OtherRequirementUploadCandidateAccessInitialCertification = 'OtherRequirementUploadCandidateAccessInitialCertification',\n /** OtherRequirement.Upload.CandidateAccess.Miscellaneous */\n OtherRequirementUploadCandidateAccessMiscellaneous = 'OtherRequirementUploadCandidateAccessMiscellaneous',\n /** OtherRequirement.Upload.CandidateAccess.Recertification */\n OtherRequirementUploadCandidateAccessRecertification = 'OtherRequirementUploadCandidateAccessRecertification',\n /** OtherRequirement.Vouchers */\n OtherRequirementVouchers = 'OtherRequirementVouchers',\n /** Questionnaires */\n Questionnaires = 'Questionnaires',\n /** Reports */\n Reports = 'Reports',\n /** Reports.Advanced */\n ReportsAdvanced = 'ReportsAdvanced',\n /** Reports.Standard */\n ReportsStandard = 'ReportsStandard',\n /** Reports.Standard.ContinuingEducation */\n ReportsStandardContinuingEducation = 'ReportsStandardContinuingEducation',\n /** Reports.Standard.CredentialAchievement */\n ReportsStandardCredentialAchievement = 'ReportsStandardCredentialAchievement',\n /** Reports.Standard.Dell */\n ReportsStandardDell = 'ReportsStandardDell',\n /** Reports.Standard.ExamEligibility */\n ReportsStandardExamEligibility = 'ReportsStandardExamEligibility',\n /** Reports.Standard.Financial */\n ReportsStandardFinancial = 'ReportsStandardFinancial',\n /** Reports.Standard.Microsoft */\n ReportsStandardMicrosoft = 'ReportsStandardMicrosoft',\n /** Reports.Standard.Psychometric */\n ReportsStandardPsychometric = 'ReportsStandardPsychometric',\n /** Reports.Standard.Questionnaire */\n ReportsStandardQuestionnaire = 'ReportsStandardQuestionnaire',\n /** Reports.Standard.QuestionnaireDetail */\n ReportsStandardQuestionnaireDetail = 'ReportsStandardQuestionnaireDetail',\n /** Reports.Standard.Security */\n ReportsStandardSecurity = 'ReportsStandardSecurity',\n /** Reports.Standard.StandardBadge */\n ReportsStandardStandardBadge = 'ReportsStandardStandardBadge',\n /** Reports.Standard.StandardBenefit */\n ReportsStandardStandardBenefit = 'ReportsStandardStandardBenefit',\n /** Reports.Standard.StandardCredential */\n ReportsStandardStandardCredential = 'ReportsStandardStandardCredential',\n /** Reports.Standard.StandardDemographic */\n ReportsStandardStandardDemographic = 'ReportsStandardStandardDemographic',\n /** Reports.Standard.StandardExam */\n ReportsStandardStandardExam = 'ReportsStandardStandardExam',\n /** Reports.Standard.StandardFulfillment */\n ReportsStandardStandardFulfillment = 'ReportsStandardStandardFulfillment',\n /** Share */\n Share = 'Share',\n /** Share.AccredibleBadging */\n ShareAccredibleBadging = 'ShareAccredibleBadging',\n /** Share.AccredibleBadging.Sso */\n ShareAccredibleBadgingSso = 'ShareAccredibleBadgingSso',\n /** Share.CertMetricsBadging */\n ShareCertMetricsBadging = 'ShareCertMetricsBadging',\n /** Share.CertMetricsBadging.Facebook */\n ShareCertMetricsBadgingFacebook = 'ShareCertMetricsBadgingFacebook',\n /** Share.CertMetricsBadging.Linkedin */\n ShareCertMetricsBadgingLinkedin = 'ShareCertMetricsBadgingLinkedin',\n /** Share.CertMetricsBadging.Twitter */\n ShareCertMetricsBadgingTwitter = 'ShareCertMetricsBadgingTwitter',\n /** Share.CredlyBadging */\n ShareCredlyBadging = 'ShareCredlyBadging',\n /** Share.CredlyBadging.Sso */\n ShareCredlyBadgingSso = 'ShareCredlyBadgingSso',\n /** Share.Transcript */\n ShareTranscript = 'ShareTranscript',\n /** Share.Transcript.AllowAchievements */\n ShareTranscriptAllowAchievements = 'ShareTranscriptAllowAchievements',\n /** Share.Transcript.AllowCredentials */\n ShareTranscriptAllowCredentials = 'ShareTranscriptAllowCredentials',\n /** Share.Transcript.AllowExams */\n ShareTranscriptAllowExams = 'ShareTranscriptAllowExams',\n /** Share.Transcript.AllowOtherRequirements */\n ShareTranscriptAllowOtherRequirements = 'ShareTranscriptAllowOtherRequirements',\n /** Share.Transcript.ShowCredentialInactiveDate */\n ShareTranscriptShowCredentialInactiveDate = 'ShareTranscriptShowCredentialInactiveDate',\n /** SnowflakeDisplayBadgeId */\n SnowflakeDisplayBadgeId = 'SnowflakeDisplayBadgeId',\n /** Tagging */\n Tagging = 'Tagging',\n /** Tools */\n Tools = 'Tools',\n /** Tools.NCARBTools */\n ToolsNcarbTools = 'ToolsNCARBTools',\n /** UploadExamsTool */\n UploadExamsTool = 'UploadExamsTool',\n /** UserAccess */\n UserAccess = 'UserAccess',\n /** UserAccess.Integration */\n UserAccessIntegration = 'UserAccessIntegration',\n /** UserAccess.Integration.Jwt */\n UserAccessIntegrationJwt = 'UserAccessIntegrationJwt',\n /** UserAccess.Integration.Oidc */\n UserAccessIntegrationOidc = 'UserAccessIntegrationOidc',\n /** UserAccess.Integration.Oidc.LogIdToken */\n UserAccessIntegrationOidcLogIdToken = 'UserAccessIntegrationOidcLogIdToken',\n /** UserAccess.Integration.WsTrust */\n UserAccessIntegrationWsTrust = 'UserAccessIntegrationWsTrust',\n /** UserTwoStepAuthentication */\n UserTwoStepAuthentication = 'UserTwoStepAuthentication',\n /** ValidationCodeVerification */\n ValidationCodeVerification = 'ValidationCodeVerification',\n /** VmwareExamVoucherVerification */\n VmwareExamVoucherVerification = 'VmwareExamVoucherVerification',\n /** VmwareItsScoreReports */\n VmwareItsScoreReports = 'VmwareItsScoreReports'\n}\n\n/**\n * A definition for a hub localization.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface HubLocalization {\n created?: Maybe;\n description?: Maybe;\n feature?: Maybe;\n featureId?: Maybe;\n htmlAllowed?: Maybe;\n id: Scalars['Int']['output'];\n name?: Maybe;\n path?: Maybe;\n shared?: Maybe;\n type?: Maybe;\n uiType?: Maybe;\n value?: Maybe;\n}\n\n/** Hub Permission Enum */\nexport enum HubPermission {\n /** AccredibleBadging.Admin.Modify */\n AccredibleBadgingAdminModify = 'AccredibleBadgingAdminModify',\n /** AccredibleBadging.Admin.View */\n AccredibleBadgingAdminView = 'AccredibleBadgingAdminView',\n /** AccredibleBadging.CandidateSettings.View */\n AccredibleBadgingCandidateSettingsView = 'AccredibleBadgingCandidateSettingsView',\n /** AccredibleBadging.Catalog.View */\n AccredibleBadgingCatalogView = 'AccredibleBadgingCatalogView',\n /** Affiliation.Catalog.Modify */\n AffiliationCatalogModify = 'AffiliationCatalogModify',\n /** Affiliation.Catalog.View */\n AffiliationCatalogView = 'AffiliationCatalogView',\n /** Announcements.Catalog.Modify */\n AnnouncementsCatalogModify = 'AnnouncementsCatalogModify',\n /** Announcements.Catalog.View */\n AnnouncementsCatalogView = 'AnnouncementsCatalogView',\n /** BannedCandidateList.View */\n BannedCandidateListView = 'BannedCandidateListView',\n /** Benefit.Catalog.Modify */\n BenefitCatalogModify = 'BenefitCatalogModify',\n /** Benefit.Catalog.View */\n BenefitCatalogView = 'BenefitCatalogView',\n /** Candidate.Affiliation.Modify */\n CandidateAffiliationModify = 'CandidateAffiliationModify',\n /** Candidate.Affiliation.View */\n CandidateAffiliationView = 'CandidateAffiliationView',\n /** Candidate.BannedStatus.Modify */\n CandidateBannedStatusModify = 'CandidateBannedStatusModify',\n /** Candidate.BannedStatus.View */\n CandidateBannedStatusView = 'CandidateBannedStatusView',\n /** Candidate.Benefit.Modify */\n CandidateBenefitModify = 'CandidateBenefitModify',\n /** Candidate.Benefit.View */\n CandidateBenefitView = 'CandidateBenefitView',\n /** Candidate.CertMetricsBadging.View */\n CandidateCertMetricsBadgingView = 'CandidateCertMetricsBadgingView',\n /** Candidate.CredentialAchievements.View */\n CandidateCredentialAchievementsView = 'CandidateCredentialAchievementsView',\n /** Candidate.CredentialAgreements.Modify */\n CandidateCredentialAgreementsModify = 'CandidateCredentialAgreementsModify',\n /** Candidate.CredentialAgreements.View */\n CandidateCredentialAgreementsView = 'CandidateCredentialAgreementsView',\n /** Candidate.CredentialDetails.Modify */\n CandidateCredentialDetailsModify = 'CandidateCredentialDetailsModify',\n /** Candidate.CredentialDetails.View */\n CandidateCredentialDetailsView = 'CandidateCredentialDetailsView',\n /** Candidate.CredentialFulfillment.Modify */\n CandidateCredentialFulfillmentModify = 'CandidateCredentialFulfillmentModify',\n /** Candidate.CredentialFulfillment.View */\n CandidateCredentialFulfillmentView = 'CandidateCredentialFulfillmentView',\n /** Candidate.Credentials.View */\n CandidateCredentialsView = 'CandidateCredentialsView',\n /** Candidate.CredlyBadgingSettings.View */\n CandidateCredlyBadgingSettingsView = 'CandidateCredlyBadgingSettingsView',\n /** Candidate.DateOfBirth.MOdify */\n CandidateDateOfBirthMOdify = 'CandidateDateOfBirthMOdify',\n /** Candidate.DateOfBirth.View */\n CandidateDateOfBirthView = 'CandidateDateOfBirthView',\n /** Candidate.ElectronicCertificate.View */\n CandidateElectronicCertificateView = 'CandidateElectronicCertificateView',\n /** Candidate.EmailHistory.Modify */\n CandidateEmailHistoryModify = 'CandidateEmailHistoryModify',\n /** Candidate.EmailHistory.View */\n CandidateEmailHistoryView = 'CandidateEmailHistoryView',\n /** Candidate.EmailPreferences.Modify */\n CandidateEmailPreferencesModify = 'CandidateEmailPreferencesModify',\n /** Candidate.EmailPreferences.Toggle.View */\n CandidateEmailPreferencesToggleView = 'CandidateEmailPreferencesToggleView',\n /** Candidate.EmailPreferences.View */\n CandidateEmailPreferencesView = 'CandidateEmailPreferencesView',\n /** Candidate.ExamDetails.Modify */\n CandidateExamDetailsModify = 'CandidateExamDetailsModify',\n /** Candidate.ExamDetails.View */\n CandidateExamDetailsView = 'CandidateExamDetailsView',\n /** Candidate.ExamEvents.View */\n CandidateExamEventsView = 'CandidateExamEventsView',\n /** Candidate.ExamImages.View */\n CandidateExamImagesView = 'CandidateExamImagesView',\n /** Candidate.ExamKey.View */\n CandidateExamKeyView = 'CandidateExamKeyView',\n /** Candidate.ExamScoring.Modify */\n CandidateExamScoringModify = 'CandidateExamScoringModify',\n /** Candidate.ExamScoring.View */\n CandidateExamScoringView = 'CandidateExamScoringView',\n /** Candidate.ExamViolations.Modify */\n CandidateExamViolationsModify = 'CandidateExamViolationsModify',\n /** Candidate.ExamViolations.View */\n CandidateExamViolationsView = 'CandidateExamViolationsView',\n /** Candidate.Exams.View */\n CandidateExamsView = 'CandidateExamsView',\n /** Candidate.History.Modify */\n CandidateHistoryModify = 'CandidateHistoryModify',\n /** Candidate.History.View */\n CandidateHistoryView = 'CandidateHistoryView',\n /** Candidate.ImportSettings.Modify */\n CandidateImportSettingsModify = 'CandidateImportSettingsModify',\n /** Candidate.ImportSettings.View */\n CandidateImportSettingsView = 'CandidateImportSettingsView',\n /** Candidate.Merge.Create */\n CandidateMergeCreate = 'CandidateMergeCreate',\n /** Candidate.MergeDetails.Modify */\n CandidateMergeDetailsModify = 'CandidateMergeDetailsModify',\n /** Candidate.MergeDetails.View */\n CandidateMergeDetailsView = 'CandidateMergeDetailsView',\n /** Candidate.MergeHistory.View */\n CandidateMergeHistoryView = 'CandidateMergeHistoryView',\n /** Candidate.MergeSettings.Modify */\n CandidateMergeSettingsModify = 'CandidateMergeSettingsModify',\n /** Candidate.MergeSettings.View */\n CandidateMergeSettingsView = 'CandidateMergeSettingsView',\n /** Candidate.OtherAchievement.Modify */\n CandidateOtherAchievementModify = 'CandidateOtherAchievementModify',\n /** Candidate.OtherAchievement.View */\n CandidateOtherAchievementView = 'CandidateOtherAchievementView',\n /** CandidateProfile.Create */\n CandidateProfileCreate = 'CandidateProfileCreate',\n /** CandidateProfile.LocalizedAddress.Modify */\n CandidateProfileLocalizedAddressModify = 'CandidateProfileLocalizedAddressModify',\n /** CandidateProfile.LocalizedAddress.View */\n CandidateProfileLocalizedAddressView = 'CandidateProfileLocalizedAddressView',\n /** CandidateProfile.LocalizedInformation.Modify */\n CandidateProfileLocalizedInformationModify = 'CandidateProfileLocalizedInformationModify',\n /** CandidateProfile.LocalizedInformation.View */\n CandidateProfileLocalizedInformationView = 'CandidateProfileLocalizedInformationView',\n /** CandidateProfile.ManageCandidateId.Modify */\n CandidateProfileManageCandidateIdModify = 'CandidateProfileManageCandidateIdModify',\n /** CandidateProfile.PreferredName.Modify */\n CandidateProfilePreferredNameModify = 'CandidateProfilePreferredNameModify',\n /** CandidateProfile.PreferredName.View */\n CandidateProfilePreferredNameView = 'CandidateProfilePreferredNameView',\n /** CandidateProfile.PrimaryAddress.Modify */\n CandidateProfilePrimaryAddressModify = 'CandidateProfilePrimaryAddressModify',\n /** CandidateProfile.PrimaryAddress.View */\n CandidateProfilePrimaryAddressView = 'CandidateProfilePrimaryAddressView',\n /** CandidateProfile.PrimaryInformation.Modify */\n CandidateProfilePrimaryInformationModify = 'CandidateProfilePrimaryInformationModify',\n /** CandidateProfile.PrimaryInformation.Names.Modify */\n CandidateProfilePrimaryInformationNamesModify = 'CandidateProfilePrimaryInformationNamesModify',\n /** CandidateProfile.PrimaryInformation.View */\n CandidateProfilePrimaryInformationView = 'CandidateProfilePrimaryInformationView',\n /** CandidateProfile.SecondaryAddress.Modify */\n CandidateProfileSecondaryAddressModify = 'CandidateProfileSecondaryAddressModify',\n /** CandidateProfile.SecondaryAddress.View */\n CandidateProfileSecondaryAddressView = 'CandidateProfileSecondaryAddressView',\n /** Candidate.ReassignData */\n CandidateReassignData = 'CandidateReassignData',\n /** Candidate.Requirements.AdditionalAgreement.Modify */\n CandidateRequirementsAdditionalAgreementModify = 'CandidateRequirementsAdditionalAgreementModify',\n /** Candidate.Requirements.AdditionalAgreement.View */\n CandidateRequirementsAdditionalAgreementView = 'CandidateRequirementsAdditionalAgreementView',\n /** Candidate.Requirements.ContinuingEducation.Modify */\n CandidateRequirementsContinuingEducationModify = 'CandidateRequirementsContinuingEducationModify',\n /** Candidate.Requirements.ContinuingEducation.View */\n CandidateRequirementsContinuingEducationView = 'CandidateRequirementsContinuingEducationView',\n /** Candidate.Requirements.Enrollment.Modify */\n CandidateRequirementsEnrollmentModify = 'CandidateRequirementsEnrollmentModify',\n /** Candidate.Requirements.Enrollment.View */\n CandidateRequirementsEnrollmentView = 'CandidateRequirementsEnrollmentView',\n /** Candidate.Requirements.ExternalCert.Modify */\n CandidateRequirementsExternalCertModify = 'CandidateRequirementsExternalCertModify',\n /** Candidate.Requirements.ExternalCert.View */\n CandidateRequirementsExternalCertView = 'CandidateRequirementsExternalCertView',\n /** Candidate.Requirements.ExternalExam.Modify */\n CandidateRequirementsExternalExamModify = 'CandidateRequirementsExternalExamModify',\n /** Candidate.Requirements.ExternalExam.View */\n CandidateRequirementsExternalExamView = 'CandidateRequirementsExternalExamView',\n /** Candidate.Requirements.Lab.Modify */\n CandidateRequirementsLabModify = 'CandidateRequirementsLabModify',\n /** Candidate.Requirements.Lab.View */\n CandidateRequirementsLabView = 'CandidateRequirementsLabView',\n /** Candidate.Requirements.Miscellaneous.Modify */\n CandidateRequirementsMiscellaneousModify = 'CandidateRequirementsMiscellaneousModify',\n /** Candidate.Requirements.Miscellaneous.View */\n CandidateRequirementsMiscellaneousView = 'CandidateRequirementsMiscellaneousView',\n /** Candidate.Requirements.Participation.Modify */\n CandidateRequirementsParticipationModify = 'CandidateRequirementsParticipationModify',\n /** Candidate.Requirements.Participation.View */\n CandidateRequirementsParticipationView = 'CandidateRequirementsParticipationView',\n /** Candidate.Requirements.ProgramFee.Modify */\n CandidateRequirementsProgramFeeModify = 'CandidateRequirementsProgramFeeModify',\n /** Candidate.Requirements.ProgramFee.View */\n CandidateRequirementsProgramFeeView = 'CandidateRequirementsProgramFeeView',\n /** Candidate.Requirements.Training.Modify */\n CandidateRequirementsTrainingModify = 'CandidateRequirementsTrainingModify',\n /** Candidate.Requirements.Training.View */\n CandidateRequirementsTrainingView = 'CandidateRequirementsTrainingView',\n /** Candidate.Search */\n CandidateSearch = 'CandidateSearch',\n /** Candidate.SecuritySettings.Password.Modify */\n CandidateSecuritySettingsPasswordModify = 'CandidateSecuritySettingsPasswordModify',\n /** Candidate.SecuritySettings.View */\n CandidateSecuritySettingsView = 'CandidateSecuritySettingsView',\n /** Candidate.Segmentation.Modify */\n CandidateSegmentationModify = 'CandidateSegmentationModify',\n /** Candidate.Segmentation.View */\n CandidateSegmentationView = 'CandidateSegmentationView',\n /** Candidate.SponsorSettings.Attributes.Modify */\n CandidateSponsorSettingsAttributesModify = 'CandidateSponsorSettingsAttributesModify',\n /** Candidate.SponsorSettings.Attributes.View */\n CandidateSponsorSettingsAttributesView = 'CandidateSponsorSettingsAttributesView',\n /** Candidate.SponsorSettings.Settings.Modify */\n CandidateSponsorSettingsSettingsModify = 'CandidateSponsorSettingsSettingsModify',\n /** Candidate.SponsorSettings.Settings.View */\n CandidateSponsorSettingsSettingsView = 'CandidateSponsorSettingsSettingsView',\n /** Candidate.Transcripts.View */\n CandidateTranscriptsView = 'CandidateTranscriptsView',\n /** Candidate.WatchStatus.Modify */\n CandidateWatchStatusModify = 'CandidateWatchStatusModify',\n /** Candidate.WatchStatus.View */\n CandidateWatchStatusView = 'CandidateWatchStatusView',\n /** CertMetrics.Badging.Catalog.Modify */\n CertMetricsBadgingCatalogModify = 'CertMetricsBadgingCatalogModify',\n /** CertMetricsBadging.Catalog.View */\n CertMetricsBadgingCatalogView = 'CertMetricsBadgingCatalogView',\n /** CiscoCustomPermissionForQlikSurveyApp */\n CiscoCustomPermissionForQlikSurveyApp = 'CiscoCustomPermissionForQlikSurveyApp',\n /** CiscoCustomPermissionForSsrsCandidateMergeReport */\n CiscoCustomPermissionForSsrsCandidateMergeReport = 'CiscoCustomPermissionForSsrsCandidateMergeReport',\n /** CiscoCustomReport.NetAcad.Modify */\n CiscoCustomReportNetAcadModify = 'CiscoCustomReportNetAcadModify',\n /** CiscoCustomReport.NetAcad.View */\n CiscoCustomReportNetAcadView = 'CiscoCustomReportNetAcadView',\n /** CiscoCustomReport.TPM.Modify */\n CiscoCustomReportTpmModify = 'CiscoCustomReportTPMModify',\n /** CiscoCustomReport.TPM.View */\n CiscoCustomReportTpmView = 'CiscoCustomReportTPMView',\n /** ClientSettings.Modify */\n ClientSettingsModify = 'ClientSettingsModify',\n /** ClientSettings.View */\n ClientSettingsView = 'ClientSettingsView',\n /** CredentialAchievements.Catalog.Modify */\n CredentialAchievementsCatalogModify = 'CredentialAchievementsCatalogModify',\n /** CredentialAchievements.Catalog.View */\n CredentialAchievementsCatalogView = 'CredentialAchievementsCatalogView',\n /** CredentialAgreements.Catalog.Modify */\n CredentialAgreementsCatalogModify = 'CredentialAgreementsCatalogModify',\n /** CredentialAgreements.Catalog.View */\n CredentialAgreementsCatalogView = 'CredentialAgreementsCatalogView',\n /** Credential.Catalog.Modify */\n CredentialCatalogModify = 'CredentialCatalogModify',\n /** Credential.Catalog.View */\n CredentialCatalogView = 'CredentialCatalogView',\n /** CredentialFulfillment.Catalog.View */\n CredentialFulfillmentCatalogView = 'CredentialFulfillmentCatalogView',\n /** Credly.Admin.Modify */\n CredlyAdminModify = 'CredlyAdminModify',\n /** Credly.Admin.View */\n CredlyAdminView = 'CredlyAdminView',\n /** Credly.Catalog.View */\n CredlyCatalogView = 'CredlyCatalogView',\n /** DuplicateCandidates.AffiliationId.View */\n DuplicateCandidatesAffiliationIdView = 'DuplicateCandidatesAffiliationIdView',\n /** DuplicateCandidates.Demographics.View */\n DuplicateCandidatesDemographicsView = 'DuplicateCandidatesDemographicsView',\n /** DuplicateCandidates.Email.View */\n DuplicateCandidatesEmailView = 'DuplicateCandidatesEmailView',\n /** DuplicateCandidates.Phone.View */\n DuplicateCandidatesPhoneView = 'DuplicateCandidatesPhoneView',\n /** Ecommerce.Catalog.View */\n EcommerceCatalogView = 'EcommerceCatalogView',\n /** Ecommerce.Transactions.Modify */\n EcommerceTransactionsModify = 'EcommerceTransactionsModify',\n /** Ecommerce.Transactions.View */\n EcommerceTransactionsView = 'EcommerceTransactionsView',\n /** Email.Catalog.Modify */\n EmailCatalogModify = 'EmailCatalogModify',\n /** Email.Catalog.View */\n EmailCatalogView = 'EmailCatalogView',\n /** Exam.Accommodations.Modify */\n ExamAccommodationsModify = 'ExamAccommodationsModify',\n /** Exam.Accommodations.View */\n ExamAccommodationsView = 'ExamAccommodationsView',\n /** Exam.Appointments.Modify */\n ExamAppointmentsModify = 'ExamAppointmentsModify',\n /** Exam.Appointments.View */\n ExamAppointmentsView = 'ExamAppointmentsView',\n /** Exam.Authorizations.Modify */\n ExamAuthorizationsModify = 'ExamAuthorizationsModify',\n /** Exam.Authorizations.View */\n ExamAuthorizationsView = 'ExamAuthorizationsView',\n /** Exam.Catalog.Items.Key.View */\n ExamCatalogItemsKeyView = 'ExamCatalogItemsKeyView',\n /** Exam.Catalog.Items.Modify */\n ExamCatalogItemsModify = 'ExamCatalogItemsModify',\n /** Exam.Catalog.Items.View */\n ExamCatalogItemsView = 'ExamCatalogItemsView',\n /** Exam.Catalog.Modify */\n ExamCatalogModify = 'ExamCatalogModify',\n /** Exam.Catalog.Sections.Modify */\n ExamCatalogSectionsModify = 'ExamCatalogSectionsModify',\n /** Exam.Catalog.Sections.View */\n ExamCatalogSectionsView = 'ExamCatalogSectionsView',\n /** Exam.Catalog.View */\n ExamCatalogView = 'ExamCatalogView',\n /** Exam.CertMetricsVouchers.Modify */\n ExamCertMetricsVouchersModify = 'ExamCertMetricsVouchersModify',\n /** Exam.CertMetricsVouchers.View */\n ExamCertMetricsVouchersView = 'ExamCertMetricsVouchersView',\n /** ExamRecentImportList.View */\n ExamRecentImportListView = 'ExamRecentImportListView',\n /** ExamRecentReimportList.View */\n ExamRecentReimportListView = 'ExamRecentReimportListView',\n /** Exam.ReviewList.View */\n ExamReviewListView = 'ExamReviewListView',\n /** Exam.Scheduling.View */\n ExamSchedulingView = 'ExamSchedulingView',\n /** Exam.UploadExamsTool.Modify */\n ExamUploadExamsToolModify = 'ExamUploadExamsToolModify',\n /** Exam.UploadExamsTool.View */\n ExamUploadExamsToolView = 'ExamUploadExamsToolView',\n /** Impersonate.Candidate */\n ImpersonateCandidate = 'ImpersonateCandidate',\n /** ImportActivity.View */\n ImportActivityView = 'ImportActivityView',\n /** Jurisdictions.Modify */\n JurisdictionsModify = 'JurisdictionsModify',\n /** Jurisdictions.View */\n JurisdictionsView = 'JurisdictionsView',\n /** MergeList.View */\n MergeListView = 'MergeListView',\n /** NCARBJurisdictions.ExamScoreReports */\n NcarbJurisdictionsExamScoreReports = 'NCARBJurisdictionsExamScoreReports',\n /** Ncarb.Exam.Authorizations.Modify */\n NcarbExamAuthorizationsModify = 'NcarbExamAuthorizationsModify',\n /** Ncarb.Exam.Authorizations.View */\n NcarbExamAuthorizationsView = 'NcarbExamAuthorizationsView',\n /** Ncarb.ScoreReports.BatchedDownloads.Modify */\n NcarbScoreReportsBatchedDownloadsModify = 'NcarbScoreReportsBatchedDownloadsModify',\n /** Ncarb.ScoreReports.BatchedDownloads.View */\n NcarbScoreReportsBatchedDownloadsView = 'NcarbScoreReportsBatchedDownloadsView',\n /** OtherAchievement.Catalog.Modify */\n OtherAchievementCatalogModify = 'OtherAchievementCatalogModify',\n /** OtherAchievement.Catalog.View */\n OtherAchievementCatalogView = 'OtherAchievementCatalogView',\n /** OtherRequirements.ReviewList.View */\n OtherRequirementsReviewListView = 'OtherRequirementsReviewListView',\n /** Reports.Advanced.App.Affiliation */\n ReportsAdvancedAppAffiliation = 'ReportsAdvancedAppAffiliation',\n /** Reports.Advanced.App.Candidate */\n ReportsAdvancedAppCandidate = 'ReportsAdvancedAppCandidate',\n /** Reports.Advanced.App.CertRequirement */\n ReportsAdvancedAppCertRequirement = 'ReportsAdvancedAppCertRequirement',\n /** Reports.Advanced.App.Certification */\n ReportsAdvancedAppCertification = 'ReportsAdvancedAppCertification',\n /** Reports.Advanced.App.Exam */\n ReportsAdvancedAppExam = 'ReportsAdvancedAppExam',\n /** Reports.Advanced.App.Psychometric */\n ReportsAdvancedAppPsychometric = 'ReportsAdvancedAppPsychometric',\n /** Reports.Advanced.PiiAllowed */\n ReportsAdvancedPiiAllowed = 'ReportsAdvancedPiiAllowed',\n /** Reports.Custom.Dell.IIG.Modify */\n ReportsCustomDellIigModify = 'ReportsCustomDellIIGModify',\n /** Reports.Custom.Dell.IIG.View */\n ReportsCustomDellIigView = 'ReportsCustomDellIIGView',\n /** Reports.Custom.Ncarb.Eligibility.View */\n ReportsCustomNcarbEligibilityView = 'ReportsCustomNcarbEligibilityView',\n /** Reports.Standard.ContinuingEducation.View */\n ReportsStandardContinuingEducationView = 'ReportsStandardContinuingEducationView',\n /** Reports.Standard.CredentialAchievement.View */\n ReportsStandardCredentialAchievementView = 'ReportsStandardCredentialAchievementView',\n /** Reports.Standard.ExamEligibility.View */\n ReportsStandardExamEligibilityView = 'ReportsStandardExamEligibilityView',\n /** Reports.Standard.Financial.View */\n ReportsStandardFinancialView = 'ReportsStandardFinancialView',\n /** Reports.Standard.MicrosoftPsychometricComment.View */\n ReportsStandardMicrosoftPsychometricCommentView = 'ReportsStandardMicrosoftPsychometricCommentView',\n /** Reports.Standard.Psychometric.View */\n ReportsStandardPsychometricView = 'ReportsStandardPsychometricView',\n /** Reports.Standard.QuestionnaireDetail.View */\n ReportsStandardQuestionnaireDetailView = 'ReportsStandardQuestionnaireDetailView',\n /** Reports.Standard.Questionnaire.View */\n ReportsStandardQuestionnaireView = 'ReportsStandardQuestionnaireView',\n /** Reports.Standard.Security.View */\n ReportsStandardSecurityView = 'ReportsStandardSecurityView',\n /** Reports.Standard.StandardBadge.View */\n ReportsStandardStandardBadgeView = 'ReportsStandardStandardBadgeView',\n /** Reports.Standard.StandardBenefit.View */\n ReportsStandardStandardBenefitView = 'ReportsStandardStandardBenefitView',\n /** Reports.Standard.StandardCredential.View */\n ReportsStandardStandardCredentialView = 'ReportsStandardStandardCredentialView',\n /** Reports.Standard.StandardDemographic.View */\n ReportsStandardStandardDemographicView = 'ReportsStandardStandardDemographicView',\n /** Reports.Standard.StandardExam.View */\n ReportsStandardStandardExamView = 'ReportsStandardStandardExamView',\n /** Reports.Standard.StandardFulfillment.View */\n ReportsStandardStandardFulfillmentView = 'ReportsStandardStandardFulfillmentView',\n /** Reports.Standard.StandardOtherRequirement */\n ReportsStandardStandardOtherRequirement = 'ReportsStandardStandardOtherRequirement',\n /** Reports.Standard.System.View */\n ReportsStandardSystemView = 'ReportsStandardSystemView',\n /** Reports.Standard.View */\n ReportsStandardView = 'ReportsStandardView',\n /** Requirements.AdditionalAgreement.Catalog.Modify */\n RequirementsAdditionalAgreementCatalogModify = 'RequirementsAdditionalAgreementCatalogModify',\n /** Requirements.AdditionalAgreement.Catalog.View */\n RequirementsAdditionalAgreementCatalogView = 'RequirementsAdditionalAgreementCatalogView',\n /** Requirements.ContinuingEducation.Catalog.Modify */\n RequirementsContinuingEducationCatalogModify = 'RequirementsContinuingEducationCatalogModify',\n /** Requirements.ContinuingEducation.Catalog.View */\n RequirementsContinuingEducationCatalogView = 'RequirementsContinuingEducationCatalogView',\n /** Requirements.Enrollment.Catalog.Modify */\n RequirementsEnrollmentCatalogModify = 'RequirementsEnrollmentCatalogModify',\n /** Requirements.Enrollment.Catalog.View */\n RequirementsEnrollmentCatalogView = 'RequirementsEnrollmentCatalogView',\n /** Requirements.ExternalCert.Catalog.Modify */\n RequirementsExternalCertCatalogModify = 'RequirementsExternalCertCatalogModify',\n /** Requirements.ExternalCert.Catalog.View */\n RequirementsExternalCertCatalogView = 'RequirementsExternalCertCatalogView',\n /** Requirements.ExternalExam.Catalog.Modify */\n RequirementsExternalExamCatalogModify = 'RequirementsExternalExamCatalogModify',\n /** Requirements.ExternalExam.Catalog.View */\n RequirementsExternalExamCatalogView = 'RequirementsExternalExamCatalogView',\n /** Requirements.Lab.Catalog.Modify */\n RequirementsLabCatalogModify = 'RequirementsLabCatalogModify',\n /** Requirements.Lab.Catalog.View */\n RequirementsLabCatalogView = 'RequirementsLabCatalogView',\n /** Requirements.Miscellaneous.Catalog.Modify */\n RequirementsMiscellaneousCatalogModify = 'RequirementsMiscellaneousCatalogModify',\n /** Requirements.Miscellaneous.Catalog.View */\n RequirementsMiscellaneousCatalogView = 'RequirementsMiscellaneousCatalogView',\n /** Requirements.Participation.Catalog.Modify */\n RequirementsParticipationCatalogModify = 'RequirementsParticipationCatalogModify',\n /** Requirements.Participation.Catalog.View */\n RequirementsParticipationCatalogView = 'RequirementsParticipationCatalogView',\n /** Requirements.ProgramFee.Catalog.Modify */\n RequirementsProgramFeeCatalogModify = 'RequirementsProgramFeeCatalogModify',\n /** Requirements.ProgramFee.Catalog.View */\n RequirementsProgramFeeCatalogView = 'RequirementsProgramFeeCatalogView',\n /** Requirements.Training.Catalog.Modify */\n RequirementsTrainingCatalogModify = 'RequirementsTrainingCatalogModify',\n /** Requirements.Training.Catalog.View */\n RequirementsTrainingCatalogView = 'RequirementsTrainingCatalogView',\n /** SponsorAttribute.Catalog.View */\n SponsorAttributeCatalogView = 'SponsorAttributeCatalogView',\n /** SponsorSetting.Catalog.View */\n SponsorSettingCatalogView = 'SponsorSettingCatalogView',\n /** System.Localization.Modify */\n SystemLocalizationModify = 'SystemLocalizationModify',\n /** System.Localization.View */\n SystemLocalizationView = 'SystemLocalizationView',\n /** Tagging.Catalog.Modify */\n TaggingCatalogModify = 'TaggingCatalogModify',\n /** Tagging.Catalog.View */\n TaggingCatalogView = 'TaggingCatalogView',\n /** VerifyValidationCode.Modify */\n VerifyValidationCodeModify = 'VerifyValidationCodeModify',\n /** VerifyValidationCode.View */\n VerifyValidationCodeView = 'VerifyValidationCodeView',\n /** VerifyVoucherCodes.Modify */\n VerifyVoucherCodesModify = 'VerifyVoucherCodesModify',\n /** VerifyVoucherCodes.View */\n VerifyVoucherCodesView = 'VerifyVoucherCodesView',\n /** ViewCandidateExternalIds.Modify */\n ViewCandidateExternalIdsModify = 'ViewCandidateExternalIdsModify',\n /** ViewCandidateExternalIds.View */\n ViewCandidateExternalIdsView = 'ViewCandidateExternalIdsView',\n /** WatchedCandidateList.View */\n WatchedCandidateListView = 'WatchedCandidateListView'\n}\n\n/** Any comment information for an exam result. As not all exams have comment data, this is not required. */\nexport interface ImportExamCommentRequest {\n /**\n * An indication of what type of data the comment is in reference to; the domain or source. Combined with the context-id, this is expected to be unique for a given exam-id.\r\n * Normally, the values in this column are one of three values: \"Exam\", \"Item\", \"Survey\", or \"Section\". Comments are most commonly tied directly to an item on the exam, or are at the exam level.\n */\n context?: InputMaybe;\n /**\n * The ID, within the indicated context, that identifies the data the comment is in reference to. Combined with the context, this is expected to be unique for a given exam-id.\r\n * E.g. when the context is \"Item\", this column will store an \"item_name\" value (which links it to data delivered in the \"Item\" file). When \"Survey\", the value links to \"surv_item_name\". When \"Section\", the value links to \"sect_id\". \r\n * When the context is \"Exam\", it depends on how the exam was built and published. If only one exam-level comment is possible, this is often the same value as \"exam_id\". If multiple exam-level comments are possible, something like \"AdminComment\", \"ExhibitA\", \"ExitComment\", etc is used for the different comments. These values are normally interpreted by people to derive location and meaning, so internal, numeric Id values are not very useful for exam-level comments.\n */\n contextId?: InputMaybe;\n /** The comment/response text. */\n response?: InputMaybe;\n}\n\nexport interface ImportExamItemRequest {\n correctAnswer?: InputMaybe;\n name?: InputMaybe;\n orderPresented?: InputMaybe;\n response?: InputMaybe;\n score?: InputMaybe;\n sectionOrdinal?: InputMaybe;\n status?: InputMaybe;\n timeSpent?: InputMaybe;\n type?: InputMaybe;\n}\n\n/** Allows for importing of exams, values submitted via this method with be merged with existing data (i.e. an upsert will be performed). */\nexport interface ImportExamRequest {\n authId?: InputMaybe;\n candidateId: CandidateIdRequest;\n commentList?: InputMaybe>>;\n correctItemCount?: InputMaybe;\n dataProviderId?: InputMaybe;\n /** When the exam was taken/administered. Expressed in local time. If a timezone is given it will be converted to US mountain time. */\n dateTime: Scalars['CmDateTimeOffset']['input'];\n /** The code/ID (Unique key) of the exam the candidate took. This is normally a code in the form of “-”; e.g. “101-001”, “AB0-123”, etc.). Together with the title of the exam, this is what the candidate will usually know the exam as. */\n excatExternalId?: InputMaybe;\n excatId?: InputMaybe;\n expireDate?: InputMaybe;\n form?: InputMaybe;\n grade: ExamGradeLabel;\n incorrectItemCount?: InputMaybe;\n itemList?: InputMaybe>>;\n itemsSkipped?: InputMaybe;\n languageId?: InputMaybe;\n message?: InputMaybe;\n registrationNumber: Scalars['String']['input'];\n rescored?: InputMaybe;\n /** The exam’s total raw score. This is the raw score, not scaled. */\n score?: InputMaybe;\n scoreScaled?: InputMaybe;\n sectionList?: InputMaybe>>;\n simulated?: InputMaybe;\n state?: InputMaybe;\n surveyList?: InputMaybe>>;\n /** The ID of the test center at which this exam was taken. */\n testCenterId?: InputMaybe;\n /** The number of seconds the candidate spent to complete the exam. */\n timeSpent?: InputMaybe;\n version?: InputMaybe;\n voucherId?: InputMaybe;\n}\n\nexport interface ImportExamSectionRequest {\n algorithm?: InputMaybe;\n grade?: InputMaybe;\n id?: InputMaybe;\n itemsCorrect?: InputMaybe;\n itemsIncorrect?: InputMaybe;\n itemsSkipped?: InputMaybe;\n passingScore?: InputMaybe;\n score?: InputMaybe;\n scoreMax?: InputMaybe;\n scored?: InputMaybe;\n stdError?: InputMaybe;\n title?: InputMaybe;\n}\n\nexport interface ImportExamSurveyRequest {\n itemName?: InputMaybe;\n response?: InputMaybe;\n timeSpent?: InputMaybe;\n title?: InputMaybe;\n}\n\nexport interface InsertCandidateHistory {\n candidateId?: InputMaybe;\n message: Scalars['String']['input'];\n targetId?: InputMaybe;\n type: ChistType;\n}\n\nexport interface InsertWebUserHistory {\n message: Scalars['String']['input'];\n type: WuhType;\n webUserId?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface InstructionGqlType {\n culture?: Maybe;\n instruction?: Maybe;\n}\n\n/** Information about an ISO-defined country. */\nexport interface IsoCountry {\n auxiliary?: Maybe;\n /** This is the unique 3-char ISO-3166-1 code for the country. */\n code: Scalars['String']['output'];\n /** This is the unique 2-char ISO 3166-1 code for the country. */\n code2Char: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n id: Scalars['Int']['output'];\n /** The ISO number assigned to the country. */\n isoNumber: Scalars['Short']['output'];\n /** The name of the country. */\n name: Scalars['String']['output'];\n /** When true, this indicates that ISO has not defined any subdivisions for this country. When NULL, no subdivision code information is defined in the system. */\n noSubdivision?: Maybe;\n /** Country Code Prefix (AKA 'Country Calling Code', 'Country Dial -in Code'). This is a 1-3 digit number that is dialed to make a call to another country; it is dialed after the International Direct Dialing Prefix.Source. */\n phoneCcPrefix?: Maybe;\n /** International Direct Dialing Prefix (AKA 'International Call Prefix', 'International Access Code', 'Dial -out Code', 'Exit Code'). When making an international call, dial this value first (it's a 'trunk prefix'), followed by the Country Code Prefix. */\n phoneIddPrefix?: Maybe;\n subdivisions?: Maybe>>;\n}\n\n\n/** Information about an ISO-defined country. */\nexport interface IsoCountryAuxiliaryArgs {\n request?: InputMaybe;\n}\n\n/** Client specific configuration for ISO countries. */\nexport interface IsoCountryAuxiliary {\n /** The IC code for this ISO country */\n id: Scalars['String']['output'];\n /** True if this country is not permitted as a selection. */\n prohibited: Scalars['Boolean']['output'];\n /** Use this to sort country lists - order by Auxiliary.SortGroup first and then by Name. */\n sortGroup?: Maybe;\n}\n\n/** A request object that can be used to query ISO country auxiliary data. */\nexport interface IsoCountryAuxiliaryRequest {\n /** The client alias to use when getting ISO country auxiliary data. */\n clientAlias?: InputMaybe;\n}\n\n/** Information about an ISO-defined country subdivision (state/province/etc.). */\nexport interface IsoCountrySubdivision {\n /** The subdivision code; unique only within a country. This is the country-specific portion of GlobalCode value. */\n code: Scalars['String']['output'];\n /** This is the unique 3-char ISO-3166-1 code for the country that this subdivision belongs to. */\n countryCode: Scalars['String']['output'];\n /** The full, globally-unique ISO subdivision code. */\n globalCode: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n id: Scalars['Int']['output'];\n /** The name of the country. */\n name: Scalars['String']['output'];\n}\n\nexport enum ItemNodeType {\n /** CertAchieved */\n CertAchieved = 'CertAchieved',\n /** Folder */\n Folder = 'Folder'\n}\n\n/**\n * A jurisdiction\r\n * \r\n * \r\n * - Requires All Features: NCARBJurisdictions\r\n * \r\n * - Requires All Permissions: Jurisdictions.View\r\n *\n */\nexport interface Jurisdiction {\n /** CSetId has a value if the jurisdiction is manual, otherwise it is automatic. */\n cSetId?: Maybe;\n catName?: Maybe;\n externalId?: Maybe;\n id?: Maybe;\n itemName?: Maybe;\n}\n\n/** Contains a variety of helper links for Kryterion candidate egress sso. */\nexport interface KryterionSsoEgress {\n dashboard?: Maybe;\n}\n\nexport enum LocType {\n /** CandidatePortalExternalUrl */\n CandidatePortalExternalUrl = 'CandidatePortalExternalUrl',\n /** CandidatePortalString */\n CandidatePortalString = 'CandidatePortalString',\n /** CandidatePortalSystemUrl */\n CandidatePortalSystemUrl = 'CandidatePortalSystemUrl',\n /** InternalPortalExternalUrl */\n InternalPortalExternalUrl = 'InternalPortalExternalUrl',\n /** InternalPortalString */\n InternalPortalString = 'InternalPortalString',\n /** InternalPortalSystemUrl */\n InternalPortalSystemUrl = 'InternalPortalSystemUrl',\n /** SponsorPortalExternalUrl */\n SponsorPortalExternalUrl = 'SponsorPortalExternalUrl',\n /** SponsorPortalString */\n SponsorPortalString = 'SponsorPortalString',\n /** SponsorPortalSystemUrl */\n SponsorPortalSystemUrl = 'SponsorPortalSystemUrl'\n}\n\nexport enum LocUiType {\n /** Button */\n Button = 'Button',\n /** ColumnHeading */\n ColumnHeading = 'ColumnHeading',\n /** Content */\n Content = 'Content',\n /** FieldError */\n FieldError = 'FieldError',\n /** FieldHint */\n FieldHint = 'FieldHint',\n /** FieldLabel */\n FieldLabel = 'FieldLabel',\n /** ImageInformation */\n ImageInformation = 'ImageInformation',\n /** MenuItem */\n MenuItem = 'MenuItem',\n /** NotificationMessage */\n NotificationMessage = 'NotificationMessage',\n /** SystemValue */\n SystemValue = 'SystemValue',\n /** Title */\n Title = 'Title'\n}\n\nexport interface LocalizationResponse {\n /** The culture for the localization. */\n cultureName: Scalars['String']['output'];\n /** The fallback value if this field is not customized. */\n defaultValue?: Maybe;\n /** Information to aid in localizing this value. */\n description?: Maybe;\n feature?: Maybe;\n /** Specifies if an html editor should be used for this field. */\n htmlAllowed?: Maybe;\n /** Information to aid in localizing this value. Returns true when a localization has been set by the user. */\n isCustomized?: Maybe;\n /** The name (key) of the localization. */\n name: Scalars['String']['output'];\n /** The localization path value, unique per portal. */\n path?: Maybe;\n /** See PortalType enum for more information. */\n portalType?: Maybe;\n /** If true, this value may appear in multiple places. Changing it in one place will change it everywhere. */\n shared?: Maybe;\n /** See LocType enum for more information. */\n type?: Maybe;\n /** The type of UI item this localization is used on. */\n uiType?: Maybe;\n /** The localizations value. */\n value?: Maybe;\n}\n\n/** A definition for a localization. */\nexport interface LocalizationVm {\n /** The name (key) of the localization. */\n name: Scalars['String']['input'];\n /** The value to be assigned to the localization. */\n value?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface LogicRule {\n rulesByPosition?: Maybe>>;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface LogicRuleByPosition {\n position?: Maybe;\n unparsedJson?: Maybe;\n}\n\nexport interface MatchingExam {\n cmcId: Scalars['Int']['output'];\n examDate: Scalars['DateTime']['output'];\n firstName: Scalars['String']['output'];\n lastName: Scalars['String']['output'];\n registrationNumber?: Maybe;\n testCenterId?: Maybe;\n}\n\nexport enum MergeRequestState {\n /** Approved */\n Approved = 'Approved',\n /** Complete */\n Complete = 'Complete',\n /** Queued */\n Queued = 'Queued',\n /** Rejected */\n Rejected = 'Rejected',\n /** Requested */\n Requested = 'Requested'\n}\n\nexport enum MergeState {\n /** MergeRequest */\n MergeRequest = 'MergeRequest',\n /** Merged */\n Merged = 'Merged',\n /** UnMerged */\n UnMerged = 'UnMerged'\n}\n\nexport enum NavType {\n /** CandidatePortal */\n CandidatePortal = 'CandidatePortal',\n /** InternalPortal */\n InternalPortal = 'InternalPortal',\n /** SponsorPortal */\n SponsorPortal = 'SponsorPortal'\n}\n\n/** A node in a navigation tree. */\nexport interface Navigation {\n /** The culture/language of the Label. */\n cultureInfoName?: Maybe;\n /** The custom display order for the node. */\n displayOrder?: Maybe;\n /** The Id of the node. */\n id?: Maybe;\n /** The display-label for the node. */\n label?: Maybe;\n /** The Id of the parent node; null for root nodes. */\n parentId?: Maybe;\n /** This is the key to use to fetch the label for the node from the localization resources; you need the resource-type to use this. */\n resourceKey?: Maybe;\n /** This is the type of resource that the resource-key corresponds to. */\n resourceType: LocType;\n /** The type of the node. */\n type: NavType;\n /** The url for the node. */\n url?: Maybe;\n}\n\nexport interface NavigationListRequestVm {\n /** Indicates how the labels of the nodes in the tree are localized (language). The default is 'en'. */\n culture?: InputMaybe;\n /** The type of navigation tree to fetch. The default is 'CandidatePortal'. Supported options are 'CandidatePortal', 'SponsorPortal', 'InternalPortal'. */\n type?: InputMaybe;\n}\n\n/** A definition for a navigation node. */\nexport interface NavigationRequestVm {\n /** The relative number that determines how the navigation node is ordered against its peers. */\n displayOrder?: InputMaybe;\n /** A guid to identify external navigation nodes. If this field is populated, ExternalUrl must also be populated. This field shouldn't be provided if the node is interal. */\n externalId?: InputMaybe;\n /** The url external navigation nodes redirect to. Shouldn't be populated if Id is populated. Is required if ExternalId is provided. */\n externalUrl?: InputMaybe;\n /** The SVG text for the icon associated with the navigation node. This icon will override any default. */\n icon?: InputMaybe;\n /** The Id of the navigation node (not the client navigation node). This links to the navigation table, and shouldn't be provided if the node is a link to an external site */\n id?: InputMaybe;\n /** If the navigation node is a child node, this is the Id of its parent. */\n parentId?: InputMaybe;\n}\n\nexport interface NcarbNeedsEligibilityRequest {\n areFilterId: Scalars['Int']['input'];\n jurisdictionFilterId: Scalars['Int']['input'];\n}\n\nexport interface NcarbNeedsEligibilityResponse {\n ceiExternalId?: Maybe;\n city?: Maybe;\n cmcId: Scalars['Int']['output'];\n email?: Maybe;\n firstName?: Maybe;\n lastName?: Maybe;\n litemExternalId?: Maybe;\n ncarbRecordNo?: Maybe;\n recordSummaryLink?: Maybe;\n state?: Maybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: NcarbReports\r\n *\n */\nexport interface NcarbReports {\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Must have candidate access\r\n *\n */\n ncarbNeedsEligibility?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Must have candidate access\r\n *\n */\n ncarbNeedsEligibilityCount?: Maybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: NcarbReports\r\n *\n */\nexport interface NcarbReportsNcarbNeedsEligibilityArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ExamNCARBCertBatching\r\n *\n */\nexport interface NcarbToolsMutations {\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamNCARBExamAuthorizations\r\n *\n */\n createExamAuthorization?: Maybe;\n /**\n * \r\n * \r\n *\n */\n switchToAutomaticJurisdictions?: Maybe>>;\n /**\n * \r\n * \r\n *\n */\n switchToManualJurisdictions?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamNCARBExamAuthorizations\r\n *\n */\n updateExamAuthorization?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ExamNCARBCertBatching\r\n *\n */\nexport interface NcarbToolsMutationsCreateExamAuthorizationArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ExamNCARBCertBatching\r\n *\n */\nexport interface NcarbToolsMutationsSwitchToAutomaticJurisdictionsArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ExamNCARBCertBatching\r\n *\n */\nexport interface NcarbToolsMutationsSwitchToManualJurisdictionsArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ExamNCARBCertBatching\r\n *\n */\nexport interface NcarbToolsMutationsUpdateExamAuthorizationArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ToolsNCARBTools\r\n *\n */\nexport interface NcarbToolsQueries {\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamNCARBCertBatching\r\n *\n */\n certBatchingList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamScoreReportsBatch\r\n * \r\n * - Requires All Permissions: Ncarb.ScoreReports.BatchedDownloads.Modify, Ncarb.ScoreReports.BatchedDownloads.View\r\n *\n */\n examBatchingList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamScoreReportsBatch, ExamScoreReports\r\n * \r\n * - Requires All Permissions: ClientSettings.View\r\n *\n */\n fetchDelayClientSettings?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamScoreReportsBatch, ExamScoreReports\r\n * \r\n * - Requires All Permissions: ClientSettings.View\r\n *\n */\n fetchDelayList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamNCARBExamAuthorizations\r\n *\n */\n fetchExamAuthHistory?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamNCARBExamAuthorizations\r\n *\n */\n fetchExamAuths?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: NCARBJurisdictions\r\n *\n */\n jurisdictionList?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ToolsNCARBTools\r\n *\n */\nexport interface NcarbToolsQueriesCertBatchingListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ToolsNCARBTools\r\n *\n */\nexport interface NcarbToolsQueriesExamBatchingListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ToolsNCARBTools\r\n *\n */\nexport interface NcarbToolsQueriesFetchDelayListArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ToolsNCARBTools\r\n *\n */\nexport interface NcarbToolsQueriesFetchExamAuthHistoryArgs {\n request?: InputMaybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: ToolsNCARBTools\r\n *\n */\nexport interface NcarbToolsQueriesFetchExamAuthsArgs {\n request?: InputMaybe;\n}\n\nexport interface NetacadReport {\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n candidateEmail?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n candidateFirstName?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n candidateLastName?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n cscoId?: Maybe;\n losingCscoIds?: Maybe>>;\n winningCscoId?: Maybe;\n}\n\nexport interface NetacadReportRequest {\n externalIdList: Array>;\n}\n\n/**\n * Returns a detail view of newly imported exams.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: ExamRecentImportList.View\r\n *\n */\nexport interface NewlyImportedExamDetail {\n /** The Candidate for the exam. */\n candidate?: Maybe;\n /** The exam catalog entry for this exam. */\n catalog?: Maybe;\n /**\n * The Cmc Id on the exam.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n cmcId?: Maybe;\n /**\n * The date the exam was imported/created.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n created?: Maybe;\n dataProvider?: Maybe;\n /**\n * The data provider Id.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n dataProviderId?: Maybe;\n /** The date the exam was sat by the candidate. */\n dateTime?: Maybe;\n /**\n * The Exam Id.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n id?: Maybe;\n /** The registration number for the exam. */\n registrationNumber?: Maybe;\n /** The test center Id the exam was done at. */\n testCenterId?: Maybe;\n}\n\n/**\n * Returns a count of exams imported on a specific date.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: ExamRecentImportList.View\r\n *\n */\nexport interface NewlyImportedExams {\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n created?: Maybe;\n dataProvider?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n dataProviderId?: Maybe;\n total?: Maybe;\n}\n\n/**\n * A news article summary\r\n * \r\n * \r\n * - Requires All Features: Announcements\r\n *\n */\nexport interface NewsArticle {\n created?: Maybe;\n ends?: Maybe;\n headline?: Maybe;\n id?: Maybe;\n newsDisplayOrder?: Maybe;\n pictureLinkUrl?: Maybe;\n pictureUrl?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n reads?: Maybe;\n starts?: Maybe;\n summary?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n views?: Maybe;\n}\n\n/**\n * A news article\r\n * \r\n * \r\n * - Requires All Features: Announcements\r\n *\n */\nexport interface NewsArticleDetail {\n body?: Maybe;\n created?: Maybe;\n ends?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n filter?: Maybe;\n headline?: Maybe;\n id?: Maybe;\n newsDisplayOrder?: Maybe;\n pictureLinkUrl?: Maybe;\n pictureUrl?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n reads?: Maybe;\n starts?: Maybe;\n summary?: Maybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n views?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\nexport interface OtherAchievementCatalog {\n /**\n * Used to indicate if this other achievement has been disabled.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n disabled: Scalars['Boolean']['output'];\n /** When set, this is the identifier for the client. */\n externalId?: Maybe;\n /** Internal id for the Other Achievement definition. */\n id: Scalars['Int']['output'];\n /** The name for the Other Achievement. */\n name?: Maybe;\n /** Used to indicate if this other achievement is eligible for reimbursement. */\n reimbursable: Scalars['Boolean']['output'];\n /** When this other achievement was last updated. */\n updated: Scalars['CmDateTimeOffset']['output'];\n /** When set, this is the other achievement vendor. */\n vendor?: Maybe;\n}\n\nexport interface PaddleData {\n /** List of possible subscriptions. */\n catalog?: Maybe>>;\n /** The primary Paddle ID for the candidate. */\n primaryPaddleId?: Maybe;\n /** List of active subscriptions for the candidate. */\n subscriptions?: Maybe>>;\n}\n\nexport interface PaddleItemData {\n /** The next billing date for this item. */\n next_billed_at?: Maybe;\n /** The previous billing date for this item. */\n previously_billed_at?: Maybe;\n /** The price information for this item. */\n price?: Maybe;\n}\n\nexport interface PaddlePriceData {\n /** The price ID. */\n id?: Maybe;\n}\n\nexport interface PaddleSubscriptionResponseData {\n /** The creation date of the subscription. */\n created_at?: Maybe;\n /** The currency code for the subscription. */\n currency_code?: Maybe;\n /** The customer ID associated with the subscription. */\n customer_id?: Maybe;\n /** The subscription ID. */\n id?: Maybe;\n /** The items included in the subscription. */\n items?: Maybe>>;\n /** The next billing date for the subscription. */\n next_billed_at?: Maybe;\n /** The status of the subscription. */\n status?: Maybe;\n}\n\n/** Contains a variety of helper links for PearsonVue candidate egress sso. */\nexport interface PearsonVueSsoEgress {\n dashboard?: Maybe;\n scheduleAppointments?: Maybe;\n viewAppointments?: Maybe;\n}\n\n/**\n * Shows information about a pending Exam Accommodation.\r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\nexport interface PendingExamAccomm {\n candidate?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n id: Scalars['Int']['output'];\n label?: Maybe;\n}\n\nexport enum PermType {\n /** InternalPortal */\n InternalPortal = 'InternalPortal',\n /** SponsorPortal */\n SponsorPortal = 'SponsorPortal'\n}\n\n/** This is the permissions that determines what a user can see and do. */\nexport interface Permission {\n clientRoles?: Maybe>>;\n /** The description of what the permission pertains to. */\n description: Scalars['String']['output'];\n featureEnabled: Scalars['Boolean']['output'];\n /** Group that the permission resides in. */\n groupName: Scalars['String']['output'];\n /** The permission Id. */\n id: Scalars['Int']['output'];\n key: HubPermission;\n /** The client friendly name of the permission. */\n label: Scalars['String']['output'];\n /** The internal name of the permission; this is unique by type. */\n name: Scalars['String']['output'];\n /** The type of the permission. */\n portalType: PermType;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface PhysicalFulfillment {\n catalogId: Scalars['Int']['output'];\n /** The cert associated with a phsyical fulfillment. */\n cert?: Maybe;\n cmcId: Scalars['Int']['output'];\n completed?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n expedite: Scalars['Boolean']['output'];\n exportOkDate?: Maybe;\n exported?: Maybe;\n externalId?: Maybe;\n /** Shows summary information on the associated fulfillment catalog. */\n fulfillmentCatalog?: Maybe;\n id: Scalars['Int']['output'];\n manual: Scalars['Boolean']['output'];\n pendingDmgr?: Maybe;\n pendingRequeue?: Maybe;\n purchased?: Maybe;\n status?: Maybe;\n tracking: Scalars['Boolean']['output'];\n trackingCarrier?: Maybe;\n trackingCodeList?: Maybe>>;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n *\n */\nexport interface PhysicalFulfillmentCatalog {\n /** When true, if a fulfillment item is unable to be delivered, a new fulfillment record will be created to retry sending the kit. */\n autoRequeue: Scalars['Boolean']['output'];\n /**\n * When true, indicates that this Fulfillment item can be purchased by the candidate.\r\n * \r\n * \r\n * - Requires All Features: EcommerceFulfillment\r\n *\n */\n canPurchase?: Maybe;\n certCatalog?: Maybe;\n /** When set, this indicates the Certification that the candidate must earn and have active in order to receive physical fulfillment, or be able to download electronic fulfillment. */\n certCatalogId?: Maybe;\n /** This is a description of what is included in the physical fulfillment kit. The default value is 'Kit'. This information typically is not relevant for fulfillment that is electronic only. */\n description: Scalars['String']['output'];\n /** Used to indicate if electronic fulfillment is available for download. When the value is false, this exclusively represents a fulfillment that is shipped to the candidate by a fulfillment house. */\n electronic: Scalars['Boolean']['output'];\n /** When set, this is the identifier for the client, the fulfillment house, or both indicating what specific kit is intended. */\n externalId?: Maybe;\n /** Internal id for the Fulfillment definition. */\n id: Scalars['Int']['output'];\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.Name value is used. */\n name?: Maybe;\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.NameAbbr value is used. */\n nameAbbr?: Maybe;\n /** Indicates how often fulfillment can be queued for a candidate. Options are Manual, Once, EachNewItem, and Never. Never is used for fulfillment that is electronic only. */\n queueType: FcatQueueType;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface PhysicalFulfillmentCatalogDetail {\n /** When true, if a fulfillment item is unable to be delivered, a new fulfillment record will be created to retry sending the kit. */\n autoRequeue: Scalars['Boolean']['output'];\n /** Defines a list of countries which, if the candidate resides in one of those countries, the candidate cannot be granted physical fulfillment kits. */\n blockedCountries?: Maybe>>;\n /**\n * When true, indicates that this Fulfillment item can be purchased by the candidate.\r\n * \r\n * \r\n * - Requires All Features: EcommerceFulfillment\r\n *\n */\n canPurchase?: Maybe;\n certCatalog?: Maybe;\n /** When set, this indicates the Certification that the candidate must earn and have active in order to receive physical fulfillment, or be able to download electronic fulfillment. */\n certCatalogId?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n created: Scalars['CmDateTimeOffset']['output'];\n /** This is a description of what is included in the physical fulfillment kit. The default value is 'Kit'. This information typically is not relevant for fulfillment that is electronic only. */\n description: Scalars['String']['output'];\n /**\n * When set, indicates that the item may be purchased and provides more information about the purchasing structure.\r\n * \r\n * \r\n * - Requires All Features: EcommerceFulfillment\r\n *\n */\n eTransactionItemCatalogList?: Maybe>>;\n /** Used to indicate if electronic fulfillment is available for download. When the value is false, this exclusively represents a fulfillment that is shipped to the candidate by a fulfillment house. */\n electronic: Scalars['Boolean']['output'];\n /** When set, this is the identifier for the client, the fulfillment house, or both indicating what specific kit is intended. */\n externalId?: Maybe;\n /** Internal id for the Fulfillment definition. */\n id: Scalars['Int']['output'];\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.Name value is used. */\n name?: Maybe;\n /** When set, this is a value that can be used either by the fulfillment house or on electronic fulfillment. When null, the CertCatalog.NameAbbr value is used. */\n nameAbbr?: Maybe;\n /** Indicates how often fulfillment can be queued for a candidate. Options are Manual, Once, EachNewItem, and Never. Never is used for fulfillment that is electronic only. */\n queueType: FcatQueueType;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CredentialFulfillment\r\n * \r\n * - Requires All Permissions: Candidate.CredentialFulfillment.View\r\n * \r\n * - Must have candidate access\r\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface PhysicalFulfillmentDetail {\n catalogId: Scalars['Int']['output'];\n /** The cert associated with a phsyical fulfillment. */\n cert?: Maybe;\n cmcId: Scalars['Int']['output'];\n completed?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n expedite: Scalars['Boolean']['output'];\n exportOkDate?: Maybe;\n exported?: Maybe;\n externalId?: Maybe;\n /** Shows summary information on the associated fulfillment catalog. */\n fulfillmentCatalog?: Maybe;\n /** Shows summary information on the associated fulfillment catalog. */\n fulfillmentCatalogDetail?: Maybe;\n id: Scalars['Int']['output'];\n manual: Scalars['Boolean']['output'];\n notes?: Maybe;\n pendingDmgr?: Maybe;\n pendingRequeue?: Maybe;\n purchased?: Maybe;\n status?: Maybe;\n statusMessage?: Maybe;\n tracking: Scalars['Boolean']['output'];\n trackingCarrier?: Maybe;\n trackingCodeList?: Maybe>>;\n}\n\nexport enum PortalType {\n /** CandidatePortal */\n CandidatePortal = 'CandidatePortal',\n /** InternalPortal */\n InternalPortal = 'InternalPortal',\n /** SponsorPortal */\n SponsorPortal = 'SponsorPortal'\n}\n\n/** Contains a variety of helper links for Psi candidate egress sso. */\nexport interface PsiSsoEgress {\n dashboard?: Maybe;\n scheduleAppointments?: Maybe;\n viewAppointments?: Maybe;\n}\n\nexport interface PublicEcertDownload {\n activeDate?: Maybe;\n firstName?: Maybe;\n id: Scalars['Int']['output'];\n lastName?: Maybe;\n name: Scalars['String']['output'];\n url?: Maybe;\n}\n\nexport interface PublicEcertRequest {\n clientDbAlias: Scalars['String']['input'];\n examDate: Scalars['CmDate']['input'];\n lastName: Scalars['String']['input'];\n registrationNumber: Scalars['String']['input'];\n}\n\nexport enum QlikCmRole {\n /** Consumer */\n Consumer = 'Consumer',\n /** Contributor */\n Contributor = 'Contributor',\n /** Creator */\n Creator = 'Creator',\n /** NoRole */\n NoRole = 'NoRole'\n}\n\nexport interface ReassignCandidateDataRequest {\n certRequirementIdList?: InputMaybe>>;\n examIdList?: InputMaybe>>;\n fromCmcId: Scalars['Int']['input'];\n identificationIdList?: InputMaybe>>;\n message?: InputMaybe;\n toCmcId: Scalars['Int']['input'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface ReassignClaimedBenefitRequest {\n benefitId: Scalars['Int']['input'];\n candidateId: CandidateIdRequest;\n}\n\n/**\n * Returns a detail view of hte recently re-imported exams.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: ExamRecentReimportList.View\r\n *\n */\nexport interface RecentlyReImportedExamDetail {\n /** The Candidate on the exam. */\n candidate?: Maybe;\n /** The exam catalog entry for this exam. */\n catalog?: Maybe;\n /**\n * The Cmc Id on the exam.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n cmcId?: Maybe;\n /** The exam code. */\n code?: Maybe;\n /** The data provider object. */\n dataProvider?: Maybe;\n /**\n * The data provider Id.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n dataProviderId?: Maybe;\n /** The date the exam was sat by the candidate. */\n dateTime?: Maybe;\n /**\n * The Exam Id.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n id?: Maybe;\n /**\n * The date the exam was reimported.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n reImported?: Maybe;\n /** The registration number for the exam. */\n registrationNumber?: Maybe;\n /** The test center Id the exam was done at. */\n testCenterId?: Maybe;\n}\n\n/**\n * Returns a list of the recently re-imported exams.\r\n * \r\n * \r\n * - Requires All Features: Exam\r\n * \r\n * - Requires All Permissions: ExamRecentReimportList.View\r\n *\n */\nexport interface RecentlyReImportedExams {\n /** The data provider object. */\n dataProvider?: Maybe;\n /**\n * The data provider Id\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n dataProviderId?: Maybe;\n /**\n * The date that the exam was re-imported.\r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n reImported?: Maybe;\n total?: Maybe;\n}\n\nexport interface RegionalMarket {\n /** The country that's a part of the indicated region. */\n country?: Maybe;\n id: Scalars['Int']['output'];\n /** The region that the country is a part of. */\n name: Scalars['String']['output'];\n}\n\nexport interface ReleaseFulfillmentRequest {\n candidateId: CandidateIdRequest;\n fulfillmentIdList?: InputMaybe>>;\n}\n\nexport interface RequestByDateRange {\n /** The date to end the range at. */\n end?: InputMaybe;\n /** The date to start the range from. */\n start?: InputMaybe;\n}\n\nexport interface RequestByExternalId {\n /** A unique string representing the item being requested. */\n externalId: Scalars['String']['input'];\n}\n\nexport interface RequestById {\n /** A unique integer representing the item being requested. */\n id: Scalars['Int']['input'];\n}\n\nexport interface RequestByIdOrExternalId {\n /** A unique string representing the item being requested. Has a lower priority than Id. */\n externalId?: InputMaybe;\n /** A unique integer representing the item being requested. Has a higher priority over ExternalId. */\n id?: InputMaybe;\n}\n\n/** This is used to provide server side pagination. */\nexport interface RequestConfig {\n /** How many entries (rows) to return. */\n pageLimit?: InputMaybe;\n /** How many entries (rows) to skip. */\n pageOffset?: InputMaybe;\n /** The list of fields and values to search by. */\n searchList?: InputMaybe>>;\n /** A list of fields, in order, to sort by. */\n sortList?: InputMaybe>>;\n}\n\nexport interface RetakeSecurityConfigurationGqlType {\n unparsedConfig?: Maybe;\n}\n\nexport interface RevokeExamAuthorizationPackRequest {\n candidateId: CandidateIdRequest;\n expkId: Scalars['Int']['input'];\n}\n\nexport enum RtdType {\n /** Normal */\n Normal = 'Normal',\n /** WebGroup */\n WebGroup = 'WebGroup',\n /** WebProgram */\n WebProgram = 'WebProgram'\n}\n\nexport enum RtiCatIdType {\n /** Ccat */\n Ccat = 'Ccat',\n /** Crcat */\n Crcat = 'Crcat',\n /** Excat */\n Excat = 'Excat',\n /** Invalid */\n Invalid = 'Invalid',\n /** Oa */\n Oa = 'Oa'\n}\n\nexport interface ScoreComparisonSecurityConfigurationGqlType {\n unparsedConfig?: Maybe;\n}\n\n/** The name and value to search on for a table request. */\nexport interface SearchRequest {\n /** The field to search by. */\n searchField?: InputMaybe;\n /** The method by which to search against the SearchField. */\n searchMethod?: InputMaybe;\n /** The value to search against the SearchField. */\n searchValue?: InputMaybe;\n}\n\nexport interface SecurityConfigurationsGqlType {\n candidateSecurityConfiguration?: Maybe;\n examImageSecurityConfiguration?: Maybe;\n retakeSecurityConfiguration?: Maybe;\n scoreComparisonSecurityConfiguration?: Maybe;\n similarityIndexConfiguration?: Maybe;\n timeSpentSecurityConfiguration?: Maybe;\n}\n\nexport interface SelfRegisteredCandidateAccount {\n cmcId: Scalars['Int']['output'];\n dpExternalId?: Maybe;\n externalId?: Maybe;\n}\n\nexport interface SelfRegistration {\n clientAlias: Scalars['String']['input'];\n jwt: Scalars['String']['input'];\n password: Scalars['String']['input'];\n}\n\nexport interface SelfRegistrationRequest {\n addr1Business?: InputMaybe;\n addr1City?: InputMaybe;\n addr1CountryCode?: InputMaybe;\n addr1FaxNumber?: InputMaybe;\n addr1Line1?: InputMaybe;\n addr1Line2?: InputMaybe;\n addr1Line3?: InputMaybe;\n addr1PhoneNumber?: InputMaybe;\n addr1PostalCode?: InputMaybe;\n addr1State?: InputMaybe;\n addr2Business?: InputMaybe;\n addr2City?: InputMaybe;\n addr2CountryCode?: InputMaybe;\n addr2FaxNumber?: InputMaybe;\n addr2Line1?: InputMaybe;\n addr2Line2?: InputMaybe;\n addr2Line3?: InputMaybe;\n addr2PhoneNumber?: InputMaybe;\n addr2PostalCode?: InputMaybe;\n addr2State?: InputMaybe;\n affiliation?: InputMaybe;\n clientAlias?: InputMaybe;\n companyName?: InputMaybe;\n emailAddr?: InputMaybe;\n localizedAddr1City?: InputMaybe;\n localizedAddr1Line1?: InputMaybe;\n localizedAddr1Line2?: InputMaybe;\n localizedAddr1Line3?: InputMaybe;\n localizedAddr1PostalCode?: InputMaybe;\n localizedAddr1State?: InputMaybe;\n localizedCompanyName?: InputMaybe;\n localizedNameFirst?: InputMaybe;\n localizedNameLast?: InputMaybe;\n nameFirst?: InputMaybe;\n nameLast?: InputMaybe;\n preferredNameFirst?: InputMaybe;\n preferredNameLast?: InputMaybe;\n recaptchaToken: Scalars['String']['input'];\n}\n\nexport interface SelfRegistrationResponse {\n email?: Maybe;\n}\n\nexport interface SendTestEmail {\n /** The context id for this request e.g. catalog id */\n contextId?: InputMaybe;\n /** The culture for this request. */\n culture?: InputMaybe;\n /** The test email to send mail to. */\n email: Scalars['String']['input'];\n /** The context for this email. Optional. */\n emcatContext?: InputMaybe;\n /** The email catalog type for this request. */\n emcatType: EmcatType;\n}\n\n/**\n * Defines arbitrary lists of items that a candidate can be associated with.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n *\n */\nexport interface SettingCatalog {\n /** Indicates if a candidate can edit their own selection(s)/association(s) with items in the list */\n candidateEdit: Scalars['Boolean']['output'];\n /**\n * Indicates if candidates can see their own selection(s)/association(s) to items in the list\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n candidateView: Scalars['Boolean']['output'];\n /** The description of what the list means to the candidate. */\n description?: Maybe;\n /** This is used to override the default sorting of the lists: alphabetical by the name being displayed. */\n displayOrder?: Maybe;\n /** This is a unique ID to be used */\n externalId?: Maybe;\n /**\n * Indicates if this setting can be used to restrict WebUser access to Candidates based on the selection made.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n forWebFilter: Scalars['Boolean']['output'];\n id: Scalars['Int']['output'];\n /** When false, a candidate should only be associated with a single item (or none) from the list; a drop-down in the UI. */\n multiSelect: Scalars['Boolean']['output'];\n /** The display name of the setting. */\n name: Scalars['String']['output'];\n /** The abbreviated name of the list. */\n nameAbbr?: Maybe;\n /**\n * Indicates if only the candidate is allowed to edit their selections/associations to items in the list.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n protectedEdit: Scalars['Boolean']['output'];\n /** Indicates if candidates are required to have at least one selection (association to items) in the list. Only relevant when candidates are allowed to edit their selections/associations. */\n required: Scalars['Boolean']['output'];\n /** The items/options defined for this list. */\n settingItems?: Maybe>>;\n /**\n * Indicates if a non-admin user can edit the associations with items in a viewable list.\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n userEdit: Scalars['Boolean']['output'];\n /**\n * Indicates if users can see association(s) to items in the list (theirs or others);\r\n * \r\n * - Disallowed Account Types: Candidate\n */\n userView: Scalars['Boolean']['output'];\n}\n\n/**\n * Defines an item (options) within a custom-settings list in the catalog. These are what a candidate selects as part of what is considered their settings.\r\n * \r\n * \r\n * - Requires All Features: CandidateProfileCustomDataSettings\r\n *\n */\nexport interface SettingItem {\n /** This is used to control the sorting of the list-items when displayed. When NULL, order is by name (ASC). NULL display-orders always come after non-NULL. */\n displayOrder?: Maybe;\n /** This is a unique ID to be used (instead of the Id) */\n externalId?: Maybe;\n /** This is used to define and associate an item with a name that is to be used to group items in a list together. */\n groupName?: Maybe;\n id: Scalars['Int']['output'];\n /** The display name/label/text of the item. */\n name: Scalars['String']['output'];\n /** The abbreviated name/label/text of the item. */\n nameAbbr?: Maybe;\n /** The catalog/definition of the item. */\n settingCatalog?: Maybe;\n settingCatalogId: Scalars['Int']['output'];\n}\n\nexport enum ShistType {\n /** EditBcat */\n EditBcat = 'EditBcat',\n /** EditCcat */\n EditCcat = 'EditCcat',\n /** EditCg */\n EditCg = 'EditCg',\n /** EditClientFeature */\n EditClientFeature = 'EditClientFeature',\n /** EditClientRole */\n EditClientRole = 'EditClientRole',\n /** EditClientRolePermissions */\n EditClientRolePermissions = 'EditClientRolePermissions',\n /** EditCocat */\n EditCocat = 'EditCocat',\n /** EditCog */\n EditCog = 'EditCog',\n /** EditCrcat */\n EditCrcat = 'EditCrcat',\n /** EditCrg */\n EditCrg = 'EditCrg',\n /** EditEg */\n EditEg = 'EditEg',\n /** EditEmcat */\n EditEmcat = 'EditEmcat',\n /** EditExcat */\n EditExcat = 'EditExcat',\n /** EditIcat */\n EditIcat = 'EditIcat',\n /** EditLocalization */\n EditLocalization = 'EditLocalization',\n /** EditNewsArticle */\n EditNewsArticle = 'EditNewsArticle',\n /** EditSecat */\n EditSecat = 'EditSecat'\n}\n\nexport interface SignLatestAgreementRequest {\n candidateId?: InputMaybe;\n /** When the signature happened. */\n effective?: InputMaybe;\n}\n\nexport interface SimilarityIndexConfigurationGqlType {\n unparsedConfig?: Maybe;\n}\n\n/** The name and sort direction for a table request. */\nexport interface SortRequest {\n /** Whether the sorting will be Descending or not. Defaults to false. */\n sortDescending?: InputMaybe;\n /** The field to sort by. */\n sortField?: InputMaybe;\n}\n\n/** Contains a variety of helper links for candidate egress sso. */\nexport interface SsoEgress {\n certiverse?: Maybe;\n kryterion?: Maybe;\n pearsonVue?: Maybe;\n psi?: Maybe;\n xvoucher?: Maybe;\n}\n\nexport interface StagingActivityResponse {\n elapsed?: Maybe;\n elapsedImport?: Maybe;\n elapsedMatching?: Maybe;\n elapsedPostImport?: Maybe;\n elapsedSanitation?: Maybe;\n elapsedVerification?: Maybe;\n errors?: Maybe;\n inserted?: Maybe;\n rejected?: Maybe;\n script: Scalars['String']['output'];\n skipped?: Maybe;\n started: Scalars['CmDateTimeOffset']['output'];\n total?: Maybe;\n updated?: Maybe;\n}\n\nexport interface StagingCandidate {\n address1City?: Maybe;\n address1CountryCode?: Maybe;\n address1Line1?: Maybe;\n address1Line2?: Maybe;\n address1Line3?: Maybe;\n address1PostalCode?: Maybe;\n address1State?: Maybe;\n clientId?: Maybe;\n created?: Maybe;\n dataProvider?: Maybe;\n email?: Maybe;\n emailMatchCount?: Maybe;\n fileName?: Maybe;\n firstName?: Maybe;\n id?: Maybe;\n isConfidentMatch?: Maybe;\n lastName?: Maybe;\n lastUpdate?: Maybe;\n matchedCandidate?: Maybe;\n state?: Maybe;\n stateMessage?: Maybe;\n}\n\nexport enum StagingCandidateAction {\n /** CreateNew */\n CreateNew = 'CreateNew',\n /** Merge */\n Merge = 'Merge',\n /** MergeAndApprove */\n MergeAndApprove = 'MergeAndApprove',\n /** Reject */\n Reject = 'Reject'\n}\n\nexport interface StagingCertRequirement {\n certRequirementCatalog?: Maybe;\n certRequirementCatalogExternalId?: Maybe;\n clientId?: Maybe;\n created?: Maybe;\n dataProvider?: Maybe;\n email?: Maybe;\n fileName?: Maybe;\n firstName?: Maybe;\n id?: Maybe;\n lastName?: Maybe;\n lastUpdate?: Maybe;\n matchedCandidate?: Maybe;\n state?: Maybe;\n stateMessage?: Maybe;\n}\n\nexport enum StagingCertRequirementAction {\n /** Reject */\n Reject = 'Reject'\n}\n\nexport interface StagingExam {\n authorizationId?: Maybe;\n clientId?: Maybe;\n created?: Maybe;\n dataProvider?: Maybe;\n dataProviderCandidateId?: Maybe;\n examCatalog?: Maybe;\n examDateTime?: Maybe;\n externalId?: Maybe;\n fileName?: Maybe;\n firstName?: Maybe;\n groupCode?: Maybe;\n id?: Maybe;\n lastName?: Maybe;\n matchedCandidate?: Maybe;\n registrationNumber?: Maybe;\n seriesCode?: Maybe;\n state?: Maybe;\n stateMessage?: Maybe;\n testCenterId?: Maybe;\n title?: Maybe;\n}\n\nexport enum StagingExamAction {\n /** AdjustAuthorizationId */\n AdjustAuthorizationId = 'AdjustAuthorizationId',\n /** AdjustDate */\n AdjustDate = 'AdjustDate',\n /** Reject */\n Reject = 'Reject',\n /** Retry */\n Retry = 'Retry'\n}\n\nexport interface StagingImportActivity {\n candidates?: Maybe;\n comments?: Maybe;\n creqs?: Maybe;\n dataProvider?: Maybe;\n elapsed?: Maybe;\n exams?: Maybe;\n failureMessage?: Maybe;\n fileName?: Maybe;\n items?: Maybe;\n records?: Maybe;\n responses?: Maybe;\n sections?: Maybe;\n started: Scalars['CmDateTimeOffset']['output'];\n surveys?: Maybe;\n}\n\nexport interface StagingImportActivityRequest {\n fileName?: InputMaybe;\n importDate?: InputMaybe;\n}\n\nexport enum StagingState {\n /** Completed */\n Completed = 'Completed',\n /** CompletedRejected */\n CompletedRejected = 'CompletedRejected',\n /** CompletedSkipped */\n CompletedSkipped = 'CompletedSkipped',\n /** Import */\n Import = 'Import',\n /** ImportInvalidData */\n ImportInvalidData = 'ImportInvalidData',\n /** ImportMissingConfig */\n ImportMissingConfig = 'ImportMissingConfig',\n /** ImportMissingData */\n ImportMissingData = 'ImportMissingData',\n /** ImportWaitRetry */\n ImportWaitRetry = 'ImportWaitRetry',\n /** Matching */\n Matching = 'Matching',\n /** MatchingInvalidData */\n MatchingInvalidData = 'MatchingInvalidData',\n /** MatchingMismatch */\n MatchingMismatch = 'MatchingMismatch',\n /** MatchingMissingConfig */\n MatchingMissingConfig = 'MatchingMissingConfig',\n /** MatchingMissingData */\n MatchingMissingData = 'MatchingMissingData',\n /** MatchingNeitherMatched */\n MatchingNeitherMatched = 'MatchingNeitherMatched',\n /** MatchingOrphanWaitRetry */\n MatchingOrphanWaitRetry = 'MatchingOrphanWaitRetry',\n /** MatchingWaitRetry */\n MatchingWaitRetry = 'MatchingWaitRetry',\n /** PostImport */\n PostImport = 'PostImport',\n /** PostImportInvalidData */\n PostImportInvalidData = 'PostImportInvalidData',\n /** PostImportMissingConfig */\n PostImportMissingConfig = 'PostImportMissingConfig',\n /** PostImportMissingData */\n PostImportMissingData = 'PostImportMissingData',\n /** PostImportWaitRetry */\n PostImportWaitRetry = 'PostImportWaitRetry',\n /** Sanitation */\n Sanitation = 'Sanitation',\n /** SanitationInvalidData */\n SanitationInvalidData = 'SanitationInvalidData',\n /** SanitationInvalidDate */\n SanitationInvalidDate = 'SanitationInvalidDate',\n /** SanitationMissingConfig */\n SanitationMissingConfig = 'SanitationMissingConfig',\n /** SanitationMissingData */\n SanitationMissingData = 'SanitationMissingData',\n /** SanitationMissingDpID */\n SanitationMissingDpId = 'SanitationMissingDpID',\n /** SanitationWaitRetry */\n SanitationWaitRetry = 'SanitationWaitRetry',\n /** Verification */\n Verification = 'Verification',\n /** VerificationDubiousMatch */\n VerificationDubiousMatch = 'VerificationDubiousMatch',\n /** VerificationInvalidData */\n VerificationInvalidData = 'VerificationInvalidData',\n /** VerificationMissingConfig */\n VerificationMissingConfig = 'VerificationMissingConfig',\n /** VerificationMissingData */\n VerificationMissingData = 'VerificationMissingData',\n /** VerificationNameMismatch */\n VerificationNameMismatch = 'VerificationNameMismatch',\n /** VerificationOrphanWaitRetry */\n VerificationOrphanWaitRetry = 'VerificationOrphanWaitRetry',\n /** VerificationWaitRetry */\n VerificationWaitRetry = 'VerificationWaitRetry'\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Permissions: CredentialAchievements.Catalog.View\r\n *\n */\nexport interface StandingRule {\n catalog?: Maybe;\n /** The recursive list of Standing Rules in this Standing Rule. */\n children?: Maybe>>;\n duration?: Maybe;\n /** Whether this Standing Rule is a terminating item in the recursive list. */\n itemType?: Maybe;\n numRequired?: Maybe;\n /** The cert's external Id. */\n targetExternalId?: Maybe;\n}\n\nexport interface StartCandidateSelfMergeRequest {\n canVerifyEmail: Scalars['Boolean']['input'];\n email?: InputMaybe;\n externalId?: InputMaybe;\n}\n\nexport interface SwitchToAutomaticJurisdictionsRequest {\n cSetIds?: InputMaybe>>;\n}\n\nexport interface SwitchToManualJurisdictionsRequest {\n externalIds?: InputMaybe>>;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface SystemHistory {\n created: Scalars['CmDateTimeOffset']['output'];\n /** Indicates the account that created the system history entry. */\n creator: Scalars['String']['output'];\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n id: Scalars['Int']['output'];\n /** The message that was logged */\n message?: Maybe;\n /**\n * This points to the appropriate record.\r\n * \r\n * Searchable.\n */\n targetId?: Maybe;\n /**\n * The type of the history entry.\r\n * \r\n * Searchable.\n */\n type: ShistType;\n}\n\n/**\n * An organisational section of tags.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Tagging\r\n * \r\n * - Requires All Permissions: Tagging.Catalog.View\r\n *\n */\nexport interface TagDomain {\n /** Whether or not this tag has been disabled. */\n disabled: Scalars['Boolean']['output'];\n id: Scalars['Int']['output'];\n /** The name of the domain. */\n name: Scalars['String']['output'];\n /** The item names for this domain */\n tagItemNameList?: Maybe>>;\n /**\n * The type of domain, used by internal scripts to identify non-editable domains.\r\n * \r\n * \r\n * - Requires All Permissions: Tagging.Catalog.View\r\n *\n */\n type: RtdType;\n}\n\n/** An organizational section of tags. */\nexport interface TagDomainDetail {\n /** Whether or not this tag has been disabled. */\n disabled: Scalars['Boolean']['output'];\n id: Scalars['Int']['output'];\n /** The name of the domain. */\n name: Scalars['String']['output'];\n /** The items for this domain */\n tagItemList?: Maybe>>;\n /** The item names for this domain */\n tagItemNameList?: Maybe>>;\n /**\n * The type of domain, used by internal scripts to identify non-editable domains.\r\n * \r\n * \r\n * - Requires All Permissions: Tagging.Catalog.View\r\n *\n */\n type: RtdType;\n}\n\n\n/** An organizational section of tags. */\nexport interface TagDomainDetailTagItemListArgs {\n request?: InputMaybe;\n}\n\n/**\n * A tag linked to a catalog.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: Tagging\r\n * \r\n * - Requires All Permissions: Tagging.Catalog.View\r\n *\n */\nexport interface TagItem {\n catalogId: Scalars['Int']['output'];\n /** The type of catalog referred to in the CatalogId. */\n catalogType: RtiCatIdType;\n /** When set, this indicates that this relates to a Certification. */\n certCatalog?: Maybe;\n /** When set, this indicates that this relates to a Certification Requirement. */\n certRequirementCatalog?: Maybe;\n /** When set, this indicates that this relates to an Exam. */\n examCatalog?: Maybe;\n id: Scalars['Int']['output'];\n /** When set, this indicates that this relates to an Other Achievement. */\n otherAchievementCatalog?: Maybe;\n /** The name of the tag. */\n tagName: Scalars['String']['output'];\n}\n\n/** Information about a test delivery vendor's unique Test Center location. */\nexport interface TestCenter {\n /** The country that this test center is in. */\n country?: Maybe;\n /** This is the unique 3-char ISO-3166-1 code for the country that this test center belongs to. */\n countryCode: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n created: Scalars['DateTime']['output'];\n /** More information about the data provider indicated by the DpId (e.g. a data provider has its own ExternalId). */\n dataProvider?: Maybe;\n /** The unique Id (PK) of the data provider that delivered the Exam. This is considered the domain/context/scope within which the Exam.RegistrationNumber is unique. */\n dataProviderId?: Maybe;\n /** The full, globally-unique ISO subdivision code. */\n examTestCenterId: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n id: Scalars['Int']['output'];\n /** The name of the Test Center per the test delivery vendor. */\n name: Scalars['String']['output'];\n}\n\nexport interface TestrunSubscriptionConfiguration {\n /** The tlanguage code. */\n language?: Maybe;\n /** The paddle price ID. */\n paddlePriceId?: Maybe;\n /** The testrun program ID. */\n programId?: Maybe;\n}\n\nexport interface TimeSpentSecurityConfigurationGqlType {\n unparsedConfig?: Maybe;\n}\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface Tools {\n /**\n * Lists all client exports available to test run.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n availableExports?: Maybe>>;\n awsTools?: Maybe;\n /** A list of all banned candidates. */\n bannedCandidateList?: Maybe>>;\n /**\n * A list of all benefit vouchers that have a limited number available, along with the number still available.\r\n * \r\n * \r\n * - Requires All Permissions: Benefit.Catalog.View\r\n *\n */\n benefitVoucherCount?: Maybe>>;\n /** A list of all cert requirements under review. */\n certRequirementUnderReviewList?: Maybe>>;\n ciscoTools?: Maybe;\n /**\n * The currently selected client.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n currentClient?: Maybe;\n /**\n * A list of all the currently enabled clients by their default client alias.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n defaultClientAliasList?: Maybe>>;\n /**\n * Gets the logic xml.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n downloadLogic?: Maybe;\n /** A list of all downloadable reports for this user. */\n downloadableReportList?: Maybe>>;\n /**\n * A list of all duplicate candidate badge ids\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n * \r\n * - Requires All Permissions: DuplicateCandidates.Email.View\r\n *\n */\n duplicateCandidateBadgeList?: Maybe>>;\n /**\n * A list of all duplicate candidates by name, country and company\r\n * \r\n * \r\n * - Requires All Permissions: DuplicateCandidates.Email.View\r\n *\n */\n duplicateCandidateDemographicsList?: Maybe>>;\n /**\n * A count of all duplicate candidate email addresses\r\n * \r\n * \r\n * - Requires All Permissions: DuplicateCandidates.Email.View\r\n *\n */\n duplicateCandidateEmailAddressCount?: Maybe;\n /**\n * A list of all duplicate candidate email addresses\r\n * \r\n * \r\n * - Requires All Permissions: DuplicateCandidates.Email.View\r\n *\n */\n duplicateCandidateEmailAddressList?: Maybe>>;\n /**\n * A list of all duplicate candidate phone numbers\r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationDuplicatePhoneNumberQueue\r\n * \r\n * - Requires All Permissions: DuplicateCandidates.Phone.View\r\n *\n */\n duplicateCandidatePhoneNumberList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: Exam\r\n *\n */\n examEventDiscountList?: Maybe>>;\n /** A list of all exams under review. */\n examUnderReviewList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: NcarbReports\r\n * \r\n * - Requires All Permissions: Reports.Custom.Ncarb.Eligibility.View\r\n *\n */\n ncarbReports?: Maybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ToolsNCARBTools\r\n *\n */\n ncarbToolsQueries?: Maybe;\n /** The detail type for newly imported exams from the last 30 days. */\n newlyImportedExamDetail?: Maybe>>;\n /** A list of all newly imported exams from the last 30 days. */\n newlyImportedExamsList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ExamAccommodations\r\n * \r\n * - Requires All Permissions: Exam.Accommodations.View\r\n *\n */\n pendingExamAccommList?: Maybe>>;\n /** The detail type for the recently re-imported exams from the last 30 days. */\n recentlyReImportedExamsDetail?: Maybe>>;\n /** A list of all recently re-imported exams from the last 30 days. */\n recentlyReImportedExamsList?: Maybe>>;\n securityConfigurations?: Maybe;\n /**\n * Daily summary of staging data.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingActivityList?: Maybe>>;\n /**\n * A count of all current staging issues that require resolution.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingCandidateErrorCount?: Maybe;\n /**\n * A complete list of all current staging issues that require resolution.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingCandidateErrorList?: Maybe>>;\n /**\n * A count of all current staging issues that require resolution.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingCertRequirementErrorCount?: Maybe;\n /**\n * A complete list of all current staging issues that require resolution.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingCertRequirementErrorList?: Maybe>>;\n /**\n * A count of all current staging issues that require resolution.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingExamErrorCount?: Maybe;\n /**\n * A complete list of all current staging issues that require resolution.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingExamErrorList?: Maybe>>;\n /**\n * A complete list of all current staging exams that are pending information.\r\n * \r\n * \r\n * - Internal accounts only\r\n *\n */\n stagingExamPendingList?: Maybe>>;\n /**\n * Daily summary of staging import data.\r\n * \r\n * \r\n * - Requires All Permissions: ImportActivity.View\r\n *\n */\n stagingImportActivityList?: Maybe>>;\n /**\n * Filter staging imports.\r\n * \r\n * \r\n * - Requires All Permissions: ImportActivity.View\r\n *\n */\n stagingImportFileList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ValidationCodeVerification\r\n * \r\n * - Requires All Permissions: VerifyValidationCode.Modify\r\n *\n */\n validationCode?: Maybe>>;\n vmwareTools?: Maybe;\n /** A list of all watched candidates. */\n watchedCandidateList?: Maybe>>;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsDuplicateCandidateEmailAddressCountArgs {\n requestConfig?: InputMaybe;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsDuplicateCandidateEmailAddressListArgs {\n requestConfig?: InputMaybe;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsNewlyImportedExamDetailArgs {\n request?: InputMaybe;\n requestConfig?: InputMaybe;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsNewlyImportedExamsListArgs {\n request?: InputMaybe;\n requestConfig?: InputMaybe;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsRecentlyReImportedExamsDetailArgs {\n request?: InputMaybe;\n requestConfig?: InputMaybe;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsRecentlyReImportedExamsListArgs {\n request?: InputMaybe;\n requestConfig?: InputMaybe;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsStagingActivityListArgs {\n request: RequestByDateRange;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsStagingImportActivityListArgs {\n request: RequestByDateRange;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsStagingImportFileListArgs {\n request: StagingImportActivityRequest;\n}\n\n\n/**\n * Contains a variety of helper tools for web users.\r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\n */\nexport interface ToolsValidationCodeArgs {\n request: ValidationCodeRequest;\n requestConfig?: InputMaybe;\n}\n\nexport interface TpmReport {\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n candidateFirstName?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n candidateLastName?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n ciscoId?: Maybe;\n country?: Maybe;\n expirationDate?: Maybe;\n externalLoginId?: Maybe;\n initialPrivilegedDate?: Maybe;\n program?: Maybe;\n}\n\nexport interface TpmReportRequest {\n ccatIdList: Array>;\n externalIdList: Array>;\n}\n\nexport interface UnrevokeExamAuthorizationPackRequest {\n candidateId: CandidateIdRequest;\n expkId: Scalars['Int']['input'];\n}\n\nexport interface UpdateAffiliationRequest {\n /** Makes the affiliation unable to be selected by a candidate. Does not remove the record from the database. */\n disabled?: InputMaybe;\n /** This pipe delimited list field, if not null, will require a candidate to enter something into the affiliation email field. The items in this field are the domains that are allowed in the email address. if this field is a blank stirng, anything can be entered. If sub-domains should match, start the pattern with the '@' character. To only include sub-domains, start the pattern with the '.' character. To turn this field into an exclusion list, start the pattern with the '!' character. */\n emailFormat?: InputMaybe;\n /** Determines if an email is required or not. If this field is left null, then an email can't be added at all. False means it can be added, but is not required. True means required. */\n emailRequired?: InputMaybe;\n /** The unique identifier used by any system outside certmetrics to identify the affiliation. If provided without the Id field, the mutation will attempt to update by this externalId. If no match is found, it will create a new affiliation with an externalId with the provided value. */\n externalId?: InputMaybe;\n /** The certmetrics id for the affiliation. */\n id?: InputMaybe;\n /** This RegEx field, if not null, will require a candidate to enter something into the affiliation id field. This field determines how the information in the affiliation id field can look. If this field is a blank string, anything can be entered in affiliation id. */\n idFormat?: InputMaybe;\n /** The display name of the affiliation. */\n name?: InputMaybe;\n /** This RegEx field, if not null, will require a candidate to enter something into the company name field. This field determines how the information in the company name field can look. If this field is a blank string, anything can be entered in company name. */\n otherFormat?: InputMaybe;\n /** The group that this affiliation belongs to according to reports. If one affiliation belongs to a web group, they're all expected to. */\n reportGroup?: InputMaybe;\n /** Determines the type of affiliation. */\n type?: InputMaybe;\n /** The group that this affiliation belongs to according to the website. This field is required to create a new affiliation. */\n webGroup?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\nexport interface UpdateApiAccountRequest {\n /** If true, the api account is treated as if they have all permissions. */\n admin?: InputMaybe;\n /**\n * If this is true, the account is allowed to access any candidate's data without consulting candidate-api-account or the candidate's API access code.\r\n * .\n */\n anyCandidate?: InputMaybe;\n /** The api account being updated, either the id, or login id. */\n apiAccountId?: InputMaybe;\n /** If true, the LoginToken will be replaced with an auto-generated guid. */\n autoGenerateLoginToken?: InputMaybe;\n /** The email address of the person who is responsible for things on the client-side for this account. It is primarily important so we can notify the people on the other side of updates, down-times, etc. */\n contactEmail?: InputMaybe;\n /** The phone number of the person who is responsible for things on the client-side for this account. It is primarily important so we can notify the people on the other side of updates, down-times, etc. */\n contactNumber?: InputMaybe;\n /** If true, the api account is not allowed to access the api. */\n disabled?: InputMaybe;\n /** If this is true, candidates cannot see the account on the web site; they cannot allow/disallow the account&'s access to their data. */\n hidden?: InputMaybe;\n /** Determines the authority/context of the candidate client-id (from candidate-external-id) used in the API. When not set, use dp-id=1 (the id for the internal client-id). */\n idAuthority?: InputMaybe;\n /** Link to cm_hub.dbo.data_provider. For data being created via the API this must NOT be NULL. */\n importDpId?: InputMaybe;\n /** If true, the api account is internal to Alpine. */\n internal?: InputMaybe;\n /** The login id for the api account. This is a method to authenticate with our api in the username/password methodology */\n loginId?: InputMaybe;\n /** The api account's login token used to access our api. */\n loginToken?: InputMaybe;\n /** The name of the api account. */\n name?: InputMaybe;\n /** The URL of the client-side's web site. This is so we have a link to send the candidates to when they want to find out more about the account---when they're deciding whether or not to grant the account access to their data. */\n url?: InputMaybe;\n /** A comma-delimited list of IPv4/IPv6 networks that are allowed to create access tokens via this account. If this is null/empty-string, the whitelist defaults to localhost (127.0.0.1/8). */\n whitelist?: InputMaybe;\n}\n\nexport interface UpdateApiAccountRoles {\n /** The api account being updated, either the id, or login id. */\n apiAccountId?: InputMaybe;\n /** A list of client role ids to add to the api account. */\n clientRolesToAdd?: InputMaybe>>;\n /** A list of client role ids to delete from the api account. */\n clientRolesToDelete?: InputMaybe>>;\n}\n\nexport interface UpdateBadgeCatalogRequest {\n criteriaUrl?: InputMaybe;\n description?: InputMaybe;\n descriptionHtml?: InputMaybe;\n enabled?: InputMaybe;\n externalId: Scalars['String']['input'];\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface UpdateBenefitCatalogLocaliedFieldsRequest {\n benefitCatalogId: Scalars['Int']['input'];\n /** The culture the instruction is localized for. */\n culture: Scalars['String']['input'];\n /** The description for the specific culture. */\n description?: InputMaybe;\n /** The instruction for the specific culture. */\n instruction?: InputMaybe;\n}\n\nexport interface UpdateBenefitCatalogRequest {\n /** Indicates the last date that a candidate is able to claim a granted benefit. */\n claimEndDate?: InputMaybe;\n /** Used to override default sorting. */\n displayOrder?: InputMaybe;\n /** A non-unique token to be used with all benefits granted of this type. */\n globalToken?: InputMaybe;\n /** The primary key of the associated benefit group. */\n groupId?: InputMaybe;\n id: Scalars['Int']['input'];\n /** The name of the benefit. */\n name?: InputMaybe;\n nameAbbr?: InputMaybe;\n /** When true, indicates that the benefit should be visible, even if there is no underlying cert. */\n pinned?: InputMaybe;\n /** A url to be used to redirect candidates to if necessary by a benefit. */\n url?: InputMaybe;\n /** Indicates the last date candidates can view the benefit. */\n viewEndDate?: InputMaybe;\n}\n\nexport interface UpdateBenefitGroupRequest {\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: InputMaybe;\n id: Scalars['Int']['input'];\n /** Group display name. */\n name?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n *\n */\nexport interface UpdateCandidateAffiliationRequest {\n /** The unique identifier for the Candidate at the affiliated organization. This value is restricted by the AffAffidFormat configured setting. */\n affiliateId?: InputMaybe;\n /** The email address that the Candidate is known by at the affiliated organization. This value is restricted by the AffEmailRequired and AffEmailFormat configured settings. */\n email?: InputMaybe;\n /** Unique identifier for the Affiliation that the Candidate will now be affiliated with. */\n id?: InputMaybe;\n /** A Candidate-supplied name of the affiliated organization. This value is restricted by the AffOtherFormat configured setting. */\n otherAffiliationName?: InputMaybe;\n}\n\nexport interface UpdateCandidateAttributeListRequest {\n /** A list of attributes to add/update for the candidate and their values. */\n attributeListToAdd?: InputMaybe>>;\n /** A list of attributes to remove from the candidate (the value field will be ignored). */\n attributeListToDelete?: InputMaybe>>;\n candidateId?: InputMaybe;\n}\n\nexport interface UpdateCandidateAttributeRequestVmGqlType {\n /** The name of the attribute to add/update or delete. */\n name: Scalars['String']['input'];\n /** When adding/updating, the value of the attribute to be created. When deleting, this value is ignored and should be null. */\n value?: InputMaybe;\n}\n\nexport interface UpdateCandidateAuxiliaryRequest {\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n *\n */\n affOtherOk?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.BannedStatus.Modify\r\n *\n */\n bannedUntil?: InputMaybe;\n candidateId?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n certMetricsBadgingEnabled?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: ShareCertMetricsBadging\r\n *\n */\n certMetricsBadgingIdentity?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ImportSettings.Modify\r\n *\n */\n dmgrProtected?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.EmailPreferences.Modify\r\n *\n */\n emailLanguage?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ImportSettings.Modify\r\n *\n */\n emailProtected?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\n */\n fpHint?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\n */\n fpPhrase?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n invalidateAllData?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n message?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.ImportSettings.Modify\r\n *\n */\n nameProtected?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, WebUser\r\n * - Requires All Features: CandidatePreferencesDisableEmails\r\n *\n */\n restrictEmcats?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires Any Features: ShareCredlyBadging, ShareAccredibleBadging\r\n * \r\n * - Admin accounts only\r\n *\n */\n restrictExternalBadging?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamTestCenterRestriction\r\n * \r\n * - Requires All Permissions: Candidate.BannedStatus.Modify\r\n *\n */\n restrictTesting?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamTestCenterRestriction\r\n *\n */\n token1?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamTestCenterRestriction\r\n *\n */\n token2?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamTestCenterRestriction\r\n *\n */\n token3?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: ExamTestCenterRestriction\r\n *\n */\n token4?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.MergeSettings.Modify\r\n *\n */\n unique?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Candidate.WatchStatus.Modify\r\n *\n */\n watchUntil?: InputMaybe;\n}\n\nexport interface UpdateCandidateAuxiliaryResponse {\n bannedEndDate?: Maybe;\n candidateId?: Maybe;\n note?: Maybe;\n restrictTesting?: Maybe;\n updateStatus?: Maybe;\n watchEndDate?: Maybe;\n}\n\nexport interface UpdateCandidateExternalIdRequest {\n candidateId?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileManageCandidateId\r\n * \r\n * - Requires All Permissions: CandidateProfile.ManageCandidateId.Modify\r\n *\n */\n externalId?: InputMaybe;\n id?: InputMaybe;\n preferred?: InputMaybe;\n}\n\nexport interface UpdateCandidateMergeRequest {\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.MergeDetails.Modify\r\n *\n */\n approved?: InputMaybe;\n comment?: InputMaybe;\n id?: InputMaybe;\n loserOverrides?: InputMaybe>>;\n}\n\nexport interface UpdateCandidatePasswordRequest {\n candidateId?: InputMaybe;\n /** When the change is effective. If this is equal - to or older than what is already in the system, the request is rejected. */\n effective?: InputMaybe;\n /** What the candidate's password will be changed to in plain text. */\n newPassword: Scalars['String']['input'];\n /** What the candidate's password currently is in plain text. */\n oldPassword?: InputMaybe;\n}\n\nexport interface UpdateCandidateRequest {\n /** Normally, a request will be rejected if no actual change will be made (assuming all other validation passes). But when this is true, that type of request would be accepted. */\n acceptIfNoChange?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1Business?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1City?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1CountryCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1FaxNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1Line1?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1Line2?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1Line3?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1PhoneNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1PostalCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesPrimary\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryAddress.Modify\r\n *\n */\n addr1State?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2Business?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2City?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2CountryCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2FaxNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2Line1?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2Line2?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2Line3?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2PhoneNumber?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2PostalCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesSecondary\r\n * \r\n * - Requires All Permissions: CandidateProfile.SecondaryAddress.Modify\r\n *\n */\n addr2State?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationAffiliation\r\n * \r\n * - Requires All Permissions: Candidate.Affiliation.Modify\r\n *\n */\n affiliation?: InputMaybe;\n candidateId?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.Modify\r\n *\n */\n companyName?: InputMaybe;\n /**\n * When the change is effective, updates the candidate's date of birth.\r\n * \r\n * \r\n * - Requires All Permissions: Candidate.DateOfBirth.MOdify\r\n *\n */\n dateOfBirth?: InputMaybe;\n /** When the change is effective. If this is equal - to or older than what is already in the system, the request is rejected. */\n effective?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.Modify\r\n *\n */\n emailAddr?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.Modify\r\n *\n */\n localizedAddr1City?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.Modify\r\n *\n */\n localizedAddr1Line1?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.Modify\r\n *\n */\n localizedAddr1Line2?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.Modify\r\n *\n */\n localizedAddr1Line3?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.Modify\r\n *\n */\n localizedAddr1PostalCode?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileAddressesLocalized\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedAddress.Modify\r\n *\n */\n localizedAddr1State?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedInformation.Modify\r\n *\n */\n localizedCompanyName?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedInformation.Modify\r\n *\n */\n localizedNameFirst?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfileLocalizedInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.LocalizedInformation.Modify\r\n *\n */\n localizedNameLast?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n message?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.Names.Modify\r\n *\n */\n nameFirst?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformation\r\n * \r\n * - Requires All Permissions: CandidateProfile.PrimaryInformation.Names.Modify\r\n *\n */\n nameLast?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n * \r\n * - Requires All Permissions: CandidateProfile.PreferredName.Modify\r\n *\n */\n preferredNameFirst?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: CandidateProfilePrimaryInformationPreferredName\r\n * \r\n * - Requires All Permissions: CandidateProfile.PreferredName.Modify\r\n *\n */\n preferredNameLast?: InputMaybe;\n}\n\nexport interface UpdateCandidateSettingFilterRequest {\n /** The id of the candidate setting filter to be updated. */\n id?: InputMaybe;\n /** The list of candidate setting ids to be assigned to a filter. */\n litemIdList?: InputMaybe>>;\n /** The name of the candidate setting filter to be updated. */\n name?: InputMaybe;\n}\n\nexport interface UpdateCandidateSettingListRequest {\n candidateId?: InputMaybe;\n /** A list of setting ids to add for the candidate. */\n settingListToAdd?: InputMaybe>>;\n /** A list of setting ids to remove from the candidate. */\n settingListToDelete?: InputMaybe>>;\n}\n\nexport interface UpdateCandidateTranscriptInclusionsRequest {\n candidateId?: InputMaybe;\n externalId?: InputMaybe;\n id?: InputMaybe;\n inclusions: Array>;\n}\n\nexport interface UpdateCandidateTranscriptRequest {\n addrDisplay?: InputMaybe;\n certDateOk?: InputMaybe;\n creqDateOk?: InputMaybe;\n disabled?: InputMaybe;\n displayPreferredName?: InputMaybe;\n examDateOk?: InputMaybe;\n expireDate?: InputMaybe;\n externalId?: InputMaybe;\n id?: InputMaybe;\n imageOk?: InputMaybe;\n includeAllCerts?: InputMaybe;\n includeAllCreqs?: InputMaybe;\n includeAllExams?: InputMaybe;\n includeAllStandings?: InputMaybe;\n label?: InputMaybe;\n remarks?: InputMaybe;\n standingsDateOk?: InputMaybe;\n}\n\nexport interface UpdateCatalogAttachmentRequest {\n catchId?: InputMaybe;\n enabled?: InputMaybe;\n endDate?: InputMaybe;\n startDate?: InputMaybe;\n targetId?: InputMaybe;\n}\n\nexport interface UpdateCertCatalogRequest {\n /**\n * Enable the e-cert on this catalog.\r\n * \r\n * \r\n * - Requires All Features: CredentialElectronicCertificate\r\n *\n */\n certificateEnabled?: InputMaybe;\n /**\n * Enables the uploading of e-certs. Can not be disabled once enabled.\r\n * \r\n * \r\n * - Requires All Features: CredentialElectronicCertificate\r\n *\n */\n certificateUploadEnabled?: InputMaybe;\n /** A short description of the cert catalog entry for public consumption. */\n description?: InputMaybe;\n /** Used to override default sorting. */\n displayOrder?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n expireDate?: InputMaybe;\n externalId?: InputMaybe;\n /** The primary key of the associated cert group. */\n groupId?: InputMaybe;\n id?: InputMaybe;\n /**\n * Should logo downloads be available to candidates.\r\n * \r\n * \r\n * - Requires All Features: CredentialLogoDownload\r\n *\n */\n logoEnabled?: InputMaybe;\n name?: InputMaybe;\n nameAbbr?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n sunsetDate?: InputMaybe;\n /**\n * If true, certs will not show up on a candidate transcript.\r\n * \r\n * \r\n * - Requires All Features: ShareTranscript\r\n *\n */\n transcriptProhibited?: InputMaybe;\n /**\n * A public Url with information about the cert catalog entry.\r\n * \r\n * \r\n * - Requires All Features: CredentialUrl\r\n *\n */\n url?: InputMaybe;\n}\n\nexport interface UpdateCertGroupRequest {\n /** An optional classification/family/type of the group; if any groups have this set (non-null), then all groups should have one set. The distinct list of all values in the table define the set of classifications used. */\n classification?: InputMaybe;\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: InputMaybe;\n id: Scalars['Int']['input'];\n /** Group display name. */\n name?: InputMaybe;\n /** Optional grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: InputMaybe;\n /** Order of the program groups, if programs is used this must be set for all or alphabetical will be used. */\n programDisplayOrder?: InputMaybe;\n}\n\nexport interface UpdateCertLogicVersionRequest {\n approved: Scalars['Boolean']['input'];\n id: Scalars['Int']['input'];\n}\n\nexport interface UpdateCertRequirementCatalogRequest {\n description?: InputMaybe;\n displayOrder?: InputMaybe;\n docRequired?: InputMaybe;\n endDate?: InputMaybe;\n groupId?: InputMaybe;\n id: Scalars['Int']['input'];\n instructions?: InputMaybe;\n /** Catalog display name. */\n name?: InputMaybe;\n providerRequired?: InputMaybe;\n schedulingUrl?: InputMaybe;\n startDate?: InputMaybe;\n transcriptEnabled?: InputMaybe;\n url?: InputMaybe;\n}\n\nexport interface UpdateCertRequirementGroupRequest {\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: InputMaybe;\n id: Scalars['Int']['input'];\n /** Group display name. */\n name?: InputMaybe;\n /** Optional grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: InputMaybe;\n}\n\nexport interface UpdateCertRequirementRequest {\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n activeDate?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n cocatId?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Features: OtherRequirementUploadCandidateAccess\r\n *\n */\n docChangeable?: InputMaybe;\n docLanguage?: InputMaybe;\n docNotes?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n emailComment?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n expireDate?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n externalId?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n historyComment?: InputMaybe;\n id?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n invalid?: InputMaybe;\n points?: InputMaybe;\n provider?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n reviewState?: InputMaybe;\n /**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\n simulated?: InputMaybe;\n}\n\nexport interface UpdateClientFeatureRequest {\n enabled: Scalars['Boolean']['input'];\n id: Scalars['Int']['input'];\n}\n\n/** Updates an existing client setting in the the client_settings table. */\nexport interface UpdateClientSettingRequest {\n /** The use of this field is determined by the setting; it may or may not be used at all. */\n csetDatetime?: InputMaybe;\n csetId: Scalars['Int']['input'];\n /** The use of this field is determined by the setting; it may or may not be used at all. */\n csetInt?: InputMaybe;\n /** The name of the setting being controlled/defined. Names should be in PascalCase. */\n csetName?: InputMaybe;\n /** The use of this field is determined by the setting; it may or may not be used at all. This is used as COALESCE(nvarchar, varchar). */\n csetNvarchar?: InputMaybe;\n /** The use of this field is determined by the setting; it may or may not be used at all. This is used as COALESCE(nvarchar, varchar). */\n csetVarchar?: InputMaybe;\n}\n\nexport interface UpdateEmailCatalogRequest {\n bcc?: InputMaybe;\n disabled?: InputMaybe;\n from?: InputMaybe;\n fromLabel?: InputMaybe;\n hidden?: InputMaybe;\n id: Scalars['Int']['input'];\n}\n\nexport interface UpdateEmailLocalizationRequest {\n bodyHtml?: InputMaybe;\n bodyPlain?: InputMaybe;\n catalogId: Scalars['Int']['input'];\n cultureInfoName?: InputMaybe;\n subject?: InputMaybe;\n}\n\nexport interface UpdateExamAccommPackRequest {\n docNotes?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires Any Permissions: Exam.Accommodations.Modify\r\n *\n */\n expireDate?: InputMaybe;\n id: Scalars['Int']['input'];\n /**\n * \r\n * \r\n * \r\n * - Requires Any Permissions: Exam.Accommodations.Modify\r\n *\n */\n reviewNotes?: InputMaybe;\n /**\n * \r\n * \r\n * \r\n * - Requires Any Permissions: Exam.Accommodations.Modify\r\n *\n */\n reviewState?: InputMaybe;\n}\n\nexport interface UpdateExamAccommRequest {\n externalNotes?: InputMaybe;\n id: Scalars['Int']['input'];\n}\n\nexport interface UpdateExamAuthorizationNcarbRequest {\n activeDate?: InputMaybe;\n cmcId: Scalars['Int']['input'];\n expireDate?: InputMaybe;\n expkId: Scalars['Int']['input'];\n isRevoked?: InputMaybe;\n}\n\nexport interface UpdateExamAuthorizationPackRequest {\n activeDate: Scalars['CmDateTimeOffset']['input'];\n candidateId: CandidateIdRequest;\n expireDate?: InputMaybe;\n expkId: Scalars['Int']['input'];\n sendOkDate?: InputMaybe;\n}\n\nexport interface UpdateExamCatalogRequest {\n /** A short description of the cert catalog entry for public consumption. */\n description?: InputMaybe;\n /** Used to override default sorting. */\n displayOrder?: InputMaybe;\n /** The last date the exam is to be delivered. Does not affect cert-calculations. */\n endDate?: InputMaybe;\n externalId?: InputMaybe;\n /** The primary key of the associated exam group. */\n groupId?: InputMaybe;\n id?: InputMaybe;\n name?: InputMaybe;\n nameAbbr?: InputMaybe;\n /** The minimum number of CE points earned by this exam. */\n points?: InputMaybe;\n /**\n * A url to display for scheduling. This takes a candidate to wherever they need to go to start scheduling.\r\n * \r\n * \r\n * - Requires All Features: ExamSchedulingUrl\r\n *\n */\n schedulingUrl?: InputMaybe;\n /**\n * Indicated whether score reports are generated for the exam catalog record. Both pass and fail score reports must be uploaded prior to setting this to true.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportEnabled?: InputMaybe;\n /**\n * The last date candidates are able to download score reports for this exam catalog record.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportEndDate?: InputMaybe;\n /**\n * The date that candidates can begin downloading score reports for this exam catalog record.\r\n * \r\n * \r\n * - Requires All Features: ExamScoreReports\r\n *\n */\n scoreReportStartDate?: InputMaybe;\n /** When true, always show/reveal the exam result to candidates (ungraded results are normally not revealed), and custom text will be displayed for the grade instead of what is normally used. */\n showAlteredGrade?: InputMaybe;\n /** The date the exam is to start being delivered. Does not affect cert-calculations. */\n startDate?: InputMaybe;\n /**\n * A public Url with information about the exam catalog entry.\r\n * \r\n * \r\n * - Requires All Features: ExamInformationUrl\r\n *\n */\n url?: InputMaybe;\n}\n\nexport interface UpdateExamGroupRequest {\n /** This is used to override the default sorting, which is alphabetical by the name being displayed. */\n displayOrder?: InputMaybe;\n id: Scalars['Int']['input'];\n /** Group display name. */\n name?: InputMaybe;\n /** Optional grouping used instead of defaults built into the catalog. If using, must be on all groups. */\n program?: InputMaybe;\n /** Order of the program groups, if programs is used this must be set for all or alphabetical will be used. */\n programDisplayOrder?: InputMaybe;\n}\n\nexport interface UpdateExamItemCatalogRequest {\n comment?: InputMaybe;\n id: Scalars['Int']['input'];\n itemCorrectAnswer?: InputMaybe;\n itemScoreMax?: InputMaybe;\n itemScoreWeight?: InputMaybe;\n unscoredForms?: InputMaybe>>;\n}\n\nexport interface UpdateExamRequest {\n comment?: InputMaybe;\n examComment?: InputMaybe;\n expireDate?: InputMaybe;\n form?: InputMaybe;\n grade?: InputMaybe;\n hideUntil?: InputMaybe;\n id: Scalars['Int']['input'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Permissions: Candidate.ExamScoring.Modify\r\n *\n */\n scaledScore?: InputMaybe;\n score?: InputMaybe;\n sendEmail?: InputMaybe;\n /** Can either be OK or Invalid - other options are not permitted at this endpoint. */\n state?: InputMaybe;\n version?: InputMaybe;\n}\n\nexport interface UpdateExamSectionCatalogRequest {\n coverage?: InputMaybe;\n cutScore?: InputMaybe;\n examForm?: InputMaybe;\n high?: InputMaybe;\n id: Scalars['Int']['input'];\n label?: InputMaybe;\n low?: InputMaybe;\n maxScore?: InputMaybe;\n mid?: InputMaybe;\n sectionName?: InputMaybe;\n}\n\n/**\n * Updates exam voucher information.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: Exam.CertMetricsVouchers.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface UpdateExamVoucherRequest {\n activeDate?: InputMaybe;\n candidateId?: InputMaybe;\n dataProviderData?: InputMaybe;\n externalId?: InputMaybe;\n id: Scalars['Int']['input'];\n inactiveDate?: InputMaybe;\n invalid?: InputMaybe;\n maxAttempts?: InputMaybe;\n}\n\nexport interface UpdateFilterRequest {\n criteriaList: Array>;\n description?: InputMaybe;\n id: Scalars['Int']['input'];\n name?: InputMaybe;\n}\n\nexport interface UpdateGeographyRequest {\n /** The list of country codes to be assigned to a geography. */\n countryCodeList?: InputMaybe>>;\n /** The id of the geography to be updated. */\n id?: InputMaybe;\n /** The name of the geography to be updated. */\n name?: InputMaybe;\n}\n\nexport interface UpdateHubLocalizationRequest {\n description?: InputMaybe;\n featureId?: InputMaybe;\n name: Scalars['String']['input'];\n path?: InputMaybe;\n shared?: InputMaybe;\n type: LocType;\n uiType?: InputMaybe;\n value?: InputMaybe;\n}\n\nexport interface UpdateLocalizationListRequest {\n /** The culture that all localizations will be applied to. */\n cultureName: Scalars['String']['input'];\n /** A list of localizations by key and value to operate on. */\n localizationList: Array>;\n /** See LocType enum for more information. */\n type: LocType;\n}\n\nexport interface UpdateNavigationRequest {\n /** The full navigation tree for the given type. */\n navNodes?: InputMaybe>>;\n}\n\nexport interface UpdateNewsArticleRequest {\n body?: InputMaybe;\n ends?: InputMaybe;\n filterId?: InputMaybe;\n headline?: InputMaybe;\n id: Scalars['Int']['input'];\n newsDisplayOrder?: InputMaybe;\n pictureLinkUrl?: InputMaybe;\n starts?: InputMaybe;\n summary?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\nexport interface UpdateOtherAchievementCatalogRequest {\n achievementName?: InputMaybe;\n disabled?: InputMaybe;\n id?: InputMaybe;\n reimbursable?: InputMaybe;\n vendor?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires Any Features: CandidateAccessLoginEMCOtherAchievements\r\n *\n */\nexport interface UpdateOtherAchievementRequest {\n activeDate?: InputMaybe;\n catalogId?: InputMaybe;\n deleted?: InputMaybe;\n expirationDate?: InputMaybe;\n externalId?: InputMaybe;\n id: Scalars['Int']['input'];\n vendor?: InputMaybe;\n verificationUrl?: InputMaybe;\n verified?: InputMaybe;\n}\n\nexport interface UpdatePhysicalFulfillmentRequest {\n exportOkDate?: InputMaybe;\n id: Scalars['Int']['input'];\n}\n\nexport interface UpdateRoleRequest {\n /** The id of the filter to which the role will be assigned. */\n filterId?: InputMaybe;\n /** The id of the role to be updated. */\n id?: InputMaybe;\n /** The name of the role to be updated. If changed, the name will be updated. */\n name?: InputMaybe;\n /** The list of permission names to be assigned to the role. */\n permissionNameList?: InputMaybe>>;\n}\n\nexport interface UpdateStagingCandidateRequest {\n action: StagingCandidateAction;\n id: Scalars['Int']['input'];\n message?: InputMaybe;\n}\n\nexport interface UpdateStagingCertRequirementRequest {\n action: StagingCertRequirementAction;\n id: Scalars['Int']['input'];\n message?: InputMaybe;\n}\n\nexport interface UpdateStagingExamRequest {\n action: StagingExamAction;\n authorizationId?: InputMaybe;\n date?: InputMaybe;\n id: Scalars['Int']['input'];\n message?: InputMaybe;\n}\n\nexport interface UpdateTagDomainRequest {\n disabled?: InputMaybe;\n id: Scalars['Int']['input'];\n name?: InputMaybe;\n tagListToAdd?: InputMaybe>>;\n tagListToDelete?: InputMaybe>>;\n}\n\nexport interface UpdateTagItemRequest {\n catalogId: Scalars['Int']['input'];\n name?: InputMaybe;\n type: RtiCatIdType;\n}\n\nexport interface UpdateWebUserCandidateSettingFilters {\n /** A list of candidate setting filter ids to add to the user. */\n litemFiltersToAdd?: InputMaybe>>;\n /** A list of candidate setting filter ids to delete from the user. */\n litemFiltersToDelete?: InputMaybe>>;\n /** The user being updated, either the id, or login id. */\n webUserId?: InputMaybe;\n}\n\nexport interface UpdateWebUserGeographies {\n /** A list of client geography ids to add to the user. */\n clientGeographiesToAdd?: InputMaybe>>;\n /** A list of client geography ids to delete from the user. */\n clientGeographiesToDelete?: InputMaybe>>;\n /** The user being updated, either the id, or login id. */\n webUserId?: InputMaybe;\n}\n\nexport interface UpdateWebUserRequest {\n /**\n * If true, the user is treated as if they have all permissions. This field is only editable by Admin accounts, and a user cannot edit this field on their own account.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n admin?: InputMaybe;\n /**\n * Restricts the level that WebUsers can access candidates. Restricted, Filtered, or Unrestricted.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n candRestrictType?: InputMaybe;\n /** When a (non-internal) user account is not for an employee of our client, this is used by the client to designate their employer. */\n companyName?: InputMaybe;\n /**\n * If true, the user will no longer be able to login. This field is only editable by Admin accounts, and a user cannot edit this field on their own account.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n disabled?: InputMaybe;\n /** The email address associated with the user account. When this is changed, it sends an email to the new and old addresses to ensure it isn't fraudulent. */\n email?: InputMaybe;\n /**\n * If true, the user is internal to Alpine. This field is only editable by Internal Admin accounts.\r\n * \r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n internal?: InputMaybe;\n /**\n * When set, this is a comma-delimited list of IP-addresses (simple wild-cards supported) that the user is restricted to logging-in from. This is ignored for an administrator. This field is only editable by Admin accounts.\r\n * \r\n * \r\n * - Admin accounts only\r\n *\n */\n loginLocation?: InputMaybe;\n /** The name of the user, usually the first and last names. */\n name?: InputMaybe;\n /** What the new WebUser's password will be changed to in plain text. */\n newPassword?: InputMaybe;\n /** What the old WebUser's password in plain text. */\n oldPassword?: InputMaybe;\n /**\n * If set, this stores the CmRole value that determines basic permissions the user holds in Qlik. Only the values: null, Creator, Contributor, and Consumer are acceptible. This field is only editable by Internal Admin accounts.\r\n * \r\n * \r\n * - Requires All Features: ReportsAdvanced\r\n * \r\n * - Internal accounts only\r\n * \r\n * - Admin accounts only\r\n *\n */\n qlik?: InputMaybe;\n /** The user being updated, either the id, or login id. */\n webUserId?: InputMaybe;\n}\n\nexport interface UpdateWebUserRoles {\n /** A list of client role ids to add to the user. */\n clientRolesToAdd?: InputMaybe>>;\n /** A list of client role ids to delete from the user. */\n clientRolesToDelete?: InputMaybe>>;\n /** The user being updated, either the id, or login id. */\n webUserId?: InputMaybe;\n}\n\nexport interface UploadExamRequest {\n clientId?: InputMaybe;\n email: Scalars['String']['input'];\n examCode: Scalars['String']['input'];\n examDate?: InputMaybe;\n examDpExternalId: Scalars['String']['input'];\n examGrade: Scalars['String']['input'];\n examRegistrationId: Scalars['String']['input'];\n firstName: Scalars['String']['input'];\n lastName: Scalars['String']['input'];\n}\n\nexport interface UploadExamResponse {\n clientID: Scalars['String']['output'];\n email: Scalars['String']['output'];\n examCode: Scalars['String']['output'];\n examGrade: Scalars['String']['output'];\n examRegistrationID: Scalars['String']['output'];\n firstName: Scalars['String']['output'];\n lastName: Scalars['String']['output'];\n updateStatus: Array>;\n}\n\nexport interface UpsertAffiliationRequest {\n /** Makes the affiliation unable to be selected by a candidate. Does not remove the record from the database. */\n disabled?: InputMaybe;\n /** This pipe delimited list field, if not null, will require a candidate to enter something into the affiliation email field. The items in this field are the domains that are allowed in the email address. if this field is a blank stirng, anything can be entered. If sub-domains should match, start the pattern with the '@' character. To only include sub-domains, start the pattern with the '.' character. To turn this field into an exclusion list, start the pattern with the '!' character. */\n emailFormat?: InputMaybe;\n /** Determines if an email is required or not. If this field is left null, then an email can't be added at all. False means it can be added, but is not required. True means required. */\n emailRequired?: InputMaybe;\n /** The unique identifier used by any system outside certmetrics to identify the affiliation. If provided without the Id field, the mutation will attempt to update by this externalId. If no match is found, it will create a new affiliation with an externalId with the provided value. */\n externalId?: InputMaybe;\n /** The certmetrics id for the affiliation. This field is optional to update an existing affiliation. */\n id?: InputMaybe;\n /** This RegEx field, if not null, will require a candidate to enter something into the affiliation id field. This field determines how the information in the affiliation id field can look. If this field is a blank string, anything can be entered in affiliation id. */\n idFormat?: InputMaybe;\n /** The display name of the affiliation. */\n name?: InputMaybe;\n /** This RegEx field, if not null, will require a candidate to enter something into the company name field. This field determines how the information in the company name field can look. If this field is a blank string, anything can be entered in company name. */\n otherFormat?: InputMaybe;\n /** The group that this affiliation belongs to according to reports. If one affiliation belongs to a web group, they're all expected to. */\n reportGroup?: InputMaybe;\n /** Determines the type of affiliation. */\n type?: InputMaybe;\n /** The group that this affiliation belongs to according to the website. This field is required to create a new affiliation. */\n webGroup?: InputMaybe;\n}\n\nexport interface UpsertExamAuthorizationResponse {\n /** The date on which the auth is active. */\n activeDate: Scalars['DateTime']['output'];\n /** External id of the candidate that this auth is for. */\n candidateExternalId: Scalars['String']['output'];\n /** Exam catalog external id. */\n examCode: Scalars['String']['output'];\n /** The date on which the auth expires. */\n expireDate?: Maybe;\n /** A message indicating the result of the upsert operation. */\n message?: Maybe;\n /** The date after which the auth may be sent to the testing data provider. */\n sendOkDate: Scalars['DateTime']['output'];\n}\n\nexport interface UpsertExamItemCatalogRequest {\n comment?: InputMaybe;\n itemCorrectAnswer?: InputMaybe;\n itemName?: InputMaybe;\n itemScoreMax?: InputMaybe;\n itemScoreWeight?: InputMaybe;\n languageId?: InputMaybe;\n unscoredForms?: InputMaybe>>;\n}\n\nexport interface UpsertExamSectionCatalogRequest {\n coverage?: InputMaybe;\n cutScore?: InputMaybe;\n examForm?: InputMaybe;\n high?: InputMaybe;\n id?: InputMaybe;\n label?: InputMaybe;\n low?: InputMaybe;\n maxScore?: InputMaybe;\n mid?: InputMaybe;\n sectionName?: InputMaybe;\n}\n\nexport interface ValidationCode {\n activeDate?: Maybe;\n candidateEmail?: Maybe;\n certification?: Maybe;\n certificationStatus?: Maybe;\n inactiveDate?: Maybe;\n validationCode?: Maybe;\n}\n\nexport interface ValidationCodeRequest {\n validationCodeList: Array>;\n}\n\nexport interface VerifyCandidateSelfMergeRequest {\n jwt: Scalars['String']['input'];\n}\n\nexport interface VerifyVoucherCode {\n candidate?: Maybe;\n dataProvider?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n eventStatus?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n examCode?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n examDeliveredDate?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n examGrade?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n examName?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n examStatus?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n result?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n testCenterId?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n voucherCode?: Maybe;\n}\n\nexport interface VerifyVoucherCodeRequest {\n voucherCodeList: Array;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: VmwareExamVoucherVerification\r\n *\n */\nexport interface VmwareTools {\n /**\n * \r\n * \r\n * \r\n * \r\n * \r\n * - Requires All Features: VmwareExamVoucherVerification\r\n * \r\n * - Admin accounts only\r\n *\n */\n verifyVoucherCodes?: Maybe>>;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: ApiAccount, Candidate\r\n * - Requires All Features: VmwareExamVoucherVerification\r\n *\n */\nexport interface VmwareToolsVerifyVoucherCodesArgs {\n request?: InputMaybe;\n}\n\n/**\n * Defines a request for voiding an eTransaction.\r\n * \r\n * \r\n * - Requires All Permissions: Ecommerce.Transactions.Modify\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface VoidEtransactionRequest {\n candidateId: CandidateIdRequest;\n transactionId: Scalars['Int']['input'];\n}\n\n/**\n * Shows voucher information.\r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface Voucher {\n /** Used to group a set of vouchers together. */\n batchId?: Maybe;\n /** This indicates the benefit the voucher has been assigned to. */\n benefitId?: Maybe;\n catalog?: Maybe;\n /** When this voucher was created */\n created?: Maybe;\n /** The unique ID of the voucher data. */\n externalId?: Maybe;\n /**\n * \r\n * \r\n * Searchable.\r\n * \r\n * Sortable.\n */\n id: Scalars['Int']['output'];\n /** The last date the voucher is usable (it is still active on this date). Null means it never goes inactive. */\n inactiveDate?: Maybe;\n /** Indicates whether the voucher is available to be assigned to a candidate. */\n invalid?: Maybe;\n updated?: Maybe;\n}\n\n/**\n * \r\n * \r\n * \r\n * - Requires All Features: Benefit\r\n *\n */\nexport interface VoucherCount {\n benefitCatalog?: Maybe;\n benefitCatalogId: Scalars['Int']['output'];\n remainingCount: Scalars['Int']['output'];\n totalCount: Scalars['Int']['output'];\n totalUsed: Scalars['Int']['output'];\n}\n\nexport interface VoucherCountByBatch {\n batchId?: Maybe;\n expiredCount: Scalars['Int']['output'];\n invalidatedCount: Scalars['Int']['output'];\n remainingCount: Scalars['Int']['output'];\n totalCount: Scalars['Int']['output'];\n usedCount: Scalars['Int']['output'];\n}\n\nexport interface VoucherCountByBatchRequest {\n batchId?: InputMaybe;\n}\n\nexport interface VoucherUploadRequest {\n inactiveDate?: InputMaybe;\n tokenId: Scalars['String']['input'];\n}\n\n/**\n * Returns a list of candidates who have been watched.\r\n * \r\n * - Disallowed Account Types: Candidate\r\n * - Requires All Permissions: WatchedCandidateList.View\r\n * \r\n * - Must have candidate access\r\n *\n */\nexport interface WatchedCandidatesReport {\n candidate?: Maybe;\n cmcId: Scalars['Int']['output'];\n lastExamDate?: Maybe;\n watchUntil: Scalars['CmDate']['output'];\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface WebUser {\n admin: Scalars['Boolean']['output'];\n candRestrictType: WuserCandRestrictType;\n companyName?: Maybe;\n created: Scalars['CmDateTimeOffset']['output'];\n disabled: Scalars['Boolean']['output'];\n email?: Maybe;\n id: Scalars['Int']['output'];\n internal: Scalars['Boolean']['output'];\n isDuplicateEmail?: Maybe;\n lastPwdUpdate?: Maybe;\n login: Scalars['String']['output'];\n loginLocation?: Maybe;\n name: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ReportsAdvanced\r\n *\n */\n qlik?: Maybe;\n updated?: Maybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface WebUserAccount {\n candidateSettingFilters?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: OtherRequirementUploadCandidateAccess\r\n * \r\n * - Requires All Permissions: OtherRequirements.ReviewList.View\r\n *\n */\n certRequirementsPendingReviewCount?: Maybe;\n emailRequestList?: Maybe>>;\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: ExamSecurity\r\n * \r\n * - Requires All Permissions: Exam.ReviewList.View\r\n *\n */\n examsPendingReviewCount?: Maybe;\n geographies?: Maybe>>;\n historyList?: Maybe>>;\n id: Scalars['Int']['output'];\n login: Scalars['String']['output'];\n /**\n * \r\n * \r\n * \r\n * - Requires All Features: MergeCandidates\r\n * \r\n * - Requires All Permissions: MergeList.View\r\n *\n */\n pendingMergesCount?: Maybe;\n permissionList?: Maybe>>;\n roles?: Maybe>>;\n webUser?: Maybe;\n}\n\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface WebUserAccountPermissionListArgs {\n request?: InputMaybe;\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface WebUserHistory {\n created: Scalars['CmDateTimeOffset']['output'];\n /** This indicates the user responsible. */\n creator?: Maybe;\n id: Scalars['Int']['output'];\n /** The message that was logged */\n message?: Maybe;\n /** If the activity affected something else in the database, this points to the record as appropriate. */\n targetId?: Maybe;\n /** The type of the history entry. */\n type: WuhType;\n /** Indicates the user this pertains to. */\n webUserId: Scalars['Int']['output'];\n}\n\n/**\n * \r\n * \r\n * - Disallowed Account Types: Candidate\n */\nexport interface WebUserIdRequest {\n /** The CertMetrics WebUser Id. When this is set, all other fields are ignored. */\n id?: InputMaybe;\n /** The unique login id for the WebUser account. This is used to find a WebUser when WebUser Id is not supplied. */\n login?: InputMaybe;\n}\n\nexport interface WebUserPermissionListRequest {\n includeAvailable?: InputMaybe;\n}\n\nexport enum WuhType {\n /** CookieAgrSigned */\n CookieAgrSigned = 'CookieAgrSigned',\n /** EditBcat */\n EditBcat = 'EditBcat',\n /** EditCcat */\n EditCcat = 'EditCcat',\n /** EditClientFeature */\n EditClientFeature = 'EditClientFeature',\n /** EditCocat */\n EditCocat = 'EditCocat',\n /** EditCog */\n EditCog = 'EditCog',\n /** EditCrcat */\n EditCrcat = 'EditCrcat',\n /** EditEmcat */\n EditEmcat = 'EditEmcat',\n /** EditExcat */\n EditExcat = 'EditExcat',\n /** EditIcat */\n EditIcat = 'EditIcat',\n /** EditLocalization */\n EditLocalization = 'EditLocalization',\n /** EditNewsArticle */\n EditNewsArticle = 'EditNewsArticle',\n /** EditStandingTemplate */\n EditStandingTemplate = 'EditStandingTemplate',\n /** EditUser */\n EditUser = 'EditUser',\n /** EditWebUserClientRole */\n EditWebUserClientRole = 'EditWebUserClientRole',\n /** ImpersonateCandidate */\n ImpersonateCandidate = 'ImpersonateCandidate',\n /** ImpersonateUser */\n ImpersonateUser = 'ImpersonateUser',\n /** Login */\n Login = 'Login',\n /** Logout */\n Logout = 'Logout',\n /** PermissionChange */\n PermissionChange = 'PermissionChange',\n /** WebToolActivity */\n WebToolActivity = 'WebToolActivity'\n}\n\nexport enum WuserCandRestrictType {\n /** Filtered */\n Filtered = 'Filtered',\n /** Restricted */\n Restricted = 'Restricted',\n /** Unrestricted */\n Unrestricted = 'Unrestricted'\n}\n\n/** Contains a variety of helper links for Xvoucher candidate egress sso. */\nexport interface XvoucherSsoEgress {\n dashboard?: Maybe;\n}\n\n\n export interface PossibleTypesResultData {\n possibleTypes: {\n [key: string]: string[]\n }\n }\n const result: PossibleTypesResultData = {\n \"possibleTypes\": {}\n};\n export default result;\n ","import { FcatQueueType, FulfStatus, PhysicalFulfillment } from '../graphql';\r\n\r\nexport enum FulfillmentStatus {\r\n\tFailed = 'Failed',\r\n\tCompleted = 'Completed',\r\n\tPending = 'Pending',\r\n\tOrdered = 'Ordered',\r\n\tAvailable = 'Available',\r\n\tNever = 'Never',\r\n\tManual = 'Manual',\r\n}\r\n\r\nexport const calculateFulfStatus = (\r\n\tfulf: PhysicalFulfillment,\r\n\tisPast?: (date: Date) => boolean\r\n): FulfillmentStatus => {\r\n\tlet certIsExpired = false;\r\n\r\n\t//Account for fulfillments that are not tied to any cert\r\n\tif (fulf.cert === null) {\r\n\t\tif (fulf.fulfillmentCatalog.queueType === FcatQueueType.Never) {\r\n\t\t\treturn FulfillmentStatus.Never;\r\n\t\t} else if (fulf.fulfillmentCatalog.queueType === FcatQueueType.Manual) {\r\n\t\t\treturn FulfillmentStatus.Manual;\r\n\t\t}\r\n\t}\r\n\r\n\tconst certExpireDate = fulf.cert?.expireDate;\r\n\tif (certExpireDate) {\r\n\t\tif (isPast) {\r\n\t\t\tcertIsExpired = isPast(certExpireDate);\r\n\t\t} else {\r\n\t\t\tcertIsExpired = dateIsPast(certExpireDate);\r\n\t\t}\r\n\t}\r\n\tif (fulf.status === FulfStatus.Failed) {\r\n\t\treturn FulfillmentStatus.Failed;\r\n\t} else if (fulf.status === FulfStatus.Ok) {\r\n\t\treturn FulfillmentStatus.Completed;\r\n\t} else if (fulf.pendingDmgr || fulf.pendingRequeue) {\r\n\t\treturn FulfillmentStatus.Pending;\r\n\t} else if (fulf.status === null) {\r\n\t\tif (fulf.exportOkDate && !fulf.exported) {\r\n\t\t\treturn FulfillmentStatus.Ordered;\r\n\t\t} else if (!fulf.exportOkDate && certIsExpired) {\r\n\t\t\treturn FulfillmentStatus.Never;\r\n\t\t} else {\r\n\t\t\treturn FulfillmentStatus.Available;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst dateIsPast = (targetDate: Date) => new Date(targetDate) < new Date();\r\n\r\nexport const fulfillmentStatusSort: { [key in FulfillmentStatus]: number } = {\r\n\tPending: 0,\r\n\tAvailable: 1,\r\n\tFailed: 2,\r\n\tOrdered: 3,\r\n\tCompleted: 4,\r\n\tNever: 5,\r\n\tManual: 6,\r\n};\r\n","import { FieldFunctionOptions, InMemoryCacheConfig } from '@apollo/client/core';\r\nimport { introspection } from '@ats/api/cm';\r\n\r\n// https://www.apollographql.com/docs/react/caching/cache-field-behavior#merging-arrays-of-non-normalized-objects\r\nconst mergeArrayByField =\r\n\t(field: string) =>\r\n\t(\r\n\t\texisting = [],\r\n\t\tincoming: any[],\r\n\t\t{ readField, mergeObjects }: FieldFunctionOptions, Record>\r\n\t) => {\r\n\t\tconst merged: any[] = existing ? existing.slice(0) : [];\r\n\t\tconst keyToIndex: Record = Object.create(null);\r\n\t\tif (existing) {\r\n\t\t\texisting.forEach((item, index) => {\r\n\t\t\t\tkeyToIndex[readField(field, item)] = index;\r\n\t\t\t});\r\n\t\t}\r\n\t\tincoming.forEach(item => {\r\n\t\t\tconst name = readField(field, item);\r\n\t\t\tconst index = keyToIndex[name];\r\n\t\t\tif (typeof index === 'number') {\r\n\t\t\t\tmerged[index] = mergeObjects(merged[index], item);\r\n\t\t\t} else {\r\n\t\t\t\tkeyToIndex[name] = merged.length;\r\n\t\t\t\tmerged.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn merged;\r\n\t};\r\n\r\nexport const APOLLO_CACHE_CONFIG: InMemoryCacheConfig = {\r\n\ttypePolicies: {\r\n\t\tCandidateAccount: {\r\n\t\t\tkeyFields: ['cmcId'],\r\n\t\t\tfields: {\r\n\t\t\t\ttranscriptDetail(_, { args, toReference }) {\r\n\t\t\t\t\treturn toReference({\r\n\t\t\t\t\t\t__typename: 'CandidateTranscript',\r\n\t\t\t\t\t\tid: args.id,\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tattributes: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tcertRequirementList: { merge: false },\r\n\t\t\t\tbenefitList: { merge: false },\r\n\t\t\t\texamAccommPackList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tExam: {\r\n\t\t\tfields: {\r\n\t\t\t\timageList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tcommentList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tsectionList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\titemList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tviolationList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tCandidate: {\r\n\t\t\tkeyFields: (storeObject, context) => {\r\n\t\t\t\tif (Object.keys(storeObject).includes('rowId')) {\r\n\t\t\t\t\treturn ['cmcId', 'rowId'];\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn ['cmcId'];\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfields: {\r\n\t\t\t\tidentificationList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tCandidateAffiliation: {\r\n\t\t\tkeyFields: false,\r\n\t\t},\r\n\t\tCandidateAuxiliary: {\r\n\t\t\tkeyFields: ['cmcId'],\r\n\t\t},\r\n\t\tIsoCountry: {\r\n\t\t\tkeyFields: ['code'],\r\n\t\t},\r\n\t\tIsoCountrySubdivision: {\r\n\t\t\tkeyFields: ['code'],\r\n\t\t},\r\n\t\tClientRole: {\r\n\t\t\tfields: {\r\n\t\t\t\tpermissions: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tClientSponsor: {\r\n\t\t\tkeyFields: [],\r\n\t\t\tfields: {\r\n\t\t\t\tfeatures: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tlocalizationList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tCandidateSettingAssoc: {\r\n\t\t\tkeyFields: ['cmcId', 'settingItemId'],\r\n\t\t},\r\n\t\tCertUsedItem: {\r\n\t\t\tkeyFields: false,\r\n\t\t},\r\n\t\tCertLogicItemResponse: {\r\n\t\t\tkeyFields: false,\r\n\t\t},\r\n\t\tCertCurrentProgressResponse: {\r\n\t\t\tkeyFields: false,\r\n\t\t},\r\n\t\tDuplicateCandidateResponse: {\r\n\t\t\tkeyFields: false,\r\n\t\t},\r\n\t\tEmailContextOptionResponse: {\r\n\t\t\tkeyFields: ['type', 'id'],\r\n\t\t},\r\n\t\tETransaction: {\r\n\t\t\tkeyFields: ['transactionId'],\r\n\t\t},\r\n\t\tExamAccomm: {\r\n\t\t\tkeyFields: ['id'],\r\n\t\t},\r\n\t\tExamCatalog: {\r\n\t\t\tfields: {\r\n\t\t\t\tscoreReportList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\texamSectionCatalogList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\texamItemCatalogList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tLocalizationResponse: {\r\n\t\t\tkeyFields: ['name', 'type'],\r\n\t\t\tfields: {\r\n\t\t\t\tvalue: {\r\n\t\t\t\t\tread(value, { readField }) {\r\n\t\t\t\t\t\tif (value || value?.trim() === '') {\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst defaultValue = readField('defaultValue');\r\n\t\t\t\t\t\treturn defaultValue || null;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tPublicLocalization: {\r\n\t\t\tkeyFields: ['name', 'type'],\r\n\t\t},\r\n\t\tTagDomain: {\r\n\t\t\tfields: {\r\n\t\t\t\ttagItemList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tTools: {\r\n\t\t\tkeyFields: false,\r\n\t\t\tmerge(existing, incoming) {\r\n\t\t\t\treturn { ...existing, ...incoming };\r\n\t\t\t},\r\n\t\t\tfields: {\r\n\t\t\t\tduplicateCandidateBadgeList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tduplicateCandidateDemographicsList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tduplicateCandidateEmailAddressList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tduplicateCandidatePhoneNumberList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tstagingExamPendingList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tdefaultClientAliasList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tstagingCandidateErrorList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tstagingCertRequirementErrorList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tbenefitVoucherCount: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tVoucherCountByBatch: {\r\n\t\t\tkeyFields: ['batchId'],\r\n\t\t},\r\n\t\tQuery: {\r\n\t\t\tfields: {\r\n\t\t\t\tnewsArticleList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t\tfilterList: {\r\n\t\t\t\t\tmerge: false,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tNcarbToolsQueries: {\r\n\t\t\tkeyFields: false,\r\n\t\t\tmerge: true,\r\n\t\t\tfields: {\r\n\t\t\t\tfetchDelayList: {\r\n\t\t\t\t\tmerge(existing = [], incoming: any[]) {\r\n\t\t\t\t\t\treturn [...existing, ...incoming];\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tfetchDelayClientSettings: {\r\n\t\t\t\t\tmerge: mergeArrayByField('csetName'),\r\n\t\t\t\t},\r\n\t\t\t\tjurisdictionList: {\r\n\t\t\t\t\tmerge(existing = [], incoming: any[]) {\r\n\t\t\t\t\t\treturn [...existing, ...incoming];\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t\tClientSetting: {\r\n\t\t\tkeyFields: ['csetId'],\r\n\t\t\tmerge: true,\r\n\t\t},\r\n\t\tFetchDelayListResponse: {\r\n\t\t\tkeyFields: ['litemId'],\r\n\t\t\tmerge: true,\r\n\t\t},\r\n\t\tEtransactionItemCatalog: {\r\n\t\t\tkeyFields: ['externalId'],\r\n\t\t},\r\n\t},\r\n\tpossibleTypes: introspection.possibleTypes,\r\n};\r\n","import { DOCUMENT, ViewportScroller } from '@angular/common';\r\nimport { Inject } from '@angular/core';\r\n\r\nexport class CmViewportScroller implements ViewportScroller {\r\n\tprivate offset: () => [number, number] = () => [0, 0];\r\n\r\n\tconstructor(\r\n\t\tprivate readonly scrollElementSelector: string,\r\n\t\t@Inject(DOCUMENT) private readonly document: Document,\r\n\t\tprivate readonly window: Window\r\n\t) {}\r\n\r\n\t/**\r\n\t * Configures the top offset used when scrolling to an anchor.\r\n\t * @param offset A position in screen coordinates (a tuple with x and y values)\r\n\t * or a function that returns the top offset position.\r\n\t *\r\n\t */\r\n\tsetOffset(offset: [number, number] | (() => [number, number])): void {\r\n\t\tif (Array.isArray(offset)) {\r\n\t\t\tthis.offset = () => offset;\r\n\t\t} else {\r\n\t\t\tthis.offset = offset;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the current scroll position.\r\n\t * @returns The position in screen coordinates.\r\n\t */\r\n\tgetScrollPosition(): [number, number] {\r\n\t\tconst scrollEl = this.document.querySelector(this.scrollElementSelector);\r\n\t\tif (this.supportScrollRestoration() && scrollEl) {\r\n\t\t\treturn [scrollEl.scrollLeft, scrollEl.scrollTop];\r\n\t\t} else {\r\n\t\t\treturn [0, 0];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the scroll position.\r\n\t * @param position The new position in screen coordinates.\r\n\t */\r\n\tscrollToPosition(position: [number, number]): void {\r\n\t\tconst scrollEl = this.document.querySelector(this.scrollElementSelector);\r\n\t\tif (this.supportScrollRestoration() && scrollEl) {\r\n\t\t\tscrollEl.scrollTo({ left: position[0], top: position[1] });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls to an element and attempts to focus the element.\r\n\t *\r\n\t * Note that the function name here is misleading in that the target string may be an ID for a\r\n\t * non-anchor element.\r\n\t *\r\n\t * @param target The ID of an element or name of the anchor.\r\n\t *\r\n\t * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\r\n\t * @see https://html.spec.whatwg.org/#scroll-to-fragid\r\n\t */\r\n\tscrollToAnchor(target: string): void {\r\n\t\tif (!this.supportsScrolling()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// This is needed for elements to be loaded on the screen. The whole function could be spotty\r\n\t\t// because it depends on how quickly the elements render. We are not using it yet because anchorScrolling\r\n\t\t// is disabled by default and we have not enabled it.\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst elSelected = this.findAnchorFromDocument(this.document, target);\r\n\r\n\t\t\tif (elSelected) {\r\n\t\t\t\tthis.scrollToElement(elSelected);\r\n\t\t\t\t// After scrolling to the element, the spec dictates that we follow the focus steps for the\r\n\t\t\t\t// target. Rather than following the robust steps, simply attempt focus.\r\n\t\t\t\t//\r\n\t\t\t\t// @see https://html.spec.whatwg.org/#get-the-focusable-area\r\n\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\r\n\t\t\t\t// @see https://html.spec.whatwg.org/#focusable-area\r\n\t\t\t\telSelected.focus();\r\n\t\t\t}\r\n\t\t}, 300);\r\n\t}\r\n\r\n\t/**\r\n\t * Disables automatic scroll restoration provided by the browser.\r\n\t */\r\n\tsetHistoryScrollRestoration(scrollRestoration: 'auto' | 'manual'): void {\r\n\t\tif (this.supportScrollRestoration()) {\r\n\t\t\tconst history = this.window.history;\r\n\t\t\tif (history && history.scrollRestoration) {\r\n\t\t\t\thistory.scrollRestoration = scrollRestoration;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls to an element using the native offset and the specified offset set on this scroller.\r\n\t *\r\n\t * The offset can be used when we know that there is a floating header and scrolling naively to an\r\n\t * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\r\n\t */\r\n\tprivate scrollToElement(el: HTMLElement): void {\r\n\t\tconst rect = el.getBoundingClientRect();\r\n\t\tconst scrollEl = this.document.querySelector(this.scrollElementSelector);\r\n\t\tconst left = rect.left + scrollEl.scrollLeft;\r\n\t\tconst top = rect.top + scrollEl.scrollTop;\r\n\t\tconst offset = this.offset();\r\n\t\tscrollEl.scrollTo({ left: left - offset[0], top: top - offset[1] });\r\n\t}\r\n\r\n\tprivate supportScrollRestoration(): boolean {\r\n\t\ttry {\r\n\t\t\tif (!this.supportsScrolling()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t// The `scrollRestoration` property could be on the `history` instance or its prototype.\r\n\t\t\tconst scrollRestorationDescriptor =\r\n\t\t\t\tthis.getScrollRestorationProperty(this.window.history) ||\r\n\t\t\t\tthis.getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\r\n\t\t\t// We can write to the `scrollRestoration` property if it is a writable data field or it has a\r\n\t\t\t// setter function.\r\n\t\t\treturn (\r\n\t\t\t\t!!scrollRestorationDescriptor &&\r\n\t\t\t\t!!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set)\r\n\t\t\t);\r\n\t\t} catch {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate supportsScrolling(): boolean {\r\n\t\ttry {\r\n\t\t\treturn !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\r\n\t\t} catch {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getScrollRestorationProperty(obj: any): PropertyDescriptor | undefined {\r\n\t\treturn Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\r\n\t}\r\n\r\n\tprivate findAnchorFromDocument(document: Document, target: string): HTMLElement | null {\r\n\t\tconst documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\r\n\r\n\t\tif (documentResult) {\r\n\t\t\treturn documentResult;\r\n\t\t}\r\n\r\n\t\t// `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\r\n\t\t// have to traverse the DOM manually and do the lookup through the shadow roots.\r\n\t\tif (\r\n\t\t\ttypeof document.createTreeWalker === 'function' &&\r\n\t\t\tdocument.body &&\r\n\t\t\t((document.body as any).createShadowRoot || document.body.attachShadow)\r\n\t\t) {\r\n\t\t\tconst treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\r\n\t\t\tlet currentNode = treeWalker.currentNode as HTMLElement | null;\r\n\r\n\t\t\twhile (currentNode) {\r\n\t\t\t\tconst shadowRoot = currentNode.shadowRoot;\r\n\r\n\t\t\t\tif (shadowRoot) {\r\n\t\t\t\t\t// Note that `ShadowRoot` doesn't support `getElementsByName`\r\n\t\t\t\t\t// so we have to fall back to `querySelector`.\r\n\t\t\t\t\tconst result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\r\n\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentNode = treeWalker.nextNode() as HTMLElement | null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, Renderer2 } from '@angular/core';\r\nimport { CmAuthService, TWO_STEP_STORE } from '../services';\r\n\r\n@Directive()\r\nexport abstract class HiddenFormPost implements AfterViewInit {\r\n\t@Input() path: string;\r\n\t@Input() targetWindow: '_blank' | '_self' | '_parent' | '_top';\r\n\tprotected basePath: string;\r\n\r\n\tconstructor(private el: ElementRef, private auth: CmAuthService, private renderer: Renderer2) {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.renderer.listen(this.el.nativeElement, 'click', () => this.handleClick());\r\n\t}\r\n\r\n\tprivate handleClick() {\r\n\t\ttry {\r\n\t\t\tconst url = this.basePath ? this.basePath + '/' + this.path : this.path;\r\n\t\t\tconst form: HTMLFormElement = this.renderer.createElement('form');\r\n\t\t\tthis.renderer.setAttribute(form, 'action', url);\r\n\t\t\tthis.renderer.setAttribute(form, 'method', 'post');\r\n\t\t\tthis.renderer.setAttribute(form, 'hidden', 'true');\r\n\t\t\tthis.renderer.setAttribute(form, 'target', this.targetWindow);\r\n\t\t\tconst inp = this.renderer.createElement('input');\r\n\t\t\tthis.renderer.setAttribute(inp, 'type', 'text');\r\n\t\t\tthis.renderer.setAttribute(inp, 'name', 'Authorization');\r\n\t\t\tthis.renderer.setAttribute(inp, 'value', `Bearer ${this.auth.getAuthToken()}`);\r\n\t\t\tif (this.auth.getTwoStepToken()) {\r\n\t\t\t\tconst inp2 = this.renderer.createElement('input');\r\n\t\t\t\tthis.renderer.setAttribute(inp2, 'type', 'text');\r\n\t\t\t\tthis.renderer.setAttribute(inp2, 'name', TWO_STEP_STORE);\r\n\t\t\t\tthis.renderer.setAttribute(inp2, 'value', `${this.auth.getTwoStepToken()}`);\r\n\t\t\t\tthis.renderer.appendChild(form, inp2);\r\n\t\t\t}\r\n\t\t\tthis.renderer.appendChild(form, inp);\r\n\t\t\tconst body = this.renderer.selectRootElement('body', true);\r\n\t\t\tthis.renderer.appendChild(body, form);\r\n\t\t\tform.submit();\r\n\t\t\t// This is commented out because it is the only thing I can think of that might be causing\r\n\t\t\t// the issue we keep getting in the error logger that we cannot reproduce.\r\n\t\t\t// We are leaving this here so we can add it back in if we still get the error in the error logger.\r\n\t\t\t// this.renderer.removeChild(body, form);\r\n\t\t} catch (err) {\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`Problem in SSO click handler ${JSON.stringify(\r\n\t\t\t\t\terr\r\n\t\t\t\t)} | Auth token ${!!this.auth.getAuthToken()} | 2 step ${!!this.auth.getTwoStepToken()}`\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n","import { SplitPascalException } from '@ats/utility';\r\n\r\nexport const CM_SPLIT_PASCAL_EXCEPTIONS: SplitPascalException[] = [\r\n\t{ initialValue: 'CEActivity', updatedValue: 'CE Activity' },\r\n\t{ initialValue: 'ImageURL', updatedValue: 'Image URL' },\r\n\t{ initialValue: 'CriteriaURL', updatedValue: 'Criteria URL' },\r\n\t{ initialValue: 'ExternalID', updatedValue: 'External ID' },\r\n\t{ initialValue: 'CADCExclude', updatedValue: 'CADC Exclude' },\r\n\t{ initialValue: 'PDF', updatedValue: 'PDF' },\r\n\t{ initialValue: 'CMC', updatedValue: 'CMC' },\r\n\t{ initialValue: 'AffiliationID', updatedValue: 'Affiliation ID' },\r\n\t{ initialValue: 'OK', updatedValue: 'OK' },\r\n];\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { inject, ModuleWithProviders, NgModule, provideAppInitializer } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { Router, RouterModule } from '@angular/router';\nimport { LocalizationService } from '@cm/core/localization';\nimport { CmEventService } from '@cm/core/system';\nimport {\n\tCmAuthGuard,\n\tCmCrcatTypeGuard,\n\tCmCreqTypeGuard,\n\tCmFeatureGuard,\n\tCmIntentGuard,\n\tCmLocalizationGuard,\n\tCmPublicFeaturesGuard,\n\tCmUnsavedChangesGuard,\n} from './guards';\nimport { AuthRedirectGuard } from './guards/auth-redirect.guard';\nimport { formErrorFocusInitializerFactory } from './initializers';\nimport { CmAuthTokenInterceptor, CmLoadingInterceptor, CmLoggingInterceptor } from './interceptors';\nimport { CoreConfig } from './models';\nimport { CmBooleanPipe, CmLocalizePipe } from './pipes';\nimport {\n\tCmAuthService,\n\tCmCookiePolicyService,\n\tCmFeatureService,\n\tCmFormErrorService,\n\tCmLocalizationService,\n\tCmMissingLocalizationService,\n\tCmRouterErrorService,\n\tCmSettingsService,\n\tCmSSOService,\n\tCmThemeService,\n\tCmTimeoutService,\n} from './services';\nimport { CORE_CONFIG_TOKEN, LOC_PORTAL_TYPE } from './tokens';\n\n@NgModule({\n\timports: [CommonModule, RouterModule, MatDialogModule],\n\tdeclarations: [CmLocalizePipe, CmBooleanPipe],\n\texports: [CmLocalizePipe, CmBooleanPipe],\n})\nexport class CmCoreModule {\n\tconstructor(private readonly routerErrors: CmRouterErrorService) {}\n\n\tstatic forRoot(config: CoreConfig): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: CmCoreModule,\n\t\t\tproviders: [\n\t\t\t\tCmAuthGuard,\n\t\t\t\tAuthRedirectGuard,\n\t\t\t\tCmAuthService,\n\t\t\t\tCmThemeService,\n\t\t\t\tCmFeatureService,\n\t\t\t\tCmFormErrorService,\n\t\t\t\tCmSSOService,\n\t\t\t\tCmLocalizationService,\n\t\t\t\tCmLocalizePipe,\n\t\t\t\tCmBooleanPipe,\n\t\t\t\tCmMissingLocalizationService,\n\t\t\t\tCmCrcatTypeGuard,\n\t\t\t\tCmPublicFeaturesGuard,\n\t\t\t\tCmFeatureGuard,\n\t\t\t\tCmSettingsService,\n\t\t\t\tCmCreqTypeGuard,\n\t\t\t\tCmUnsavedChangesGuard,\n\t\t\t\tCmCookiePolicyService,\n\t\t\t\tCmRouterErrorService,\n\t\t\t\tCmLocalizationGuard,\n\t\t\t\tCmIntentGuard,\n\t\t\t\t{\n\t\t\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\t\t\tuseClass: CmLoadingInterceptor,\n\t\t\t\t\tmulti: true,\n\t\t\t\t\tdeps: [CmEventService],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\t\t\tuseClass: CmAuthTokenInterceptor,\n\t\t\t\t\tmulti: true,\n\t\t\t\t\tdeps: [CmAuthService, CmSettingsService, Router, CmTimeoutService],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\t\t\tuseClass: CmLoggingInterceptor,\n\t\t\t\t\tmulti: true,\n\t\t\t\t\tdeps: [CmEventService, LocalizationService, Router],\n\t\t\t\t},\n\t\t\t\t{ provide: CORE_CONFIG_TOKEN, useValue: config },\n\t\t\t\t{ provide: LOC_PORTAL_TYPE, useValue: config.portal },\n\t\t\t\tprovideAppInitializer(() => {\n\t\t\t\t\tconst initializerFn = formErrorFocusInitializerFactory(inject(DOCUMENT));\n\t\t\t\t\treturn initializerFn();\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t}\n}\n","export function formErrorFocusInitializerFactory(doc: Document): () => void {\n\treturn (): void => {\n\t\tdoc.addEventListener('submit', submitEvent => {\n\t\t\tconst firstInputWithError: HTMLInputElement = (submitEvent.target as HTMLFormElement).querySelector(\n\t\t\t\t'input.ng-invalid'\n\t\t\t);\n\t\t\tif (firstInputWithError) {\n\t\t\t\tfirstInputWithError.focus();\n\t\t\t}\n\t\t});\n\t};\n}\n","/** @deprecated */\nexport const ERROR_GUIDS: { [key: string]: string } = {\n\tGUID_3efdebe4129f4b97923f93729b4185d1: 'Core/Error.GUID.3efdebe4129f4b97923f93729b4185d1',\n\tGUID_aeced4e7935e4ad7b7033a00cae7ce52: 'Core/Error.GUID.aeced4e7935e4ad7b7033a00cae7ce52',\n\tGUID_281712bdc76e45578c1972c59dc8e7b3:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.281712bdc76e45578c1972c59dc8e7b3',\n\tGUID_e70f817b343c4d01adb10c9b8f803a34:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.e70f817b343c4d01adb10c9b8f803a34',\n\tGUID_200b93db5da24725a93098c4f6b08046:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.200b93db5da24725a93098c4f6b08046',\n\tGUID_4f7e9e7703f14f6ba05e75eb6df88d31:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.4f7e9e7703f14f6ba05e75eb6df88d31',\n\tGUID_a0c6448e32a54e2cbceeed388615c97b:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.a0c6448e32a54e2cbceeed388615c97b',\n\tGUID_03378066bf6b4860b7aba4d5e7573314:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.03378066bf6b4860b7aba4d5e7573314',\n\tGUID_669b087c7a4149b881d8b3142cbfebcf:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.669b087c7a4149b881d8b3142cbfebcf',\n\tGUID_10a781939f3e45cb8ee9631831486ab3:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.10a781939f3e45cb8ee9631831486ab3',\n\tGUID_cb675a646f874433a644c31bb6bd1357:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.cb675a646f874433a644c31bb6bd1357',\n\tGUID_af3d920b1ebf483bb75c112920ea4203:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.af3d920b1ebf483bb75c112920ea4203',\n\tGUID_d1a77c8c9c824cb891fec6b77d9012d8:\n\t\t'CandidateProfile.PrimaryInformation.Affiliation/Error.GUID.d1a77c8c9c824cb891fec6b77d9012d8',\n\tGUID_4713a092237041b6ba861ff284a95a00: 'Tagging/Error.GUID.4713a092237041b6ba861ff284a95a00',\n\tGUID_730835942eb245fca93279e688ff42b1: 'Core/Error.GUID.730835942eb245fca93279e688ff42b1',\n\tGUID_3917904bbd174c6989da28ecf48465dc: 'Core/Error.GUID.3917904bbd174c6989da28ecf48465dc',\n\tGUID_181ff1f2712840b9a1c51df0e89f781d: 'Core/Error.GUID.181ff1f2712840b9a1c51df0e89f781d',\n\tGUID_360836083bb0429b938d2e6da2703a39: 'Core/Error.GUID.360836083bb0429b938d2e6da2703a39',\n\tGUID_5279dca9b5b848aeb3034332646067fc: 'Core/Error.GUID.5279dca9b5b848aeb3034332646067fc',\n\tGUID_0ad817d9b202419eb25ba2a93430be83: 'Core/System.Global.Notification.NoChanges',\n\tGUID_949807cca5a84dfe85c9456cc45548b4: 'Core/Error.GUID.949807cca5a84dfe85c9456cc45548b4',\n\tGUID_31de40b13ee5464f92f4baef09c189ce: 'Core/Error.GUID.949807cca5a84dfe85c9456cc45548b4',\n\tGUID_3ec0ba6614824d739ecfe5daf13db583:\n\t\t'UserTwoStepAuthentication/Error.GUID.3ec0ba6614824d739ecfe5daf13db583',\n\tGUID_c71d8e61c5d94d35bf47bdb7a7d210e1: 'Core/Error.GUID.c71d8e61c5d94d35bf47bdb7a7d210e1',\n\tGUID_7fab0f358b504243be0c14d317806ff5: 'Core/Error.GUID.7fab0f358b504243be0c14d317806ff5',\n\tGUID_082741d7073c409880e4e4aaf4a2ff11: 'Core/Error.GUID.082741d7073c409880e4e4aaf4a2ff11',\n\tGUID_3d9f264260c342038fbc9061c8bf0c57: 'Exam/Error.GUID.3d9f264260c342038fbc9061c8bf0c57',\n\tGUID_8d55c522ad13470cb4f46f453dd9bf0a: 'Exam/Error.GUID.8d55c522ad13470cb4f46f453dd9bf0a',\n\tGUID_0938d22c550b40b990ace5d9ed81c494: 'Core/Error.GUID.0938d22c550b40b990ace5d9ed81c494',\n\tGUID_3c3f102afd144114bd6a72752c83c7a3: 'Core/Error.GUID.3c3f102afd144114bd6a72752c83c7a3',\n\tGUID_71d535637b834d2fb94ffe06251c75e1: 'Core/Error.GUID.71d535637b834d2fb94ffe06251c75e1',\n\tGUID_506eff69d94442a7a63ffe60261f3bc8:\n\t\t'CandidateAccess.Login/Error.GUID.506eff69d94442a7a63ffe60261f3bc8',\n\tGUID_a6b433ba53ea44f2981e3fae44851ffc:\n\t\t'CandidateAccess.Login/Error.GUID.a6b433ba53ea44f2981e3fae44851ffc',\n\tGUID_5f105fdce3f945e8a49e8d384cb834f5: 'Core/Error.GUID.SystemError',\n\tGUID_11945915d3eb4a03b55a4ec74110a92e: 'Core/Error.GUID.SystemError',\n\tGUID_4ab87866d4fc4beb9e55c3c76e9ad9ba: 'Core/Error.GUID.SystemError',\n\tGUID_a900daccb95746f886cc659230f6808c: 'Core/Error.GUID.SystemError',\n\tGUID_e4ee4ab7edc246be80977fbc07dcd1f4: 'Core/Error.GUID.TryAgain',\n\tGUID_499ed929ea6f4e218b4be0a487de7ec2: 'Core/Error.GUID.TryAgain',\n\tGUID_ff685f2ec5f04ce1aa14828f8744755c: 'Core/Error.GUID.TryAgain',\n\tGUID_4755b2563eaa424dbef5a7a85784a0ab: 'Core/Error.GUID.TryAgain',\n\tGUID_51de9a1420294b6b9672baa2d9305cd7: 'Core/Error.GUID.TryAgain',\n\tGUID_6bdd6e29b47c4ddebbb4bac5a7dd2c0f: 'Core/Error.GUID.TryAgain',\n\tGUID_79a96d9aff604b488b61c4e30866c5bb: 'Core/Error.GUID.TryAgain',\n\tGUID_71147c55ba4340089f613ecc74bbb2d8: 'Core/Error.GUID.TryAgain',\n\tGUID_ef0e1c2d79574db7bf35e036cd8b6de8: 'Core/Error.GUID.TryAgain',\n\tGUID_8c9cdfb47178426e9e7a106b8679fc31: 'Core/Error.GUID.TryAgain',\n\tGUID_0c50e1a4e68045bfaaaa696fab344bdd: 'Core/Error.GUID.TryAgain',\n\tGUID_5f0afcf740524c2fae9c6b4ebe189c7c: 'Core/Error.GUID.TryAgain',\n\tGUID_65f3cde1bce74eda9b70e6eef2d40206: 'Core/Error.GUID.TryAgain',\n\tGUID_9e9cfe42032a43019d9bb390cefc6014: 'Core/Error.GUID.TryAgain',\n\tGUID_b1832ce32a9f47a49a0dfe3bbe0f7d4f: 'Core/Error.GUID.TryAgain',\n\tGUID_e4887a240d5d42aab92bfbe6fbc7f991: 'Core/Error.GUID.TryAgain',\n\tGUID_c271a4ac4b554eea85be315500ef25c3: 'Core/Error.GUID.TryAgain',\n\tGUID_0a2b32e07d904b159c1f7b274fd10ee9: 'Core/Error.GUID.TryAgain',\n\tGUID_ab568720e99f4580ac11fa53789d2dc4: 'Core/Error.GUID.TryAgain',\n\tGUID_553d0f3a2d3f46fc82a9298441eb47ef: 'Core/Error.GUID.TryAgain',\n\tGUID_394532dcff2e46979ca3eb51267d22fb: 'Core/Error.GUID.TryAgain',\n\tGUID_e79680922643436bbdbcd570ac9e3340: 'Core/Error.GUID.TryAgain',\n\tGUID_c8394367a0694a8a8a37b450113dcde2: 'Core/Error.GUID.TryAgain',\n\tGUID_96ce7b5829bb4d8eb9184a2821feffe4: 'Core/Error.GUID.TryAgain',\n\tGUID_ba6c3126056842f283e93adb0b98c553: 'Core/Error.GUID.TryAgain',\n\tGUID_6d27be0634c241eaaeb802b306946d89: 'Core/Error.GUID.TryAgain',\n\tGUID_4ab47cae6a724d31af6cfd0853269bbd: 'Core/Error.GUID.TryAgain',\n\tGUID_394191c13dca40f6b5813a1a5be2b45b: 'Core/Error.GUID.TryAgain',\n\tGUID_3d69668959fb474b809c36b3d0b28e68: 'Core/Error.GUID.TryAgain',\n\tGUID_3dec766078574db3a73840ac2844dcb9: 'Core/Error.GUID.TryAgain',\n\tGUID_2668c2795a624cb585dc63ee8e8ed489: 'Core/Error.GUID.TryAgain',\n\tGUID_51a337944b72436187fd1b7a056f4afc: 'Core/Error.GUID.TryAgain',\n\tGUID_8a0a0a4d98ed497d8e06369cf0e7e768: 'Core/Error.GUID.TryAgain',\n\tGUID_d9b40d4ff3cc486caa0bbf1745b3069c: 'Core/Error.GUID.TryAgain',\n\tGUID_0c6c6c2b2b3046c8a1c44ee3b3e9141e: 'Core/Error.GUID.TryAgain',\n\tGUID_9c91d86b5f5c4f9cb4ed736c2fdd1aa7: 'Core/Error.GUID.TryAgain',\n\tGUID_d0d450ba40494d0a88d581498457aa64: 'Core/Error.GUID.TryAgain',\n\tGUID_116c342509ca4182a291ad3b7b4c55c7: 'Core/Error.GUID.TryAgain',\n\tGUID_42445bd9e4794e9c9ac05c45ce002892: 'Core/Error.GUID.TryAgain',\n\tGUID_455a95d9dbe44af1afa37f72884ef062: 'Core/Error.GUID.TryAgain',\n\tGUID_8644c9bb4f43466fb5e8bb927575a6ec: 'Core/Error.GUID.TryAgain',\n\tGUID_a187a42c65c04556a3f20246ac30b8d2: 'Core/Error.GUID.UIError',\n\tGUID_437669c9d77b45f8949bc3b115560324: 'Core/Error.GUID.UIError',\n\tGUID_7f6ea6dab341412ca68ab9a2825ebc36: 'Core/Error.GUID.UIError',\n\tGUID_461a6d344d5840398e75b193dc93d71f: 'Core/Error.GUID.UIError',\n\tGUID_cb15a8a9bb77483cbffbd46939deddbe: 'Core/Error.GUID.UIError',\n\tGUID_2ccecbf9ee7a4215ab3e41835426f9c6: 'Core/Error.GUID.UIError',\n\tGUID_8ccadd7ee37e4248b4446f84563a2db5: 'Core/Error.GUID.UIError',\n\tGUID_01310719cf3e42d281dda8ae52171b68: 'Core/Error.GUID.UIError',\n\tGUID_98ca214affad4d5f9fccb239a17bf203: 'Core/Error.GUID.UIError',\n\tGUID_6d429e3c1deb4247af679f9670889ca9: 'Core/Error.GUID.UIError',\n\tGUID_fc11c94852b94f629f190ad64e4e03ef: 'Core/Error.GUID.UIError',\n\tGUID_b31325942c8140c9acb4d9b4babbb200: 'Core/Error.GUID.UIError',\n\tGUID_2dd1b77903224823b7456546ecd90df1: 'Core/Error.GUID.UIError',\n\tGUID_7b22408e106048db92913fb08dc0c4ae: 'Core/Error.GUID.UIError',\n\tGUID_1744c1e5d133482da0bcef98fd6498e1: 'Core/Error.GUID.UIError',\n\tGUID_0485eff4a9004ee6bfc7d081074fa74b: 'Core/Error.GUID.UIError',\n\tGUID_39b60838239b46cb87b191dcbd45da6f: 'Core/Error.GUID.UIError',\n\tGUID_edaf945850464f0b9a30426b272d028a: 'Core/Error.GUID.UIError',\n\tGUID_0ff985d2411c4e1e9aab13cd88dbf63b: 'Core/Error.GUID.UIError',\n\tGUID_3eacf772d04548b4beeeb2894c64873b: 'Core/Error.GUID.UIError',\n\tGUID_4d193b2185b54ea0a055d556576a1989: 'Core/Error.GUID.UIError',\n\tGUID_f966592881424ae98607be4aa5d62265: 'Core/Error.GUID.UIError',\n\tGUID_c990fff4ca6c44909e7c5d42859caf59: 'Core/Error.GUID.UIError',\n\tGUID_666067d8880e498abbf7927327fe836f: 'Core/Error.GUID.UIError',\n\tGUID_99730d2042374f19b19c0297dc37d03f: 'Core/Error.GUID.UIError',\n\tGUID_b08474f1877f40288e5ddba7f30a6f60: 'Core/Error.GUID.UIError',\n\tGUID_dec57ec6ec124f67a87513546020f771: 'Core/Error.GUID.UIError',\n\tGUID_0410dfe5708c449e8c29958ade9208da: 'Core/Error.GUID.UIError',\n\tGUID_3fccb1b346af4fc0a3161bd7e9a2e17c: 'Core/Error.GUID.UIError',\n\tGUID_36679acce4134562b4407a17f8516d45: 'Core/Error.GUID.UIError',\n\tGUID_a8b206a106ad441caaa36d851857985f: 'Core/Error.GUID.UIError',\n\tGUID_83f919bf184f4ec38259394484e928d0: 'Core/Error.GUID.UIError',\n\tGUID_3875762cf3654f0d905932d160154fbd: 'Core/Error.GUID.UIError',\n\tGUID_53f2680248cf4d03993c4b91e3387f9d: 'Core/Error.GUID.UIError',\n\tGUID_6b553e11f16746b8a34690b5b67f2d1f: 'Core/Error.GUID.UIError',\n\tGUID_0bb12ef6c3c6400495c161f14d2217e8: 'Core/Error.GUID.UIError',\n\tGUID_012aacc090774da682df74516f009219: 'Core/Error.GUID.UIError',\n\tGUID_b061ead98808428c8b655d9e3d29a455: 'Core/Error.GUID.UIError',\n\tGUID_dfae02d2b02b44389aab84ed7be2f4aa: 'Core/Error.GUID.UIError',\n\tGUID_2eb57b88e85b45bca4a80fc0c7d5a088: 'Core/Error.GUID.UIError',\n\tGUID_33c2180859904ab08cdd027687849c5d: 'Core/Error.GUID.UIError',\n\tGUID_0904472e21df4a06b7f847fe5f5070fe: 'Core/Error.GUID.UIError',\n\tGUID_459fd41499cd40a3a959639a2da2f92e: 'Core/Error.GUID.UIError',\n\tGUID_ba687ccb51c248589bcc6a54862ca106: 'Core/Error.GUID.UIError',\n\tGUID_7f404c37f40246d9a4fb120798d4730e: 'Core/Error.GUID.UIError',\n\tGUID_7a21b9a627ba4d6bbe553b489541fb31: 'Core/Error.GUID.UIError',\n\tGUID_c257cba532e14e9e810de2d907179950: 'Core/Error.GUID.UIError',\n\tGUID_7f2e1e2f140c402193706b2d7d865043: 'Core/Error.GUID.UIError',\n\tGUID_b0e61d60267d4d64b8bd2701606257f9: 'Core/Error.GUID.UIError',\n\tGUID_4d54601bca09417b94adfb5aeb216dfe: 'Core/Error.GUID.UIError',\n\tGUID_50a7ace27b4f4fd4b1dc6ebf4944d063: 'Core/Error.GUID.UIError',\n\tGUID_a231a66537b94ef3a456c70ebcba1009: 'Core/Error.GUID.UIError',\n\tGUID_f0ff1fe4a1ec4693affec4cc74ed430b: 'Core/Error.GUID.UIError',\n\tGUID_2f086fb580ed4641a028b1bc1dd43caf: 'Core/Error.GUID.UIError',\n\tGUID_15dcab03796547d8a537fb27805edde1: 'Core/Error.GUID.UIError',\n\tGUID_867de616815d4e18ba89aa0b097e232e: 'Core/Error.GUID.UIError',\n\tGUID_7d08282e038b41f48c05a864fdafaa4b: 'Core/Error.GUID.UIError',\n\tGUID_5365b79dbb46409a888993ae39d19594: 'Core/Error.GUID.UIError',\n\tGUID_c07e15bbdc0e46bb9ce186a618b55fb1: 'Core/Error.GUID.UIError',\n\tGUID_7be52347260e46fbbdb3a7f80f932b56: 'Core/Error.GUID.UIError',\n\tGUID_02c136f6eccb455884229f40976bdb4c: 'Core/Error.GUID.UIError',\n\tGUID_34b91807869d4f0c9eb7ad94cda6896e: 'Core/Error.GUID.UIError',\n\tGUID_02b2d94bc9d144cd9a693a0d47a0f8aa: 'Core/Error.GUID.UIError',\n\tGUID_11e517e8ce6a493ea5f35fd0538e2df3: 'Core/Error.GUID.UIError',\n\tGUID_8355d31d41744ebb892215d68deb52cd: 'Core/Error.GUID.UIError',\n\tGUID_abcf947ac78d42f6b06c641fab2c5ce6: 'Core/Error.GUID.UIError',\n\tGUID_b913ce0861d148b69bb5f0d296926fd5: 'Core/Error.GUID.UIError',\n\tGUID_2930b1735cff4944a76e5fefd9f5e78a: 'Core/Error.GUID.UIError',\n\tGUID_53fdc362cef948c880f336c65f7d78ce: 'Core/Error.GUID.UIError',\n\tGUID_7478c4aa45394b4ab9c1858239e76666: 'Core/Error.GUID.UIError',\n\tGUID_6e620795eb394295bcf99ce1eb510b63: 'Core/Error.GUID.UIError',\n\tGUID_c8ed113fcdf44b959a14b1a488b50d5a: 'Core/Error.GUID.UIError',\n\tGUID_7ea9e4ea8795412f94128f6ea76b76b3: 'Core/Error.GUID.UIError',\n\tGUID_418252a9be5f42be88a997db937628a3: 'Core/Error.GUID.UIError',\n\tGUID_b0853fd8d2ef44cfb96bbe0403fd311b: 'Core/Error.GUID.UIError',\n\tGUID_39f7a2ff80ed43589cff8284d4e16560: 'Core/Error.GUID.UIError',\n\tGUID_4376e248a036418ba7dc00e409cafa8a: 'Core/Error.GUID.UIError',\n\tGUID_5d011dfcb8d34a02bf0ace50a85fcb9c: 'Core/Error.GUID.UIError',\n\tGUID_24379a9fb7f242ecb4930da57761ab55: 'Core/Error.GUID.UIError',\n\tGUID_2236eb45b4fc471c94a7d69bf4901b48: 'Core/Error.GUID.UIError',\n\tGUID_0cb1b1db207c478782230540c2cea03f: 'Core/Error.GUID.UIError',\n\tGUID_faf3edb29dac4436b58b013472cada64: 'Core/Error.GUID.UIError',\n\tGUID_c11c7701f2d145878a42b7c83fd5d3f3: 'Core/Error.GUID.UIError',\n\tGUID_275b0fc2cb7540018f411114779febeb: 'Core/Error.GUID.UIError',\n\tGUID_9406ef8e815240d9a4e0a76815eea7ad: 'Core/Error.GUID.UIError',\n\tGUID_68cd39e8849e417f8c364ccd0390e3ae: 'Core/Error.GUID.UIError',\n\tGUID_7bf2ddefdc6641a0978dc7db94443e7c:\n\t\t'CandidateAccess/Error.GUID.7bf2ddefdc6641a0978dc7db94443e7c',\n\tGUID_081a212a11974dc3957c1d25db3d9ca3: 'Core/Error.GUID.081a212a11974dc3957c1d25db3d9ca3',\n\tGUID_07a91aa70facc74ebd1e70cb6686eb02: 'Benefit/Error.GUID.07a91aa70facc74ebd1e70cb6686eb02',\n\tGUID_da68b68ccfabbab8654d7df9dcd2480b: 'Benefit/Error.GUID.da68b68ccfabbab8654d7df9dcd2480b',\n\tGUID_2349a3fec05b081e10091750b6273073: 'Benefit/Error.GUID.2349a3fec05b081e10091750b6273073',\n\tGUID_d592d1bc82ea498e8f8ae00ab493ab68:\n\t\t'CandidateAccess.Login.SelfRegistration/Error.GUID.d592d1bc82ea498e8f8ae00ab493ab68',\n\tGUID_30177188a31a4f5d9918100f7f28fda8:\n\t\t'CandidateAccess.Login.SelfRegistration/Error.GUID.30177188a31a4f5d9918100f7f28fda8',\n\tGUID_ef67892b75f6e67a49330e15ab7416f7:\n\t\t'CandidateAccess.Login.SelfRegistration/Error.GUID.ef67892b75f6e67a49330e15ab7416f7',\n\tGUID_928b2623e68334241167cd0bc9c1b08d: 'Core/Error.GUID.ErrorWithSupportRequired',\n\tGUID_3041fd8982e4880be3947e575de6d932:\n\t\t'Credential.ElectronicCertificate.PublicDownload/Public.Ecertificate.Search.Error.GUID.3041fd8982e4880be3947e575de6d932',\n\tGUID_53dc701a18074dfe88f5a9f0fc460a11:\n\t\t'CandidateAccess.Integration.Ingress/SSO.Content.InvalidAssertion',\n\tGUID_d1c09d65794a4dbea930f79fa7ac3b9d:\n\t\t'CandidateAccess.Login.SelfRegistration/Error.GUID.d1c09d65794a4dbea930f79fa7ac3b9d',\n};\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, UrlTree } from '@angular/router';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { Observable, map, of, switchMap } from 'rxjs';\r\nimport { CmRouteGuard } from '../models';\r\nimport { CmAuthService } from '../services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AuthRedirectGuard extends CmRouteGuard {\r\n\tconstructor(\r\n\t\tprivate readonly auth: CmAuthService,\r\n\t\tprivate readonly settings: SettingsService,\r\n\t\tprivate readonly router: Router\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\treturn this.auth.token$.pipe(\r\n\t\t\tswitchMap(token =>\r\n\t\t\t\t!token\r\n\t\t\t\t\t? of(this.router.createUrlTree(this.settings.routeWithContext(['login'])))\r\n\t\t\t\t\t: this.checkAuthGuard$(route)\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate checkAuthGuard$(route: ActivatedRouteSnapshot) {\r\n\t\tconst path = route.routeConfig.data?.redirectOnAuthFail\r\n\t\t\t? route.routeConfig.data.redirectOnAuthFail\r\n\t\t\t: ['access-denied'];\r\n\r\n\t\treturn this.auth.guard$.pipe(\r\n\t\t\tmap(guard =>\r\n\t\t\t\tthis.passesGuardCheck(guard, route.routeConfig.data)\r\n\t\t\t\t\t? true\r\n\t\t\t\t\t: this.router.createUrlTree(this.settings.routeWithContext(path))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { iif, Observable, of } from 'rxjs';\r\nimport { map, mergeMap, take } from 'rxjs/operators';\r\nimport { CmRouteGuard } from '../models';\r\nimport { CmAuthService, CmSettingsService } from '../services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmAuthGuard extends CmRouteGuard implements CanActivate {\r\n\tconstructor(private auth: CmAuthService, private settings: CmSettingsService, private router: Router) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\treturn this.auth.token$.pipe(\r\n\t\t\tmergeMap(token =>\r\n\t\t\t\tiif(\r\n\t\t\t\t\t() => !token,\r\n\t\t\t\t\tof(this.router.createUrlTree(this.settings.route(['login']))),\r\n\t\t\t\t\tthis.checkAuthGuard$(route)\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\ttake(1)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate checkAuthGuard$(route: ActivatedRouteSnapshot) {\r\n\t\treturn this.auth.guard$.pipe(\r\n\t\t\tmap(guard =>\r\n\t\t\t\tthis.passesGuardCheck(guard, route.routeConfig.data)\r\n\t\t\t\t\t? true\r\n\t\t\t\t\t: this.router.createUrlTree(this.settings.route(['access-denied']))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { CertRequirementCatalogDetail } from '@ats/api/cm';\r\nimport { Apollo, gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { CrcatGuardData } from '../models';\r\nimport { CmSettingsService } from '../services';\r\n\r\nconst CRCAT_QUERY = gql`\r\n\tquery certRequirementCatalogDetail($request: RequestByIdOrExternalId!) {\r\n\t\tcertRequirementCatalogDetail(request: $request) {\r\n\t\t\tid\r\n\t\t\ttype\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n@Injectable()\r\nexport class CmCrcatTypeGuard implements CanActivate {\r\n\tconstructor(\r\n\t\tprivate readonly apollo: Apollo,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly settings: CmSettingsService\r\n\t) {}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\treturn this.checkCrcatType$(route);\r\n\t}\r\n\r\n\tprivate checkCrcatType$(route: ActivatedRouteSnapshot): Observable {\r\n\t\tconst crcatGuardData: CrcatGuardData = (route.data || {}).crcatGuard || null;\r\n\r\n\t\tif (\r\n\t\t\t!crcatGuardData ||\r\n\t\t\t!crcatGuardData.allowedTypes ||\r\n\t\t\t!crcatGuardData.idParam ||\r\n\t\t\t!route.paramMap.has(crcatGuardData.idParam)\r\n\t\t) {\r\n\t\t\tthrow new Error('CmCrcatTypeGuard missing critical data on route');\r\n\t\t}\r\n\r\n\t\treturn this.apollo\r\n\t\t\t.query<{ certRequirementCatalogDetail: Pick }>({\r\n\t\t\t\tquery: CRCAT_QUERY,\r\n\t\t\t\tvariables: {\r\n\t\t\t\t\trequest: {\r\n\t\t\t\t\t\tid: +route.paramMap.get(crcatGuardData.idParam),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(({ data }) => (data.certRequirementCatalogDetail || {}).type),\r\n\t\t\t\tmap(\r\n\t\t\t\t\ttype =>\r\n\t\t\t\t\t\tcrcatGuardData.allowedTypes.includes(type) ||\r\n\t\t\t\t\t\tthis.router.createUrlTree(this.settings.route(['not-found']))\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { CandidateAccount } from '@ats/api/cm';\r\nimport { CmSettingsService } from '@ats/cm/core';\r\nimport { Apollo, gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { CreqGuardData } from '../models';\r\n\r\nconst SP_CRCAT_QUERY = gql`\r\n\tquery candidateCReq($candidate: CandidateIdRequest, $creq: RequestByIdOrExternalId!) {\r\n\t\tcandidateAccount(request: $candidate) {\r\n\t\t\tcmcId\r\n\t\t\tcertRequirementDetail(request: $creq) {\r\n\t\t\t\tid\r\n\t\t\t\tcmcId\r\n\t\t\t\tcertRequirementCatalog {\r\n\t\t\t\t\tid\r\n\t\t\t\t\ttype\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nconst CP_CRCAT_QUERY = gql`\r\n\tquery candidateCReq($creq: RequestByIdOrExternalId!) {\r\n\t\tcandidateAccount {\r\n\t\t\tcmcId\r\n\t\t\tcertRequirementDetail(request: $creq) {\r\n\t\t\t\tid\r\n\t\t\t\tcmcId\r\n\t\t\t\tcertRequirementCatalog {\r\n\t\t\t\t\tid\r\n\t\t\t\t\ttype\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n@Injectable()\r\nexport class CmCreqTypeGuard implements CanActivate {\r\n\tconstructor(\r\n\t\tprivate readonly apollo: Apollo,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly settings: CmSettingsService\r\n\t) {}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\treturn this.checkCreqType$(route);\r\n\t}\r\n\r\n\tprivate checkCreqType$(route: ActivatedRouteSnapshot): Observable {\r\n\t\tconst creqGuardData: CreqGuardData = (route.data || {}).creqGuard || null;\r\n\t\tconst creqId = +route.paramMap.get(creqGuardData.idParam);\r\n\t\tconst candidateId = this.getCandidateId(route, (creqGuardData || {}).candidateIdParam);\r\n\r\n\t\tif (!creqGuardData || !creqGuardData.allowedTypes || !creqId) {\r\n\t\t\tthrow new Error('CmCreqTypeGuard missing critical data on route');\r\n\t\t}\r\n\r\n\t\tconst variables = {\r\n\t\t\tcreq: {\r\n\t\t\t\tid: creqId,\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tif (candidateId !== null) {\r\n\t\t\tvariables['candidate'] = {\r\n\t\t\t\tcmcId: candidateId,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn this.apollo\r\n\t\t\t.query<{ candidateAccount: Pick }>({\r\n\t\t\t\tquery: candidateId !== null ? SP_CRCAT_QUERY : CP_CRCAT_QUERY,\r\n\t\t\t\tvariables,\r\n\t\t\t})\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(\r\n\t\t\t\t\t({ data }) =>\r\n\t\t\t\t\t\t(((data.candidateAccount || {}).certRequirementDetail || {}).certRequirementCatalog || {}).type\r\n\t\t\t\t),\r\n\t\t\t\tmap(\r\n\t\t\t\t\ttype =>\r\n\t\t\t\t\t\t(!!type && creqGuardData.allowedTypes.includes(type)) ||\r\n\t\t\t\t\t\tthis.router.createUrlTree(this.settings.route(['not-found']))\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t}\r\n\r\n\tprivate getCandidateId(route: ActivatedRouteSnapshot, param: string): number | null {\r\n\t\tif (!param) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (route.paramMap.has(param)) {\r\n\t\t\treturn +route.paramMap.get(param);\r\n\t\t}\r\n\r\n\t\tif (route.parent) {\r\n\t\t\treturn this.getCandidateId(route.parent, param);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { mapTo, take } from 'rxjs/operators';\r\nimport { CmFeatureService, CmSettingsService } from '../services';\r\n\r\n@Injectable()\r\nexport class CmFeatureGuard implements CanActivate {\r\n\tconstructor(private settings: CmSettingsService, private features: CmFeatureService) {}\r\n\r\n\tcanActivate(): Observable {\r\n\t\treturn this.features.fetchPublicFeatures$(this.settings.client).pipe(take(1), mapTo(true));\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\nimport {\n\tActivatedRouteSnapshot,\n\tCanActivate,\n\tCanDeactivate,\n\tRouter,\n\tRouterStateSnapshot,\n\tUrlTree,\n} from '@angular/router';\nimport { CmAuthService, CmSettingsService } from '@ats/cm/core';\nimport { AtsStoreService } from '@ats/store';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map, take, tap } from 'rxjs/operators';\n\nconst URL_SEGMENT_EXCLUSIONS = ['public', 'session-expired'];\n\n@Injectable()\nexport class CmIntentGuard implements CanActivate, CanDeactivate {\n\tprivate readonly _redirectKey = 'cmRedirectUrl';\n\n\tconstructor(\n\t\tprivate readonly settings: CmSettingsService,\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly router: Router,\n\t\tprivate readonly store: AtsStoreService\n\t) { }\n\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n\t\tconst isAuthenticated$ = this.auth.token$.pipe(\n\t\t\ttake(1),\n\t\t\tmap(token => !!token)\n\t\t);\n\n\t\tconst culture$ = this.settings.culture$.pipe(take(1));\n\t\treturn combineLatest([isAuthenticated$, culture$]).pipe(\n\t\t\ttap(([isAuthenticated, culture]) => {\n\t\t\t\tconst formattedUrl = state.url.replace(`/${this.settings.client}/${culture.code}`, '');\n\t\t\t\tif (\n\t\t\t\t\t!isAuthenticated &&\n\t\t\t\t\t!formattedUrl.startsWith('/login') &&\n\t\t\t\t\t!this.isSSO(formattedUrl) &&\n\t\t\t\t\t!URL_SEGMENT_EXCLUSIONS.some(segment => formattedUrl.includes(segment))\n\t\t\t\t) {\n\t\t\t\t\tthis.store.saveToStore(this._redirectKey, formattedUrl, 20);\n\t\t\t\t}\n\t\t\t}),\n\t\t\tmap(() => true)\n\t\t);\n\t}\n\n\tcanDeactivate(\n\t\tcomponent: any,\n\t\tcurrentRoute: ActivatedRouteSnapshot,\n\t\tcurrentState: RouterStateSnapshot,\n\t\tnextState?: RouterStateSnapshot\n\t): Observable {\n\t\tconst redirectUrl = this.store.getFromStore(this._redirectKey);\n\t\treturn this.settings.culture$.pipe(\n\t\t\ttake(1),\n\t\t\tmap(culture => {\n\t\t\t\tconst formattedRedirectUrl = `/${this.settings.client}/${culture.code}${redirectUrl}`;\n\t\t\t\tconst formattedUrl = nextState.url.replace(`/${this.settings.client}/${culture.code}`, '');\n\t\t\t\tif (\n\t\t\t\t\tredirectUrl &&\n\t\t\t\t\t!(nextState.url.includes('login') && !formattedUrl.startsWith('login/sso')) &&\n\t\t\t\t\t!this.isSSO(formattedUrl) &&\n\t\t\t\t\tdecodeURIComponent(nextState.url) !== formattedRedirectUrl\n\t\t\t\t) {\n\t\t\t\t\tconst hasQueryParams = redirectUrl.includes('?');\n\t\t\t\t\tconst redirectUrlWithoutParams = hasQueryParams\n\t\t\t\t\t\t? redirectUrl.slice(0, redirectUrl.indexOf('?'))\n\t\t\t\t\t\t: redirectUrl;\n\t\t\t\t\tconst queryParams = {};\n\t\t\t\t\tif (hasQueryParams) {\n\t\t\t\t\t\tredirectUrl\n\t\t\t\t\t\t\t.slice(redirectUrl.indexOf('?') + 1)\n\t\t\t\t\t\t\t.split('&')\n\t\t\t\t\t\t\t.forEach(queryParamAndValue => {\n\t\t\t\t\t\t\t\tconst [param, value] = queryParamAndValue.split('=');\n\t\t\t\t\t\t\t\tqueryParams[param] = value;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.router.createUrlTree(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis.settings.client,\n\t\t\t\t\t\t\tculture.code,\n\t\t\t\t\t\t\t...redirectUrlWithoutParams.split('/').filter(segment => !!segment),\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tqueryParams,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.store.deleteFromStore(this._redirectKey);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n\n\tprivate isSSO(url: string): boolean {\n\t\treturn url.startsWith('/sso') && !url.startsWith('/sso/authorize');\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { CmLocalizationService } from '../services';\r\n\r\n/** @deprecated */\r\n@Injectable()\r\nexport class CmLocalizationGuard implements CanActivate {\r\n\tlocalizationsInitialized: boolean = false;\r\n\tconstructor(private readonly localizationService: CmLocalizationService) {}\r\n\r\n\tcanActivate(): Observable {\r\n\t\tif (!this.localizationsInitialized) {\r\n\t\t\tthis.localizationsInitialized = true;\r\n\t\t\treturn this.localizationService.init();\r\n\t\t} else {\r\n\t\t\treturn of(true);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { iif, Observable, of } from 'rxjs';\r\nimport { filter, mergeMap, take } from 'rxjs/operators';\r\nimport { Guard } from '../models';\r\nimport { CmFeatureService, CmSettingsService } from '../services';\r\n\r\n@Injectable()\r\nexport class CmPublicFeaturesGuard implements CanActivate {\r\n\tconstructor(private router: Router, private settings: CmSettingsService, private features: CmFeatureService) {}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\treturn this.features.public$.pipe(\r\n\t\t\tfilter(publicFeatures => !!publicFeatures),\r\n\t\t\tmergeMap(publicFeatures =>\r\n\t\t\t\tiif(\r\n\t\t\t\t\t() => (route.data || {}).features,\r\n\t\t\t\t\tof(\r\n\t\t\t\t\t\tGuard.HasSomeFeatures(route.data.features, publicFeatures) ||\r\n\t\t\t\t\t\t\tthis.router.createUrlTree(this.settings.route(['access-denied']))\r\n\t\t\t\t\t),\r\n\t\t\t\t\tof(true)\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\ttake(1)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { HubFeature } from '@ats/api/cm';\r\nimport { CmFeatureService } from '@ats/cm/core';\r\nimport { Observable, iif, of } from 'rxjs';\r\nimport { filter, mergeMap, switchMap, take, tap } from 'rxjs/operators';\r\nimport { CmAuthService, CmSettingsService } from '../services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmUnauthenticatedGuard implements CanActivate {\r\n\tconstructor(\r\n\t\tprivate readonly auth: CmAuthService,\r\n\t\tprivate readonly featureService: CmFeatureService,\r\n\t\tprivate readonly settings: CmSettingsService,\r\n\t\tprivate readonly router: Router\r\n\t) {}\r\n\r\n\tcanActivate(): Observable {\r\n\t\treturn this.featureService.public$.pipe(\r\n\t\t\tfilter(features => !!features),\r\n\t\t\ttap(features => {\r\n\t\t\t\tif (features.includes(HubFeature.CandidateAccessIntegrationIngress)) {\r\n\t\t\t\t\tthis.auth.clearAuthToken();\r\n\t\t\t\t\tthis.auth.clearPublicToken();\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tswitchMap(() => this.auth.token$),\r\n\t\t\ttake(1),\r\n\t\t\tmergeMap(token => {\r\n\t\t\t\treturn iif(() => !!token, of(this.router.createUrlTree(this.settings.route(['home']))), of(true));\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanDeactivate } from '@angular/router';\r\nimport { iif, Observable, of } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { CmAuthService } from '../services';\r\n\r\nexport interface UnsavedChangesCheck {\r\n\tcanDeactivate(): Observable;\r\n}\r\n\r\n@Injectable()\r\nexport class CmUnsavedChangesGuard implements CanDeactivate {\r\n\tconstructor(private auth: CmAuthService) {}\r\n\r\n\tcanDeactivate(component: UnsavedChangesCheck): Observable {\r\n\t\treturn this.auth.token$.pipe(\r\n\t\t\tswitchMap(authenticated =>\r\n\t\t\t\tiif(() => authenticated && !!component.canDeactivate, component.canDeactivate(), of(true))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { CmInterceptHeaders } from '../models';\r\nimport { CmAuthService, CmSettingsService, CmTimeoutService, TWO_STEP_STORE } from '../services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmAuthTokenInterceptor implements HttpInterceptor {\r\n\tconstructor(\r\n\t\tprivate auth: CmAuthService,\r\n\t\tprivate settings: CmSettingsService,\r\n\t\tprivate router: Router,\r\n\t\tprivate timeoutService: CmTimeoutService\r\n\t) {}\r\n\r\n\tintercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n\t\tconst bypassAuth = req.headers.has(CmInterceptHeaders.Type.BypassAuth);\r\n\t\tif (bypassAuth) {\r\n\t\t\treq = req.clone({\r\n\t\t\t\theaders: req.headers.delete(CmInterceptHeaders.Type.BypassAuth),\r\n\t\t\t});\r\n\t\t}\r\n\t\tconst token = this.auth.getAuthToken();\r\n\t\tconst twoStepToken = this.auth.getTwoStepToken();\r\n\r\n\t\tif (!bypassAuth) {\r\n\t\t\treq = req.clone({\r\n\t\t\t\theaders: req.headers.set('authorization', `Bearer ${token}`),\r\n\t\t\t});\r\n\t\t\tif (twoStepToken) {\r\n\t\t\t\treq = req.clone({\r\n\t\t\t\t\theaders: req.headers.set(TWO_STEP_STORE, twoStepToken),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst ignoreAuthError = req.headers.has(CmInterceptHeaders.Type.IgnoreAuthError);\r\n\r\n\t\tif (!ignoreAuthError && !bypassAuth && !this.auth.validateTokenAgainstSnapshot()) {\r\n\t\t\tthis.auth.logout$();\r\n\t\t}\r\n\r\n\t\treturn next.handle(req).pipe(\r\n\t\t\tcatchError(err => {\r\n\t\t\t\tif (token && !ignoreAuthError) {\r\n\t\t\t\t\tif (err.status === 401 || err.statusCode === 401) {\r\n\t\t\t\t\t\tthis.auth.logout$();\r\n\t\t\t\t\t} else if (err.status === 403 || err.statusCode === 403) {\r\n\t\t\t\t\t\tthis.redirectToAccessDenied();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst error = err.error ? err.error : err;\r\n\r\n\t\t\t\treturn throwError(error);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tprivate redirectToAccessDenied(): void {\r\n\t\tthis.router.navigate(this.settings.route(['access-denied']));\r\n\t}\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AtsGuid } from '@ats/utility';\r\nimport { CmEventService } from '@cm/core/system';\r\nimport { Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { CmInterceptHeaders } from '../models';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmLoadingInterceptor implements HttpInterceptor {\r\n\tconstructor(private events: CmEventService) {}\r\n\r\n\tintercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n\t\tconst bypassLoadIndicator = req.headers.has(CmInterceptHeaders.Type.BypassLoadIndicator);\r\n\t\tif (bypassLoadIndicator) {\r\n\t\t\treq = req.clone({\r\n\t\t\t\theaders: req.headers.delete(CmInterceptHeaders.Type.BypassLoadIndicator),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst reqKey = !bypassLoadIndicator ? AtsGuid.New() : null;\r\n\t\tif (reqKey) {\r\n\t\t\tthis.events.handleLoadingChange(reqKey);\r\n\t\t}\r\n\r\n\t\treturn next.handle(req).pipe(\r\n\t\t\tfinalize(() => {\r\n\t\t\t\tif (reqKey) {\r\n\t\t\t\t\tthis.events.handleLoadingChange(reqKey, 'END');\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AtsUtility } from '@ats/utility';\r\nimport { LocalizationService } from '@cm/core/localization';\r\nimport { CmEventService } from '@cm/core/system';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { CmInterceptHeaders } from '../models';\r\n\r\nconst IGNORED_ERRORS_BY_ROUTE = {\r\n\t'public/first-time-login': ['Validation.DataNotFound'],\r\n};\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmLoggingInterceptor implements HttpInterceptor {\r\n\t// Changes to constructor params necessitate updates to deps in core.module\r\n\t// libs\\cm\\core\\src\\lib\\core.module.ts\r\n\tconstructor(\r\n\t\tprivate eventService: CmEventService,\r\n\t\tprivate locService: LocalizationService,\r\n\t\tprivate router: Router\r\n\t) {}\r\n\r\n\tintercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n\t\tconst ignoreAuthError = req.headers.has(CmInterceptHeaders.Type.IgnoreAuthError);\r\n\r\n\t\tconst suppressError = req.headers.has(CmInterceptHeaders.Type.SuppressError);\r\n\t\tif (suppressError) {\r\n\t\t\treq = req.clone({\r\n\t\t\t\theaders: req.headers.delete(CmInterceptHeaders.Type.SuppressError),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst hasSuppressHeader = req.headers.has(CmInterceptHeaders.Type.SuppressErrorLog);\r\n\t\tif (hasSuppressHeader) {\r\n\t\t\treq = req.clone({\r\n\t\t\t\theaders: req.headers.delete(CmInterceptHeaders.Type.SuppressErrorLog),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst suppressErrorId = req.headers.get(CmInterceptHeaders.Type.SuppressErrorById);\r\n\t\tif (suppressErrorId) {\r\n\t\t\treq = req.clone({\r\n\t\t\t\theaders: req.headers.delete(CmInterceptHeaders.Type.SuppressErrorById),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn next.handle(req).pipe(\r\n\t\t\tcatchError(err => {\r\n\t\t\t\tconst error = (err || {}).error ? err.error : err;\r\n\r\n\t\t\t\tif (!suppressError) {\r\n\t\t\t\t\tif (this.isForbidden(err)) {\r\n\t\t\t\t\t\t// Handle auth errors as long as they aren't ignored\r\n\t\t\t\t\t\tif (!error.id && !ignoreAuthError) {\r\n\t\t\t\t\t\t\tthis.eventService.handleAuthError();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (this.is500(err)) {\r\n\t\t\t\t\t\t// Handle 500 errors\r\n\t\t\t\t\t\tthis.eventService.handleSystemError();\r\n\t\t\t\t\t} else if (this.getErrorCode(err) !== 0) {\r\n\t\t\t\t\t\tthis.eventService.handleAPIError({\r\n\t\t\t\t\t\t\tguid: error.id,\r\n\t\t\t\t\t\t\tmessage: error.message,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t/**\r\n\t\t\t\t * Do not log under these conditions:\r\n\t\t\t\t * 1. HasSuppressHeader - We explicitly told it not to\r\n\t\t\t\t * 2. Ignore 401/403 errors\r\n\t\t\t\t * 3. If we have a GUID mapped we expected it\r\n\t\t\t\t * 4. Some errors we don't care about, like 409 or 500+\r\n\t\t\t\t * 5. The error is explicitly ignored above\r\n\t\t\t\t */\r\n\t\t\t\tconst doNotLog =\r\n\t\t\t\t\thasSuppressHeader ||\r\n\t\t\t\t\tthis.isForbidden(err) ||\r\n\t\t\t\t\tthis.hasGuid(error) ||\r\n\t\t\t\t\tthis.isIgnoredStatus(err) ||\r\n\t\t\t\t\tthis.isIgnoredByRoute(error) ||\r\n\t\t\t\t\tthis.hasSuppressErrorId(error, suppressErrorId);\r\n\t\t\t\treturn throwError(() => ({ ...error, raw: err, doNotLog, req }));\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tprivate hasSuppressErrorId(err: any, suppressErrorId: string) {\r\n\t\treturn suppressErrorId ? err?.id === suppressErrorId : false;\r\n\t}\r\n\r\n\tprivate is500(err: any) {\r\n\t\tconst code = this.getErrorCode(err);\r\n\t\treturn code === 500;\r\n\t}\r\n\r\n\tprivate isIgnoredStatus(err: any) {\r\n\t\tconst code = this.getErrorCode(err);\r\n\t\treturn code === 409 || code > 499 || code === 0;\r\n\t}\r\n\r\n\tprivate hasGuid(err: any): boolean {\r\n\t\treturn (err || {}).id && this.locService.hasGUIDLoc(err.id);\r\n\t}\r\n\r\n\tprivate isForbidden(err: any) {\r\n\t\tconst code = this.getErrorCode(err);\r\n\t\treturn code === 401 || code === 403;\r\n\t}\r\n\r\n\tprivate isIgnoredByRoute(err: any) {\r\n\t\tconst id = (err || {}).id ? err.id : ((err || {}).error || {}).id;\r\n\t\treturn Object.keys(IGNORED_ERRORS_BY_ROUTE)\r\n\t\t\t.filter(key => this.router.routerState.snapshot.url.includes(key))\r\n\t\t\t.some(key => IGNORED_ERRORS_BY_ROUTE[key].includes(id));\r\n\t}\r\n\r\n\tprivate getErrorCode(err: any) {\r\n\t\tconst codeKey = AtsUtility.isTruthyOrZero(err.status) ? 'status' : 'statusCode';\r\n\t\treturn err[codeKey];\r\n\t}\r\n}\r\n","export enum AddressType {\r\n\tMAILING = 'Mailing Address',\r\n\tLOCALIZED = 'Localized Address',\r\n\tOTHER = 'Other Address',\r\n}\r\n","export enum AppUserType {\r\n\tCANDIDATE = 'Candidate',\r\n\tWEB_USER = 'Sponsor Portal Web User',\r\n}\r\n","export function cmBooleanPipeLocalizationDefaults(feature: string) {\r\n\tconst POSITIVE = { defaultValue: 'Yes', key: `${feature}/System.Global.Content.True` };\r\n\tconst NEGATIVE = { defaultValue: 'No', key: `${feature}/System.Global.Content.False` };\r\n\tconst INDETERMINATE = { defaultValue: 'N/A', key: `${feature}/_Shared.Global.Content.Na` };\r\n\treturn { POSITIVE, NEGATIVE, INDETERMINATE };\r\n}\r\n","export const IGNORE_ERRORS_BY_ID = [\r\n\t'd25aaeba218f49b2afe95f07b610db0e',\r\n\t'e91ca5d0ec28454fadf18579462529a0',\r\n\t'7fab0f358b504243be0c14d317806ff5',\r\n];\r\n","enum CmInterceptHeaderType {\r\n\tIgnoreAuthError = 'CM-ignore-error',\r\n\tBypassAuth = 'X-bypass-token',\r\n\tSuppressError = 'ichabod-suppress-error',\r\n\tSuppressErrorLog = 'ichabod-suppress-error-log',\r\n\tClientHeader = 'CM-Client',\r\n\tBypassLoadIndicator = 'ATS-bypass-load-indicator',\r\n\tSuppressErrorById = 'ichabod-suppress-error-by-id',\r\n}\r\n\r\nexport class CmInterceptHeaders {\r\n\tpublic static Type = CmInterceptHeaderType;\r\n\tpublic static IgnoreAuthError = { [CmInterceptHeaderType.IgnoreAuthError]: 'true' };\r\n\tpublic static BypassAuth = { [CmInterceptHeaderType.BypassAuth]: 'true' };\r\n\tpublic static SuppressError = { [CmInterceptHeaderType.SuppressError]: 'true' };\r\n\tpublic static SuppressErrorLog = { [CmInterceptHeaderType.SuppressErrorLog]: 'true' };\r\n\tpublic static BypassLoadIndicator = { [CmInterceptHeaderType.BypassLoadIndicator]: 'true' };\r\n\tpublic static ClientHeader = (client: string) => ({\r\n\t\t[CmInterceptHeaderType.ClientHeader]: client,\r\n\t});\r\n\tpublic static SuppressErrorById = (guid: string) => ({\r\n\t\t[CmInterceptHeaderType.SuppressErrorById]: guid,\r\n\t});\r\n}\r\n","import { Platform } from '@angular/cdk/platform';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { ErrorHandler } from '@angular/core';\r\nimport { LoggingService } from '@cm/core/logging';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { CmEventService } from '@cm/core/system';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { IGNORE_ERRORS_BY_ID } from '../data/error-ignore-list';\r\nimport { CmFormErrorService } from '../services/cm-form-error.service';\r\nimport { CmInterceptHeaders } from './intercept-headers';\r\nimport { CmBaseUserService } from './user-service.class';\r\n\r\nconst ERROR_MESSAGES_TO_IGNORE: string[] = [\r\n\t'Failed to fetch',\r\n\t'cancelled',\r\n\t'Load failed',\r\n\t'NetworkError when attempting to fetch resource',\r\n\t'The network connection was lost',\r\n\t'已取消',\r\n\t'中止',\r\n\t'キャンセルしました',\r\n\t'Abgebrochen',\r\n];\r\n\r\nexport function UnwrapErrorMessage(err: any, count: number = 0): string | null {\r\n\tif (count > 10) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (Object.prototype.hasOwnProperty.call(err, 'message')) {\r\n\t\treturn err.message.toString();\r\n\t} else if (typeof err === 'object') {\r\n\t\treturn UnwrapErrorMessage(err, count + 1);\r\n\t} else if (typeof err === 'string') {\r\n\t\treturn err;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\n// Note: Changes in dependencies need to be reflected in the app.module implementation\r\nexport class CmErrorHandler implements ErrorHandler {\r\n\tconstructor(\r\n\t\tprivate readonly logger: LoggingService,\r\n\t\tprivate readonly events: CmEventService,\r\n\t\tprivate readonly user: CmBaseUserService,\r\n\t\tprivate readonly forms: CmFormErrorService,\r\n\t\tprivate readonly settings: SettingsService,\r\n\t\tprivate readonly platform: Platform\r\n\t) {}\r\n\r\n\t/**\r\n\t * Gathers the necessary data to log errors to the API\r\n\t * @method\r\n\t * @param {any} err - The error object to log\r\n\t * @return {void}\r\n\t */\r\n\thandleError(err: any): void {\r\n\t\tlet message = UnwrapErrorMessage(err);\r\n\t\tif (!message) {\r\n\t\t\ttry {\r\n\t\t\t\tmessage = JSON.stringify(err);\r\n\t\t\t} catch (ex) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst chunkFailedMessage = /Loading chunk [a-zA-Z0-9_ ]+ failed/;\r\n\t\tif (chunkFailedMessage.test(message)) {\r\n\t\t\tthis.events.requireReload();\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\t!err.doNotLog &&\r\n\t\t\t!this.isIgnoredErrorMessage(message) &&\r\n\t\t\t!chunkFailedMessage.test(message) &&\r\n\t\t\t!(err.networkError || {}).doNotLog &&\r\n\t\t\t(!err.id || (err.id && !IGNORE_ERRORS_BY_ID.includes(err.id)))\r\n\t\t) {\r\n\t\t\tcombineLatest([this.user.user$, this.forms.formsToLog$, this.settings.client$])\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tmap(([user, forms, client]) => {\r\n\t\t\t\t\t\tconst browser = (({ appCodeName, appName, appVersion, userAgent, language }) => ({\r\n\t\t\t\t\t\t\tappCodeName,\r\n\t\t\t\t\t\t\tappName,\r\n\t\t\t\t\t\t\tappVersion,\r\n\t\t\t\t\t\t\tuserAgent,\r\n\t\t\t\t\t\t\tlanguage,\r\n\t\t\t\t\t\t}))(navigator);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\torigin: (err || {}).raw || err,\r\n\t\t\t\t\t\t\terrors: err.errors ? err.errors : null,\r\n\t\t\t\t\t\t\trequest: (err || {}).req || null,\r\n\t\t\t\t\t\t\tmessage,\r\n\t\t\t\t\t\t\tguid: err && err.id ? err.id : null,\r\n\t\t\t\t\t\t\tstack: err.stack ? err.stack : null,\r\n\t\t\t\t\t\t\tdate: new Date(),\r\n\t\t\t\t\t\t\tbrowser,\r\n\t\t\t\t\t\t\tapp: {\r\n\t\t\t\t\t\t\t\tportal: this.settings.portal,\r\n\t\t\t\t\t\t\t\troute: window.location.href,\r\n\t\t\t\t\t\t\t\tclient: client,\r\n\t\t\t\t\t\t\t\tforms,\r\n\t\t\t\t\t\t\t\tplatform: this.platform,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tuser: {\r\n\t\t\t\t\t\t\t\tusername: (user || {}).username || '',\r\n\t\t\t\t\t\t\t\temail: (user || {}).email || '',\r\n\t\t\t\t\t\t\t\tisImpersonating: (user || {}).isImpersonating,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\ttake(1)\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe(cmError => {\r\n\t\t\t\t\tif (this.settings.env.local) {\r\n\t\t\t\t\t\tconsole.group('Local Error Handler Details');\r\n\t\t\t\t\t\tconsole.log('Original error');\r\n\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t\tconsole.log('Error sent to log');\r\n\t\t\t\t\t\tconsole.error(cmError);\r\n\t\t\t\t\t\tconsole.groupEnd();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.logToApiWithHeaders(\r\n\t\t\t\t\t\t\tcmError,\r\n\t\t\t\t\t\t\tnew HttpHeaders({\r\n\t\t\t\t\t\t\t\t...CmInterceptHeaders.SuppressErrorLog,\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isIgnoredErrorMessage(message: string): boolean {\r\n\t\treturn ERROR_MESSAGES_TO_IGNORE.some(ignoreErrorMessage => message.includes(ignoreErrorMessage));\r\n\t}\r\n}\r\n","import { WuserCandRestrictType } from '@ats/api/cm';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { AppUserType } from './app-user-type.enum';\r\nimport { AppUser } from './app-user.interface';\r\nimport { Checkpoints } from './checkpoints.interface';\r\n\r\nexport class Guard {\r\n\tprivate results: boolean[] = [];\r\n\tpublic against: Checkpoints;\r\n\r\n\tconstructor(against: Checkpoints) {\r\n\t\tthis.against = against;\r\n\t}\r\n\r\n\tpublic static getFromUser$(user$: Observable) {\r\n\t\treturn user$.pipe(\r\n\t\t\tfilter(user => user !== null),\r\n\t\t\tmap(user => user as AppUser),\r\n\t\t\tmap(this.getCheckpointsFromUser),\r\n\t\t\tmap(checkpoints => new Guard(checkpoints))\r\n\t\t);\r\n\t}\r\n\r\n\tpublic static getCheckpointsFromUser(user: AppUser) {\r\n\t\tconst { type, features, permissions, admin, internal, candRestrictType, qlik, localizationEnabled } = user;\r\n\t\treturn {\r\n\t\t\tuserType: type,\r\n\t\t\tfeatures,\r\n\t\t\tpermissions,\r\n\t\t\tadmin,\r\n\t\t\tinternal,\r\n\t\t\tcandRestrictType,\r\n\t\t\tqlik,\r\n\t\t\tlocalizationEnabled,\r\n\t\t} as Checkpoints;\r\n\t}\r\n\r\n\tpublic get all() {\r\n\t\treturn this.results.every(result => result);\r\n\t}\r\n\r\n\tpublic get any() {\r\n\t\treturn this.results.some(result => result);\r\n\t}\r\n\r\n\tpublic get none() {\r\n\t\treturn !this.results.some(result => result);\r\n\t}\r\n\r\n\tpublic static HasEveryFeature = (features: string[], against: string[]) => {\r\n\t\treturn !features.length || features.every(feat => against.includes(feat));\r\n\t};\r\n\r\n\tpublic static HasSomeFeatures = (features: string[], against: string[]) => {\r\n\t\treturn features.some(feat => against.includes(feat));\r\n\t};\r\n\r\n\tpublic static HasEveryPermission = (permissions: string[], against: string[]) => {\r\n\t\treturn !permissions.length || permissions.every(perm => against.includes(perm));\r\n\t};\r\n\r\n\tpublic static HasSomePermissions = (permissions: string[], against: string[]) => {\r\n\t\treturn permissions.some(perm => against.includes(perm));\r\n\t};\r\n\r\n\tpublic reset() {\r\n\t\tthis.results = [];\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic canLocalize = () => {\r\n\t\tthis.results.push(this.against.localizationEnabled);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isCandidate = () => {\r\n\t\tconst result = this.against.userType === AppUserType.CANDIDATE;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isNotCandidate = () => {\r\n\t\tconst result = this.against.userType !== AppUserType.CANDIDATE;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isWebUser = () => {\r\n\t\tconst result = this.against.userType === AppUserType.WEB_USER;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isNotWebUser = () => {\r\n\t\tconst result = this.against.userType !== AppUserType.WEB_USER;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isAdmin = () => {\r\n\t\tconst result = this.against.admin !== null ? this.against.admin : false;\r\n\t\tthis.results.push(result || false);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic notAdmin = () => {\r\n\t\tconst result = this.against.admin !== null ? !this.against.admin : true;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isInternal = () => {\r\n\t\tconst result = this.against.internal !== null ? this.against.internal : false;\r\n\t\tthis.results.push(result || false);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic notInternal = () => {\r\n\t\tconst result = this.against.internal !== null ? !this.against.internal : true;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isAdminOrInternal = () => {\r\n\t\tconst result1 = this.against.admin !== null ? this.against.admin : false;\r\n\t\tconst result2 = this.against.internal !== null ? this.against.internal : false;\r\n\t\tthis.results.push(result1 || result2 || false);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isRestricted = () => {\r\n\t\tconst result =\r\n\t\t\tthis.against.candRestrictType !== null\r\n\t\t\t\t? this.against.candRestrictType === WuserCandRestrictType.Restricted\r\n\t\t\t\t: false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic notRestricted = () => {\r\n\t\tconst result =\r\n\t\t\tthis.against.candRestrictType !== null\r\n\t\t\t\t? this.against.candRestrictType !== WuserCandRestrictType.Restricted\r\n\t\t\t\t: true;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isFiltered = () => {\r\n\t\tconst result =\r\n\t\t\tthis.against.candRestrictType !== null\r\n\t\t\t\t? this.against.candRestrictType === WuserCandRestrictType.Filtered\r\n\t\t\t\t: false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic notFiltered = () => {\r\n\t\tconst result =\r\n\t\t\tthis.against.candRestrictType !== null\r\n\t\t\t\t? this.against.candRestrictType !== WuserCandRestrictType.Filtered\r\n\t\t\t\t: true;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic isUnrestricted = () => {\r\n\t\tconst result =\r\n\t\t\tthis.against.candRestrictType !== null\r\n\t\t\t\t? this.against.candRestrictType === WuserCandRestrictType.Unrestricted\r\n\t\t\t\t: false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic notUnrestricted = () => {\r\n\t\tconst result =\r\n\t\t\tthis.against.candRestrictType !== null\r\n\t\t\t\t? this.against.candRestrictType !== WuserCandRestrictType.Unrestricted\r\n\t\t\t\t: true;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic hasQlik = () => {\r\n\t\tconst result = this.against.qlik;\r\n\t\tthis.results.push(result || false);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic custom = (customGuard: (guard: Guard) => boolean) => {\r\n\t\tconst result = customGuard(this);\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic everyFeature = (features: string[]) => {\r\n\t\tconst result = this.against.features ? Guard.HasEveryFeature(features, this.against.features) : false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic everyPermission = (permissions: string[]) => {\r\n\t\tif (this.against.admin || this.against.userType === AppUserType.CANDIDATE) {\r\n\t\t\tthis.results.push(true);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tconst result = this.against.permissions\r\n\t\t\t? Guard.HasEveryPermission(permissions, this.against.permissions)\r\n\t\t\t: false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic someFeatures = (features: string[]) => {\r\n\t\tconst result = this.against.features ? Guard.HasSomeFeatures(features, this.against.features) : false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic somePermissions = (permissions: string[]) => {\r\n\t\tif (this.against.admin || this.against.userType === AppUserType.CANDIDATE) {\r\n\t\t\tthis.results.push(true);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tconst result = this.against.permissions\r\n\t\t\t? Guard.HasSomePermissions(permissions, this.against.permissions)\r\n\t\t\t: false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic noFeature = (features: string[]) => {\r\n\t\tconst result =\r\n\t\t\tthis.against.features && this.against.features.length\r\n\t\t\t\t? !Guard.HasSomeFeatures(features, this.against.features)\r\n\t\t\t\t: false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tpublic noPermission = (permissions: string[]) => {\r\n\t\tconst result =\r\n\t\t\tthis.against.permissions && this.against.permissions.length\r\n\t\t\t\t? !Guard.HasSomePermissions(permissions, this.against.permissions)\r\n\t\t\t\t: false;\r\n\t\tthis.results.push(result);\r\n\t\treturn this;\r\n\t};\r\n}\r\n","export enum INGRESS_TYPE {\r\n\tOIDC = 'oidc',\r\n\tJWT = 'jwt',\r\n\tWSTRUST = 'wstrust',\r\n}\r\n","/* eslint-disable no-prototype-builtins */\r\n\r\nimport { AppUserType } from './app-user-type.enum';\r\nimport { Checkpoints } from './checkpoints.interface';\r\nimport { Guard } from './guard';\r\n\r\nexport interface CmRouteCheckpoint {\r\n\tsome?: Checkpoints;\r\n\tnone?: Checkpoints;\r\n\tevery?: Checkpoints;\r\n}\r\n\r\ntype RouteChecks = Omit & { userType?: AppUserType };\r\n\r\nexport abstract class CmRouteGuard {\r\n\tconstructor() {}\r\n\r\n\tprotected passesGuardCheck(guard: Guard, data: any): boolean {\r\n\t\tif (!data) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tdata = data.guard || data;\r\n\t\t\r\n\t\tif (data.custom) {\r\n\t\t\treturn data.custom(guard);\r\n\t\t}\r\n\r\n\t\tconst { every, some, none } = this.parseRouteData(data);\r\n\t\tlet passes = true;\r\n\r\n\t\tpasses = every ? this.passesEveryCheckpoint(guard, every) : passes;\r\n\t\tpasses = passes && some ? this.passesSomeCheckpoints(guard, some) : passes;\r\n\t\tpasses = passes && none ? !this.passesSomeCheckpoints(guard, none) : passes;\r\n\r\n\t\treturn passes;\r\n\t}\r\n\r\n\tprivate passesEveryCheckpoint(\r\n\t\tguard: Guard,\r\n\t\t{ features, permissions, admin, internal, qlik, custom }: RouteChecks\r\n\t): boolean {\r\n\t\tguard.reset();\r\n\r\n\t\tif (features && features.length) {\r\n\t\t\tguard = guard.everyFeature(features);\r\n\t\t}\r\n\r\n\t\tif (permissions && permissions.length) {\r\n\t\t\tguard = guard.everyPermission(permissions);\r\n\t\t}\r\n\r\n\t\tif (admin) {\r\n\t\t\tguard = guard.isAdmin();\r\n\t\t}\r\n\r\n\t\tif (internal) {\r\n\t\t\tguard = guard.isInternal();\r\n\t\t}\r\n\r\n\t\tif (qlik) {\r\n\t\t\tguard = guard.hasQlik();\r\n\t\t}\r\n\r\n\t\treturn guard.all;\r\n\t}\r\n\r\n\tprivate passesSomeCheckpoints(\r\n\t\tguard: Guard,\r\n\t\t{ features, permissions, admin, internal, qlik, custom }: RouteChecks\r\n\t): boolean {\r\n\t\tguard.reset();\r\n\r\n\t\tif (features && features.length) {\r\n\t\t\tguard = guard.someFeatures(features);\r\n\t\t}\r\n\r\n\t\tif (permissions && permissions.length) {\r\n\t\t\tguard = guard.somePermissions(permissions);\r\n\t\t}\r\n\r\n\t\tif (admin) {\r\n\t\t\tguard = guard.isAdmin();\r\n\t\t}\r\n\r\n\t\tif (internal) {\r\n\t\t\tguard = guard.isInternal();\r\n\t\t}\r\n\r\n\t\tif (qlik) {\r\n\t\t\tguard = guard.hasQlik();\r\n\t\t}\r\n\r\n\t\treturn guard.any;\r\n\t}\r\n\r\n\tprivate parseRouteData(data: any) {\r\n\t\tconst guard = (data || {}).guard || {};\r\n\t\tconst every = {\r\n\t\t\tfeatures: [...(data?.features || []), ...((guard.every || {}).features || [])],\r\n\t\t\tpermissions: [...(data?.permissions || []), ...((guard.every || {}).permissions || [])],\r\n\t\t};\r\n\r\n\t\tif (data?.hasOwnProperty('admin')) {\r\n\t\t\tevery['admin'] = data.admin;\r\n\t\t}\r\n\r\n\t\tif (guard.every && data.guard.every.hasOwnProperty('admin')) {\r\n\t\t\tevery['admin'] = data.guard.every.admin;\r\n\t\t}\r\n\r\n\t\tif (data?.hasOwnProperty('internal')) {\r\n\t\t\tevery['internal'] = data.internal;\r\n\t\t}\r\n\r\n\t\tif (guard.every && data.guard.every.hasOwnProperty('internal')) {\r\n\t\t\tevery['internal'] = data.guard.every.internal;\r\n\t\t}\r\n\r\n\t\tif (data?.hasOwnProperty('qlik')) {\r\n\t\t\tevery['qlik'] = data.qlik;\r\n\t\t}\r\n\r\n\t\tif (guard.every && data.guard.every.hasOwnProperty('qlik')) {\r\n\t\t\tevery['qlik'] = data.guard.every.qlik;\r\n\t\t}\r\n\r\n\t\tif (data?.hasOwnProperty('custom')) {\r\n\t\t\tevery['custom'] = data.custom;\r\n\t\t}\r\n\r\n\t\tif (guard.every && data.guard.every.hasOwnProperty('custom')) {\r\n\t\t\tevery['custom'] = data.guard.every.custom;\r\n\t\t}\r\n\r\n\t\tconst { some, none } = guard;\r\n\r\n\t\treturn { some, none, every };\r\n\t}\r\n}\r\n","export enum SSO_FLOW {\r\n\tREDIRECT_TO = 'redirectTo',\r\n\tREDIRECT_ATTEMPTS = 'redirectAttempts',\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { AtsLoggerService } from '@ats/logger';\r\nimport { BehaviorSubject, combineLatest, iif, Observable, of } from 'rxjs';\r\nimport { distinctUntilChanged, map, mapTo, switchMap, take } from 'rxjs/operators';\r\nimport { CmAuthService, CmPublicTokenData } from '../services/auth.service';\r\nimport { CmFeatureService } from '../services/features.service';\r\nimport { CmSettingsService } from '../services/settings.service';\r\nimport { AppUser } from './app-user.interface';\r\nimport { ForgotPasswordRequest } from './forgot-password-request.interface';\r\nimport { CmInterceptHeaders } from './intercept-headers';\r\nimport { ResetPasswordRequest } from './password-reset-request.interface';\r\n\r\nenum UserActionType {\r\n\tUPDATE_USER = 'Update the current app user',\r\n}\r\n\r\ninterface UserAction {\r\n\ttype: UserActionType;\r\n\tpayload: AppUser | null;\r\n}\r\n\r\nclass UserState {\r\n\tuser: AppUser | null = null;\r\n}\r\n\r\nconst reduce = (state: UserState, action: UserAction) => {\r\n\tswitch (action.type) {\r\n\t\tcase UserActionType.UPDATE_USER:\r\n\t\t\treturn { ...state, user: action.payload ? { ...(action.payload as AppUser) } : null };\r\n\t}\r\n};\r\n\r\nexport abstract class CmBaseUserService {\r\n\treadonly user$: Observable;\r\n\treadonly authenticated$: Observable;\r\n\treadonly canLocalize$: Observable;\r\n\treadonly impersonating$: Observable;\r\n\r\n\tprotected state = new UserState();\r\n\tprotected queryUser$: (features: string[], token: CmPublicTokenData) => Observable;\r\n\tprotected readonly dispatch = new BehaviorSubject(this.state);\r\n\r\n\tprivate readonly tokenAndFeatures$: Observable<{ token: CmPublicTokenData; features: string[] }>;\r\n\r\n\tconstructor(\r\n\t\tprotected auth: CmAuthService,\r\n\t\tprotected settings: CmSettingsService,\r\n\t\tprotected features: CmFeatureService,\r\n\t\tprotected logger: AtsLoggerService,\r\n\t\tprotected http: HttpClient\r\n\t) {\r\n\t\tthis.user$ = this.dispatch.asObservable().pipe(\r\n\t\t\tmap(state => state.user),\r\n\t\t\tdistinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b))\r\n\t\t);\r\n\t\tthis.authenticated$ = this.user$.pipe(map(user => !!user));\r\n\t\tthis.canLocalize$ = this.user$.pipe(map(user => (user || {}).localizationEnabled || false));\r\n\t\tthis.impersonating$ = this.user$.pipe(map(user => (user || {}).isImpersonating || false));\r\n\t\tthis.user$.subscribe(user => this.auth.updateGuardUser(user));\r\n\t\tthis.tokenAndFeatures$ = combineLatest([this.auth.token$, this.features.protected$]).pipe(\r\n\t\t\tmap(([token, features]) => ({ token, features }))\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the user currently in state\r\n\t * @private\r\n\t * @method\r\n\t * @param {AppUser | null} user - The user to add to state, or null to clear it out\r\n\t * @return {void}\r\n\t */\r\n\tprotected updateUser(user: AppUser | null): void {\r\n\t\tconst type = UserActionType.UPDATE_USER;\r\n\t\tconst action = { payload: user, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers a forgotten password email\r\n\t * @method\r\n\t * @private\r\n\t * @param {string} [loginId] - The username for the password reset\r\n\t * @returns {Observable} - Returns an observable of a boolean set to true\r\n\t */\r\n\tprotected forgotPassword(request: ForgotPasswordRequest, portal: 'candidate' | 'sponsor'): Observable {\r\n\t\treturn this.settings.apiWithContext$.pipe(\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(apiWithContext =>\r\n\t\t\t\tthis.http.post(`${apiWithContext}/${portal}/reset-password`, request, {\r\n\t\t\t\t\theaders: { ...CmInterceptHeaders.BypassAuth, ...CmInterceptHeaders.SuppressError },\r\n\t\t\t\t})\r\n\t\t\t),\r\n\t\t\tmapTo(true)\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the password for a signed-in app user\r\n\t * @method\r\n\t * @protected\r\n\t * @param {Object} obj - An object\r\n\t * @param {string} obj.token - Token from the query params on the reset password page\r\n\t * @param {string} obj.newPassword - The new password\r\n\t * @returns {Observable} - Returns an observable of a boolean set to true\r\n\t */\r\n\tprotected resetPassword(\r\n\t\t{ token, newPassword }: ResetPasswordRequest,\r\n\t\tportal: 'candidate' | 'sponsor'\r\n\t): Observable {\r\n\t\treturn this.settings.apiWithContext$.pipe(\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(apiWithContext =>\r\n\t\t\t\tthis.http.post(\r\n\t\t\t\t\t`${apiWithContext}/${portal}/change-password`,\r\n\t\t\t\t\t{ token, newPassword },\r\n\t\t\t\t\t{ headers: { ...CmInterceptHeaders.BypassAuth, ...CmInterceptHeaders.IgnoreAuthError } }\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\tmapTo(true)\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Load the current logged in web user/candidate from GraphQL\r\n\t * @method\r\n\t * @protected\r\n\t * @return {Observable} - Returns an observable containing the AppUser\r\n\t */\r\n\tprotected monitorUserChanges$(): void {\r\n\t\tif (!this.queryUser$) {\r\n\t\t\tthis.logger.critical(\r\n\t\t\t\t'User Service was not setup properly. A queryUser$ method is required and is undefined.'\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis.tokenAndFeatures$\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tswitchMap(({ token, features }) =>\r\n\t\t\t\t\t\tiif(() => !token || !features, of(null), this.queryUser$(features, token))\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe(user => this.updateUser(user));\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { PortalTypeEnum } from '@ats/api/cm';\r\nimport { cmBooleanPipeLocalizationDefaults } from '../models';\r\nimport { CmSettingsService } from '../services';\r\nimport { CmLocalizationService } from '../services/localization.service';\r\n\r\n@Pipe({\n name: 'cmBool',\n standalone: false\n})\r\nexport class CmBooleanPipe implements PipeTransform {\r\n\tprivate readonly localization: { positive: string; negative: string; indeterminate: string };\r\n\r\n\tconstructor(\r\n\t\tprivate readonly localizationService: CmLocalizationService,\r\n\t\tprivate readonly settings: CmSettingsService\r\n\t) {\r\n\t\tthis.localization = this.getLocalizations();\r\n\t}\r\n\r\n\ttransform(value?: boolean | string, binary = true): string {\r\n\t\tif (binary || value !== null) {\r\n\t\t\tif (!value || value === '' || value === '0') {\r\n\t\t\t\treturn this.localization.negative;\r\n\t\t\t} else {\r\n\t\t\t\treturn this.localization.positive;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn this.localization.indeterminate;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getLocalizations() {\r\n\t\tconst feature = this.settings.portal === PortalTypeEnum.CandidatePortal ? 'CandidateAccess' : 'Core';\r\n\t\tconst { POSITIVE, NEGATIVE, INDETERMINATE } = cmBooleanPipeLocalizationDefaults(feature);\r\n\r\n\t\tconst positive = (this.localizationService.findLocalization(POSITIVE.key) || {}).value || POSITIVE.defaultValue;\r\n\t\tconst negative = (this.localizationService.findLocalization(NEGATIVE.key) || {}).value || NEGATIVE.defaultValue;\r\n\t\tconst indeterminate =\r\n\t\t\t(this.localizationService.findLocalization(INDETERMINATE.key) || {}).value || INDETERMINATE.defaultValue;\r\n\r\n\t\treturn {\r\n\t\t\tpositive,\r\n\t\t\tnegative,\r\n\t\t\tindeterminate,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic isTrue(val: boolean | string) {\r\n\t\treturn !this.isFalsey(val);\r\n\t}\r\n\r\n\tpublic isTruthy(val: boolean | string) {\r\n\t\treturn this.isTrue(val);\r\n\t}\r\n\r\n\tpublic isFalse(val: boolean | string) {\r\n\t\treturn (\r\n\t\t\tval === false ||\r\n\t\t\tval === '' ||\r\n\t\t\tval.toString().toLowerCase() === this.localization.negative.toLowerCase() ||\r\n\t\t\tval.toString().toLowerCase() === 'false'\r\n\t\t);\r\n\t}\r\n\r\n\tpublic isNull(val: boolean | string) {\r\n\t\treturn val === null || val === this.localization.indeterminate;\r\n\t}\r\n\r\n\tpublic isFalsey(val: boolean | string) {\r\n\t\treturn this.isFalse(val) || this.isNull(val);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CmLocalizationService } from '../services';\r\n\r\n/** @deprecated Use LocalizePipe from @cm/ui/localize */\r\n@Pipe({\n name: 'cmLocalize',\n standalone: false\n})\r\nexport class CmLocalizePipe implements PipeTransform {\r\n\tconstructor(private localizationService: CmLocalizationService) {}\r\n\r\n\ttransform(value: string, locKey: string): string {\r\n\t\tconst localization = this.localizationService.findLocalization(locKey);\r\n\t\treturn (localization || {}).value || value;\r\n\t}\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NavigationStart, Params, Router } from '@angular/router';\nimport { PortalTypeEnum } from '@ats/api/cm';\nimport { AtsLoggerService } from '@ats/logger';\nimport { AtsStoreService } from '@ats/store';\nimport { AtsDate, AtsDateUnit } from '@ats/utility';\nimport { CmEventService } from '@cm/core/system';\nimport { Apollo } from 'apollo-angular';\nimport {\n\tBehaviorSubject,\n\tcombineLatest,\n\tinterval,\n\tObservable,\n\tof,\n\tReplaySubject,\n\tthrowError,\n} from 'rxjs';\nimport {\n\tcatchError,\n\tdistinctUntilChanged,\n\tfilter,\n\tfirst,\n\tmap,\n\tretry,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs/operators';\nimport {\n\tAccessTokenCreateRequest,\n\tAppUser,\n\tAppUserType,\n\tCmAccessToken,\n\tCmInitialAccessToken,\n\tCmInterceptHeaders,\n\tGuard,\n} from '../models';\nimport { CmSettingsService } from './settings.service';\nimport { CmTimeoutService } from './timeout.service';\n\nexport const TWO_STEP_STORE = 'CM-Two-Step';\nconst TWO_STEP_STORE_EXPIRE = 'CM-Two-Step-Expire';\nconst AUTH_COOOKIE = 'authData';\nconst BANNED_CANDIDATE_ERROR = '5f36d23ba1d545de9659c7f46e080b4c';\n\nexport type CmPublicTokenData = Pick<\n\tCmAccessToken,\n\t| 'isImpersonating'\n\t| 'localizationEnabled'\n\t| 'logoutUrl'\n\t| 'absoluteExpirationMinutesRemaining'\n\t| 'slidingExpirationMinutes'\n>;\n\n/**\n * Saves an access token to the cache (in a store)\n * @class CmAuthService\n * @property {Observable} user$ - An observable that contains the currently logged in user, or null if there is none\n * @property {Observable} authenticated$ - An observable derived from user$ mapped to the authenticated property\n * @property {Observable} canLocalize$ - An observable derived from user$ mapped to the canLocalize property\n * @property {Observable} impersonating$ - An observable derived from user$ mapped to the impersonating property\n */\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class CmAuthService {\n\tprivate tokenName!: string;\n\tprivate twoStepTokenName!: string;\n\tprivate twoStepExpiryTokenName!: string;\n\tprivate tokenSnapshot: string;\n\tprivate tokenSubj$ = new ReplaySubject(1);\n\tprivate guardUserSubj$: BehaviorSubject = new BehaviorSubject(\n\t\tnull\n\t);\n\n\tpublic token$: Observable = this.tokenSubj$.asObservable();\n\tpublic guard$: Observable;\n\n\tconstructor(\n\t\tprivate storage: AtsStoreService,\n\t\tprivate timeoutService: CmTimeoutService,\n\t\tprivate logger: AtsLoggerService,\n\t\tprivate http: HttpClient,\n\t\tprivate apollo: Apollo,\n\t\tprivate settings: CmSettingsService,\n\t\tprivate router: Router,\n\t\tprivate dialogs: MatDialog,\n\t\tprivate events: CmEventService\n\t) {\n\t\tconst routeShouldDeleteCurrentToken$ = this.router.events.pipe(\n\t\t\tfilter(event => event instanceof NavigationStart),\n\t\t\ttake(1),\n\t\t\tmap(\n\t\t\t\t(event: NavigationStart) =>\n\t\t\t\t\tthis.settings.portal === PortalTypeEnum.CandidatePortal &&\n\t\t\t\t\tevent.url.includes('impersonate')\n\t\t\t)\n\t\t);\n\n\t\tcombineLatest([\n\t\t\tthis.settings.client$.pipe(filter(client => !!client)),\n\t\t\trouteShouldDeleteCurrentToken$,\n\t\t]).subscribe(([client, routeShouldDeleteCurrentToken]) => {\n\t\t\tthis.tokenName = `CM-${AUTH_COOOKIE}.${client}`;\n\t\t\tthis.twoStepTokenName = `${TWO_STEP_STORE}.${client}`;\n\t\t\tthis.twoStepExpiryTokenName = `${TWO_STEP_STORE_EXPIRE}.${client}`;\n\n\t\t\tif (routeShouldDeleteCurrentToken) {\n\t\t\t\tthis.clearAuthToken();\n\t\t\t}\n\n\t\t\tconst token = this.getAuthToken();\n\n\t\t\tif (token) {\n\t\t\t\tthis.tokenSnapshot = token;\n\t\t\t\tthis.validateToken$().pipe(take(1)).subscribe();\n\t\t\t} else {\n\t\t\t\tthis.updatePublicToken(null);\n\t\t\t}\n\t\t});\n\n\t\tthis.monitorCookieValidity$();\n\n\t\tthis.guard$ = Guard.getFromUser$(this.guardUserSubj$.asObservable());\n\t}\n\n\t/**\n\t * Get a guard instance with the current user information\n\t * @method\n\t * @return {Guard} - Returns an instance of a guard using the current user\n\t */\n\tpublic guard(): Guard {\n\t\tconst user = this.guardUserSubj$.getValue();\n\t\tif (!user) {\n\t\t\tconst errMessage = 'Guard cannot be invoked before user is loaded';\n\t\t\tthis.logger.critical(errMessage);\n\t\t\tthrow new Error(errMessage);\n\t\t}\n\t\treturn new Guard(Guard.getCheckpointsFromUser(user));\n\t}\n\n\t/**\n\t * Generate a token by logging someone in\n\t * @method\n\t * @param {AccessTokenCreateRequest} request - The request credentials for the entity logging in\n\t * @return {Observable} - Emits true if succesfully logging the person in\n\t */\n\tlogin$(request: AccessTokenCreateRequest): Observable {\n\t\treturn this.updateTokenWithPost$(`${this.settings.api}/access-token`, request).pipe(\n\t\t\tmap(Boolean),\n\t\t\tcatchError(err => {\n\t\t\t\tif (this.isBannedCandidateError(err)) {\n\t\t\t\t\treturn this.handleBannedCandidateError();\n\t\t\t\t}\n\t\t\t\treturn throwError(() => err);\n\t\t\t})\n\t\t);\n\t}\n\n\t/**\n\t * Invalidates the current session\n\t * @method\n\t * @return {Observable} - Emits true if the logout was successful\n\t */\n\tlogout$(): void {\n\t\tif (this.getAuthToken()) {\n\t\t\tconst headers = new HttpHeaders({\n\t\t\t\t...CmInterceptHeaders.IgnoreAuthError,\n\t\t\t});\n\t\t\tthis.token$\n\t\t\t\t.pipe(\n\t\t\t\t\tfirst(),\n\t\t\t\t\tswitchMap(token =>\n\t\t\t\t\t\tthis.http.delete(`${this.settings.api}/access-token`, { headers }).pipe(\n\t\t\t\t\t\t\tcatchError(this.handleAPIError),\n\t\t\t\t\t\t\tmap(() => (token || {}).logoutUrl || null)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\ttap(() => this.clearAuthCache())\n\t\t\t\t)\n\t\t\t\t.subscribe(url => {\n\t\t\t\t\tif (url) {\n\t\t\t\t\t\twindow.location.href = url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.router.navigate(this.settings.route(['login']));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t} else {\n\t\t\tthis.clearAuthCache();\n\t\t}\n\t}\n\n\t/**\n\t * Public method to update the user used for the guard\n\t * @method\n\t * @param {AppUser | null} user - The user to use for the guard\n\t * @return {void}\n\t */\n\n\tupdateGuardUser(user: AppUser | null): void {\n\t\tthis.guardUserSubj$.next(user);\n\t}\n\n\t/**\n\t * Generate a token via impersonation\n\t * @method\n\t * @param {string} url - The url to get the token from\n\t * @return {Observable} - Emits true if succesfully getting and validating the token\n\t */\n\tupdateTokenWithPost$(url: string, request: any = {}, options?: any): Observable {\n\t\treturn this.generateToken$(url, options, request).pipe(map(Boolean));\n\t}\n\n\t/**\n\t * Generate a token via impersonation\n\t * @method\n\t * @param {string} url - The url to get the token from\n\t * @return {Observable} - Emits true if succesfully getting and validating the token\n\t */\n\tupdateTokenWithGet$(url: string, options?: any): Observable {\n\t\treturn this.generateToken$(url, options).pipe(\n\t\t\tmap(Boolean),\n\t\t\tcatchError(err => {\n\t\t\t\tif (this.isBannedCandidateError(err)) {\n\t\t\t\t\treturn this.handleBannedCandidateError();\n\t\t\t\t}\n\t\t\t\treturn throwError(() => err);\n\t\t\t})\n\t\t);\n\t}\n\n\t/**\n\t * Hits the API to generate an access token, then validates the token\n\t * in order to check if two-step is required and get all of the token data\n\t * @method\n\t * @private\n\t * @param {string} token - The access token value\n\t * @param {number} expiry - The store expiration in number of minutes\n\t * @return {CmAccessToken | null} - The access token, or null if it wasn't valid\n\t */\n\tprivate generateToken$(\n\t\turl: string,\n\t\toptions: any = {},\n\t\trequest: any = null\n\t): Observable {\n\t\tconst apiCall$ = !request\n\t\t\t? this.http.get(url, options)\n\t\t\t: this.http.post(url, request, options);\n\t\treturn apiCall$.pipe(\n\t\t\ttap(this.handleTokenSideEffects),\n\t\t\tswitchMap((response: CmInitialAccessToken | null) =>\n\t\t\t\t!response ? of(null) : this.validateToken$()\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Validates the access token currently stored in the store\n\t * @method\n\t * @return {CmAccessToken | null} - The access token, or null if not valid. Errors are logged to the API.\n\t */\n\tvalidateToken$(): Observable {\n\t\treturn this.http\n\t\t\t.get(`${this.settings.api}/access-token`, {\n\t\t\t\theaders: CmInterceptHeaders.IgnoreAuthError,\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tretry(1),\n\t\t\t\tcatchError(err => {\n\t\t\t\t\tthis.updatePublicToken(null);\n\t\t\t\t\treturn throwError(err);\n\t\t\t\t}),\n\t\t\t\ttap(response => {\n\t\t\t\t\tthis.updatePublicToken(response || null);\n\t\t\t\t}),\n\t\t\t\tmap(Boolean)\n\t\t\t);\n\t}\n\n\t/**\n\t * Ensures that currently stored token is in a valid state, i.e. it hasn't changed in other tab\n\t * Does not test the validity of the token value itself.\n\t * @method\n\t * @return {boolean} - True if there is no token snapshot or thee token matches the snapshot\n\t */\n\tvalidateTokenAgainstSnapshot(): boolean {\n\t\tif (!this.tokenSnapshot) {\n\t\t\treturn true;\n\t\t}\n\t\tconst token = this.getAuthToken();\n\t\treturn token && this.tokenSnapshot === token;\n\t}\n\n\t/**\n\t * Triggers the email for the two step login process\n\t * @method\n\t * @return {Observable} - An observable that emits true once the email has successfully be seent\n\t */\n\ttriggerTwoStepEmail(isIp: boolean = false): Observable {\n\t\treturn this.settings.culture$.pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap(culture =>\n\t\t\t\tthis.http.post(\n\t\t\t\t\tisIp\n\t\t\t\t\t\t? `${this.settings.api}/two-step/en?ip=true`\n\t\t\t\t\t\t: `${this.settings.api}/two-step/${culture.code}`,\n\t\t\t\t\t{},\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: CmInterceptHeaders.IgnoreAuthError,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t),\n\t\t\tcatchError(this.handleAPIError),\n\t\t\tmap(Boolean)\n\t\t);\n\t}\n\n\t/**\n\t * Validates the query param token during the two-factor process\n\t * @method\n\t * @param {string} token - The token that needs validated\n\t * @return {Observable} - An observable that emits true once the email has successfully be seent\n\t */\n\tvalidateTwoStepToken(token: string): Observable {\n\t\t// Make sure the token is resolved before we start this process\n\t\treturn this.settings.culture$.pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap(culture =>\n\t\t\t\tthis.http.get<{ token: string; absoluteExpiration: string }>(\n\t\t\t\t\t`${this.settings.api}/two-step/${culture.code}?t=${token}`\n\t\t\t\t)\n\t\t\t),\n\t\t\tcatchError(this.handleAPIError),\n\t\t\tswitchMap(response => {\n\t\t\t\tif (!response) {\n\t\t\t\t\treturn throwError('Unable to validate two step token');\n\t\t\t\t}\n\t\t\t\tconst storeExpiration = AtsDate.until(\n\t\t\t\t\tnew Date(response.absoluteExpiration),\n\t\t\t\t\tAtsDateUnit.Minute\n\t\t\t\t);\n\t\t\t\tthis.storage.saveToStore(this.twoStepTokenName, response.token, storeExpiration);\n\t\t\t\tthis.storage.saveToStore(\n\t\t\t\t\tthis.twoStepExpiryTokenName,\n\t\t\t\t\tresponse.absoluteExpiration,\n\t\t\t\t\tstoreExpiration\n\t\t\t\t);\n\t\t\t\treturn this.validateToken$();\n\t\t\t}),\n\t\t\tmap(Boolean)\n\t\t);\n\t}\n\n\t/**\n\t * Saves an access token to the cache (in a store)\n\t * @method\n\t * @param {string} token - The access token value\n\t * @param {number} expiry - The store expiration in number of minutes\n\t * @return {void}\n\t */\n\tsetAuthToken(token: string, expiry: number): void {\n\t\tif (!this.tokenName) {\n\t\t\tconst errMessage = 'Token cannot be set before client has been resolved';\n\t\t\tthis.logger.critical(errMessage);\n\t\t\treturn;\n\t\t}\n\t\tthis.storage.saveToStore(this.tokenName, token, expiry);\n\t}\n\n\t/**\n\t * Clears out the current auth token store\n\t * @method\n\t * @return {void} - An observable that emits true if the user/candidate was successfully logged in\n\t */\n\tclearAuthToken(): void {\n\t\tthis.storage.deleteFromStore(this.tokenName);\n\t\tthis.tokenSnapshot = null;\n\t}\n\n\t/**\n\t * Clears out the current public token store\n\t * @method\n\t * @return {void}\n\t */\n\tclearPublicToken(): void {\n\t\tthis.updatePublicToken(null);\n\t}\n\n\t/**\n\t * Gets the current access token stored in the cache (as a store)\n\t * @method\n\t * @return {string | null} - The value of the access token in the store, or null if not found\n\t */\n\tgetAuthToken(): string | null {\n\t\tif (!this.tokenName) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.storage.getFromStore(this.tokenName) || null;\n\t}\n\n\t/**\n\t * Gets the current two-step token stored in the cache (as a store)\n\t * @method\n\t * @return {string | null} - The value of the access token in the store, or null if not found\n\t */\n\tgetTwoStepToken(): string | null {\n\t\tif (!this.twoStepTokenName) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.storage.getFromStore(this.twoStepTokenName) || null;\n\t}\n\n\t/**\n\t * Resets the apollo cache\n\t * Clears it out and re-runs all active queries\n\t * @method\n\t * @return {void}\n\t */\n\tresetApolloCache(): void {\n\t\tthis.apollo.client.stop();\n\t\tthis.apollo.client.resetStore();\n\t}\n\n\t/**\n\t * Converts a URL that is a string into values the createUrlTree function on Angular's\n\t * Router can consume. This does not remove client or culture.\n\t * Examples of URLs\n\t * 1. '/home/dashboard'\n\t * 2. '/sso/vue?autoRedirect=true'\n\t * @method\n\t * @param {string} url - URL that needs converting\n\t * @return {{path: string[]; queryParams: Params }}\n\t */\n\tconvertUrlToUrlTree(url: string): { path: string[]; queryParams: Params } {\n\t\tconst hasQueryParams = url.includes('?');\n\t\tconst redirectUrlWithoutParams = hasQueryParams ? url.slice(0, url.indexOf('?')) : url;\n\t\tconst queryParams = {};\n\t\tif (hasQueryParams) {\n\t\t\turl.slice(url.indexOf('?') + 1)\n\t\t\t\t.split('&')\n\t\t\t\t.forEach(queryParamAndValue => {\n\t\t\t\t\tconst [param, value] = queryParamAndValue.split('=');\n\t\t\t\t\tqueryParams[param] = value;\n\t\t\t\t});\n\t\t}\n\t\treturn {\n\t\t\tpath: [...redirectUrlWithoutParams.split('/').filter(segment => !!segment)],\n\t\t\tqueryParams,\n\t\t};\n\t}\n\n\t/**\n\t * Broadcasts an error to the event service if the candidate is banned\n\t * @private\n\t * @method\n\t * @return {Observable}\n\t */\n\n\tprivate isBannedCandidateError = (err: any): boolean => {\n\t\tconst id = err.id || err?.error?.id;\n\t\tconst status = err.statusCode || err?.error?.statusCode;\n\t\tif (status === 403 && id === BANNED_CANDIDATE_ERROR) {\n\t\t\tthis.events.handleAuthError(BANNED_CANDIDATE_ERROR, 'ban-redirect');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\tprivate handleBannedCandidateError = (): Observable =>\n\t\tthrowError(() => new Error('banned-error'));\n\n\t/**\n\t * Updates public token subject\n\t * @private\n\t * @method\n\t * @return {void}\n\t */\n\tprivate updatePublicToken(response: CmAccessToken | null): void {\n\t\tif (!response) {\n\t\t\tthis.tokenSubj$.next(null);\n\t\t} else {\n\t\t\t// User type on token must match the portal we are in\n\t\t\tif (\n\t\t\t\t(this.settings.portal === PortalTypeEnum.CandidatePortal &&\n\t\t\t\t\tresponse.accessType === AppUserType.CANDIDATE) ||\n\t\t\t\t(this.settings.portal !== PortalTypeEnum.CandidatePortal &&\n\t\t\t\t\tresponse.accessType !== AppUserType.CANDIDATE)\n\t\t\t) {\n\t\t\t\tthis.tokenSubj$.next({\n\t\t\t\t\tisImpersonating: response.isImpersonating,\n\t\t\t\t\tlocalizationEnabled: response.localizationEnabled,\n\t\t\t\t\tlogoutUrl: response.logoutUrl,\n\t\t\t\t\tabsoluteExpirationMinutesRemaining: response.absoluteExpirationMinutesRemaining,\n\t\t\t\t\tslidingExpirationMinutes: response.slidingExpirationMinutes,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.tokenSubj$.next(null);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Monitors the validity of the current token state\n\t * NOT the validity of the token itself\n\t * @private\n\t * @method\n\t * @return {void}\n\t */\n\tprivate monitorCookieValidity$(): void {\n\t\t// This is the validity of the state of the token/snapshot matching\n\t\t// NOT the validity of the token value\n\t\tinterval(500)\n\t\t\t.pipe(\n\t\t\t\tmap(() => {\n\t\t\t\t\tconst token = this.getAuthToken();\n\t\t\t\t\t// Not having a token -- VALID STATE\n\t\t\t\t\t// OR\n\t\t\t\t\t// Have a token and snapshot is empty --- VALID STATE\n\t\t\t\t\t// OR\n\t\t\t\t\t// Have a token and a snapshot and they are equal --- VALID STATE\n\t\t\t\t\tconst validTokenState =\n\t\t\t\t\t\t(!token && !this.tokenSnapshot) ||\n\t\t\t\t\t\t(token && !this.tokenSnapshot) ||\n\t\t\t\t\t\t(token && this.tokenSnapshot && this.tokenSnapshot === token);\n\n\t\t\t\t\t// Token snapshot needs to go away if the token is gone OR they don't match\n\t\t\t\t\tif (!token || this.tokenSnapshot !== token) {\n\t\t\t\t\t\tthis.tokenSnapshot = null;\n\t\t\t\t\t}\n\t\t\t\t\treturn validTokenState;\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged()\n\t\t\t)\n\t\t\t.subscribe(validTokenState => {\n\t\t\t\tif (!validTokenState) {\n\t\t\t\t\tthis.updatePublicToken(null);\n\t\t\t\t\tthis.router.navigate(this.settings.route(['session-expired']));\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Clears out authed cache data\n\t * @private\n\t * @method\n\t * @return {void}\n\t */\n\tprivate clearAuthCache(): void {\n\t\tthis.dialogs.closeAll();\n\t\tthis.clearAuthToken();\n\t\tthis.updatePublicToken(null);\n\t\tthis.apollo.client.stop();\n\t\tthis.apollo.client.clearStore();\n\t\tthis.timeoutService.deleteExpiration();\n\t}\n\n\t/**\n\t * Grabs the access token snapshot and saves it to a store\n\t * @private\n\t * @method\n\t * @param {CmInitialAccessToken | null} response - An initial access token response\n\t * @return {void}\n\t */\n\tprivate handleTokenSideEffects = (response: any) => {\n\t\tif ((response || {}).accessTokenId) {\n\t\t\tthis.tokenSnapshot = response.accessTokenId;\n\t\t\tthis.setAuthToken(response.accessTokenId, response.absoluteExpirationMinutes || 480);\n\t\t\tthis.timeoutService.setTimeoutToStorage(response);\n\t\t}\n\t};\n\n\tprivate handleAPIError = (err: any): Observable => {\n\t\treturn of(false);\n\t};\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\nexport function retry(configOrCount = Infinity) {\n let config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n const { count = Infinity, delay, resetOnSuccess: resetOnSuccess = false } = config;\n return count <= 0\n ? identity\n : operate((source, subscriber) => {\n let soFar = 0;\n let innerSub;\n const subscribeForRetry = () => {\n let syncUnsub = false;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, (err) => {\n if (soFar++ < count) {\n const resub = () => {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n const notifierSubscriber = createOperatorSubscriber(subscriber, () => {\n notifierSubscriber.unsubscribe();\n resub();\n }, () => {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber);\n }\n else {\n resub();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n","import { Injectable } from '@angular/core';\r\nimport { FormGroupDirective } from '@angular/forms';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@UntilDestroy()\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmFormErrorService {\r\n\tprivate formsToLog = new BehaviorSubject<{ [key: string]: any | null }>({});\r\n\tformsToLog$ = this.formsToLog.asObservable();\r\n\r\n\tconstructor() {}\r\n\r\n\tregisterFormForLogging(key: string, form: FormGroupDirective) {\r\n\t\tif (!this.formsToLog[key]) {\r\n\t\t\tform.valueChanges.pipe(untilDestroyed(this)).subscribe(value =>\r\n\t\t\t\tthis.formsToLog.next({\r\n\t\t\t\t\t...this.formsToLog.getValue(),\r\n\t\t\t\t\t...{ [key]: value },\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tunregisterFormFromLogging(key: string) {\r\n\t\tconst forms = { ...this.formsToLog.getValue() };\r\n\t\tdelete forms[key];\r\n\t\tthis.formsToLog.next(forms);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ChistType, InsertCandidateHistory, InsertWebUserHistory, PortalTypeEnum, WuhType } from '@ats/api/cm';\r\nimport { AtsStoreService } from '@ats/store';\r\nimport { Apollo, gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\nimport { CmSettingsService } from './settings.service';\r\n\r\nconst INSERT_CANDIDATE_HISTORY = gql`\r\n\tmutation insertCandidateHistory($request: InsertCandidateHistory!) {\r\n\t\tinsertCandidateHistory(request: $request) {\r\n\t\t\tcmcId\r\n\t\t\tcreated\r\n\t\t\tcreator\r\n\t\t\tid\r\n\t\t\tmessage\r\n\t\t\ttargetId\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nconst INSERT_WEBUSER_HISTORY = gql`\r\n\tmutation insertWebUserHistory($request: InsertWebUserHistory!) {\r\n\t\tinsertWebUserHistory(request: $request) {\r\n\t\t\tcreated\r\n\t\t\tid\r\n\t\t\ttype\r\n\t\t\tmessage\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmCookiePolicyService {\r\n\tconstructor(\r\n\t\tprivate readonly settings: CmSettingsService,\r\n\t\tprivate readonly storage: AtsStoreService,\r\n\t\tprivate readonly apollo: Apollo\r\n\t) {}\r\n\r\n\t/**\r\n\t * Gets the name of the store used for storing the store policy acceptance\r\n\t * @method\r\n\t * @return {string} - Returns a string with the name of the store policy store\r\n\t */\r\n\tgetFromStoreName(id: number): string {\r\n\t\tconst prefix = this.settings.portal === PortalTypeEnum.CandidatePortal ? 'C' : 'U';\r\n\t\treturn `${prefix}${id}_APN_${this.settings.client}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the store policy store exists\r\n\t * @method\r\n\t * @return {boolean} - Returns a boolean indicating if the store policy store exists or not\r\n\t */\r\n\thasCookieBeenAccepted(id: number): boolean {\r\n\t\treturn !!this.storage.getFromStore(this.getFromStoreName(id));\r\n\t}\r\n\r\n\t/**\r\n\t * Saves the store policy store\r\n\t * @method\r\n\t * @return {void}\r\n\t */\r\n\tacceptCookie(id: number): void {\r\n\t\tthis.storage.saveToStore(this.getFromStoreName(id), 'CookiePolicyModal', 60 * 24 * 365);\r\n\t}\r\n\r\n\tinsertCandidateHistory$(cmcId: number): Observable {\r\n\t\treturn this.apollo.mutate<\r\n\t\t\t{ insertCandidateHistory: InsertCandidateHistory },\r\n\t\t\t{ request: InsertCandidateHistory }\r\n\t\t>({\r\n\t\t\tmutation: INSERT_CANDIDATE_HISTORY,\r\n\t\t\tvariables: {\r\n\t\t\t\trequest: {\r\n\t\t\t\t\tcandidateId: {\r\n\t\t\t\t\t\tcmcId,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmessage: 'Candidate has agreed to the store policy.',\r\n\t\t\t\t\ttype: ChistType.CookieAgrSigned,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tinsertWebUserHistory$(id: number): Observable {\r\n\t\treturn this.apollo.mutate<{ insertWebUserHistory: InsertWebUserHistory }, { request: InsertWebUserHistory }>({\r\n\t\t\tmutation: INSERT_WEBUSER_HISTORY,\r\n\t\t\tvariables: {\r\n\t\t\t\trequest: {\r\n\t\t\t\t\twebUserId: { id },\r\n\t\t\t\t\tmessage: 'User has agreed to the store policy.',\r\n\t\t\t\t\ttype: WuhType.CookieAgrSigned,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ClientSponsor } from '@ats/api/cm';\nimport { AtsUtilityService } from '@ats/utility';\nimport { Apollo, gql, QueryRef } from 'apollo-angular';\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, first, map, skip, switchMap } from 'rxjs/operators';\nimport { CmInterceptHeaders } from '../models';\nimport { CmAuthService } from './auth.service';\nimport { CmSettingsService } from './settings.service';\n\nconst QUERY_CLIENT_FEATURES = gql`\n\tquery featuresService__features {\n\t\tclientSponsor {\n\t\t\tname\n\t\t\tcurrentAccountFeatures {\n\t\t\t\tid\n\t\t\t\tname\n\t\t\t\tkey\n\t\t\t}\n\t\t}\n\t}\n`;\n\nenum FeaturesActionTypes {\n\tUPDATE_PUBLIC_FEATURES = 'Update public features',\n\tUPDATE_PROTECTED_FEATURES = 'Update protected features',\n}\n\ninterface FeaturesAction {\n\treadonly type: FeaturesActionTypes;\n\treadonly payload: string[] | null;\n}\n\nclass FeaturesState {\n\tpublicFeatures: string[] = null;\n\tprotectedFeatures: string[] | null = null;\n}\n\nconst reduce = (state: FeaturesState, action: FeaturesAction) => {\n\tswitch (action.type) {\n\t\tcase FeaturesActionTypes.UPDATE_PUBLIC_FEATURES:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tpublicFeatures: [...(action.payload as string[])],\n\t\t\t};\n\n\t\tcase FeaturesActionTypes.UPDATE_PROTECTED_FEATURES:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tprotectedFeatures: action.payload ? [...(action.payload as string[])] : null,\n\t\t\t};\n\t}\n};\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class CmFeatureService {\n\tprivate publicFeaturesHaveBeenSet = false;\n\tprotected state = new FeaturesState();\n\tprotected dispatch = new BehaviorSubject(this.state);\n\n\tpublic$: Observable = this.dispatch.asObservable().pipe(\n\t\tmap(state => state.publicFeatures),\n\t\tdistinctUntilChanged()\n\t);\n\n\tprotected$: Observable = this.dispatch.asObservable().pipe(\n\t\tmap(state => state.protectedFeatures),\n\t\tdistinctUntilChanged()\n\t);\n\n\tconstructor(\n\t\tprivate auth: CmAuthService,\n\t\tprivate apollo: Apollo,\n\t\tprivate settings: CmSettingsService,\n\t\tprivate http: HttpClient,\n\t\tprotected utilities: AtsUtilityService\n\t) {\n\t\tconst featureQuery = this.fetchProtectedFeatures$();\n\n\t\tconst features$ = featureQuery.valueChanges.pipe(\n\t\t\tmap(results =>\n\t\t\t\tthis.utilities.reduceNameKey(((results.data || {}).clientSponsor || {}).currentAccountFeatures || [])\n\t\t\t)\n\t\t);\n\n\t\tthis.auth.token$\n\t\t\t.pipe(\n\t\t\t\tfilter(token => !!token),\n\t\t\t\tskip(1)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tfeatureQuery.refetch();\n\t\t\t});\n\n\t\tthis.auth.token$\n\t\t\t.pipe(switchMap(token => (token ? features$ : of(null))))\n\t\t\t.subscribe((features: string[] | null) => this.updateProtectedFeatures(features));\n\t}\n\n\tpublic fetchPublicFeatures$(client: string): Observable {\n\t\tif (!this.publicFeaturesHaveBeenSet) {\n\t\t\tthis.publicFeaturesHaveBeenSet = true;\n\t\t\tthis.http\n\t\t\t\t.get<{ name: string; key: string }[]>(`${this.settings.api}/${client}/features`, {\n\t\t\t\t\theaders: CmInterceptHeaders.BypassAuth,\n\t\t\t\t})\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(features =>\n\t\t\t\t\t\t// TODO: Refactor this into an object instead of array for better performance\n\t\t\t\t\t\tfeatures.reduce(\n\t\t\t\t\t\t\t(_features: string[], feature) =>\n\t\t\t\t\t\t\t\tfeature.key !== feature.name\n\t\t\t\t\t\t\t\t\t? _features.concat(feature.key, feature.name)\n\t\t\t\t\t\t\t\t\t: _features.concat(feature.name),\n\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\tcatchError(err => {\n\t\t\t\t\t\tthrowError(err);\n\t\t\t\t\t\treturn of([]);\n\t\t\t\t\t}),\n\t\t\t\t\tfirst()\n\t\t\t\t)\n\t\t\t\t.subscribe(features => this.updatePublicFeatures(features));\n\t\t}\n\n\t\treturn this.public$.pipe(\n\t\t\tfilter(features => features !== null),\n\t\t\tfirst()\n\t\t);\n\t}\n\n\t/**\n\t * Load the current client features\n\t * @private\n\t * @method\n\t * @return {Observable} - Returns an observable containing a string array of features enabled for the client\n\t */\n\tprivate fetchProtectedFeatures$(): QueryRef<{ clientSponsor: ClientSponsor }> {\n\t\treturn this.apollo.watchQuery<{ clientSponsor: ClientSponsor }>({\n\t\t\tquery: QUERY_CLIENT_FEATURES,\n\t\t});\n\t}\n\n\t/**\n\t * Updates the public features in state\n\t * @private\n\t * @method\n\t * @param {string[] | null} features - The public features to update in state\n\t * @return {void}\n\t */\n\tprivate updatePublicFeatures(features: string[] | null): void {\n\t\tconst type = FeaturesActionTypes.UPDATE_PUBLIC_FEATURES;\n\t\tconst action = { payload: features, type };\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\n\t}\n\n\t/**\n\t * Updates the protected features in state\n\t * @private\n\t * @method\n\t * @param {string[] | null} features - The protected features to update in state\n\t * @return {void}\n\t */\n\tprivate updateProtectedFeatures(features: string[] | null): void {\n\t\tconst type = FeaturesActionTypes.UPDATE_PROTECTED_FEATURES;\n\t\tconst action = { payload: features, type };\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { Unsubscribable } from '@ats/utility';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\r\nimport { CmLocalizationService } from './localization.service';\r\n\r\n/**\r\n * @deprecated\r\n * Manages missing localizations\r\n * @class CmMissingLocalizationService\r\n * @property {Observable} missingLocalizations$ - An array of localization keys that have been handled\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmMissingLocalizationService extends Unsubscribable {\r\n\tprivate missingLocalizationSubj$: BehaviorSubject = new BehaviorSubject([]);\r\n\tmissingLocalizations$: Observable = this.missingLocalizationSubj$.asObservable();\r\n\r\n\tconstructor(private localizations: CmLocalizationService) {\r\n\t\tsuper();\r\n\t\tthis.localizations.localization$\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter(locs => !!locs),\r\n\t\t\t\tswitchMap(() => this.localizations.missingLocalization$),\r\n\t\t\t\tfilter(key => !key?.startsWith('/dev') && key !== '/' && key !== '/undefined'),\r\n\t\t\t\ttakeUntil(this.unsub)\r\n\t\t\t)\r\n\t\t\t.subscribe(locKey => this.handleMissingLocalization(locKey));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles when a missing localization is found\r\n\t * @method\r\n\t * @param {string} key - The localization key\r\n\t * @return {void}\r\n\t */\r\n\thandleMissingLocalization(key: string): void {\r\n\t\tconst allMissing = this.missingLocalizationSubj$.getValue();\r\n\t\tif (allMissing.includes(key)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthrowError(new Error(`Missing localization: ${key ? key : 'Undefined Key'}`));\r\n\t\tthis.missingLocalizationSubj$.next([...allMissing, key]);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NavigationError, Router } from '@angular/router';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Injectable()\r\nexport class CmRouterErrorService {\r\n\tconstructor(private readonly router: Router) {\r\n\t\tthis.router.events\r\n\t\t\t.pipe(\r\n\t\t\t\tuntilDestroyed(this),\r\n\t\t\t\tfilter(event => event instanceof NavigationError)\r\n\t\t\t)\r\n\t\t\t.subscribe(event => {\r\n\t\t\t\tconst err = new Error('Angular Router Error');\r\n\t\t\t\tthrow {\r\n\t\t\t\t\t...err,\r\n\t\t\t\t\t...event,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ParamMap } from '@angular/router';\r\nimport { PortalTypeEnum } from '@ats/api/cm';\r\nimport { Observable } from 'rxjs';\r\nimport { CmInterceptHeaders, INGRESS_TYPE } from '../models';\r\nimport { CmAuthService } from './auth.service';\r\nimport { CmSettingsService } from './settings.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmSSOService {\r\n\tconstructor(\r\n\t\tprivate auth: CmAuthService,\r\n\t\tprivate settings: CmSettingsService\r\n\t) {}\r\n\r\n\t/**\r\n\t * SSO ingress to the candidate portal\r\n\t * @method\r\n\t * @param {INGRESS_TYPE} ingressType - The provider/ingress type\r\n\t * @param {ParamMap} queryParamMap - The query params from the request\r\n\t * @param {boolean} [internal=false] - Flag indicating if this an internal user\r\n\t * @return {Observable} - Emits true if the operation was a success\r\n\t */\r\n\tfromSSO(\r\n\t\tingressType: INGRESS_TYPE,\r\n\t\tqueryParamMap: ParamMap,\r\n\t\tinternal: boolean = false\r\n\t): Observable {\r\n\t\treturn this.sso(ingressType, queryParamMap, internal);\r\n\t}\r\n\r\n\tencodeQueryParams(queryParamMap: ParamMap): string {\r\n\t\treturn queryParamMap.keys\r\n\t\t\t.map(key => `${key}=${encodeURI(queryParamMap.get(key))}`)\r\n\t\t\t.join('&');\r\n\t}\r\n\r\n\t/**\r\n\t * SSO ingress\r\n\t * @method\r\n\t * @private\r\n\t * @param {string} provider - The provider for the SSO request\r\n\t * @param {ParamMap} queryParamMap - The query params from the request\r\n\t * @param {boolean} internal - Flag indicating if this an internal user\r\n\t * @return {Observable} - Emits true if the operation was a success\r\n\t */\r\n\tprivate sso(provider: string, queryParamMap: ParamMap, internal: boolean): Observable {\r\n\t\tconst queryString = this.encodeQueryParams(queryParamMap);\r\n\t\tconst ssoPath = this.getSSOUrlBase(internal) + `${provider}?${queryString}`;\r\n\t\treturn this.auth.updateTokenWithGet$(ssoPath, {\r\n\t\t\theaders: { ...CmInterceptHeaders.BypassAuth, ...CmInterceptHeaders.IgnoreAuthError },\r\n\t\t\twithCredentials: true,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Determine SSO ingress path for all portals\r\n\t * @method\r\n\t * @private\r\n\t * @param {boolean} internal - Flag indicating if this an internal user\r\n\t * @return {string} - Emits the base path for SSO ingress\r\n\t */\r\n\tprivate getSSOUrlBase(internal: boolean): string {\r\n\t\tlet baseRoute = `${this.settings.api}/${this.settings.client}`;\r\n\t\tif (this.settings.portal !== PortalTypeEnum.CandidatePortal) {\r\n\t\t\tbaseRoute += internal ? '/internal' : '/sponsor';\r\n\t\t}\r\n\t\treturn `${baseRoute}/sso/ingress/`;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { ClientService, ClientTheme } from '@cm/core/client';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class CmThemeService {\n\t/** @deprecated Use `ClientService.theme$` instead. */\n\tclient$: Observable = this.clientService.theme$;\n\n\tconstructor(private readonly clientService: ClientService) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Culture, GetLocalizationListRequest } from '@ats/api/cm';\nimport { SettingsService } from '@cm/core/settings';\nimport { CmEventService } from '@cm/core/system';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo, gql } from 'apollo-angular';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of, throwError } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, first, map, switchMap, take } from 'rxjs/operators';\nimport { ERROR_GUIDS } from '../data/error-mappings';\nimport { CmCulture, PublicLocalization } from '../models';\nimport { CmAuthService } from './auth.service';\n\nconst LOCALIZATION_QUERY = gql`\n\tquery publicLocalizations($request: GetLocalizationListRequest!) {\n\t\tclientSponsor {\n\t\t\tlocalizationList(request: $request) {\n\t\t\t\tname\n\t\t\t\ttype\n\t\t\t\tvalue\n\t\t\t\tdefaultValue\n\t\t\t\thtmlAllowed\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst enum LocalizationActionTypes {\n\tUPDATE_LOCALIZATIONS = 'Update localizations',\n\tUPDATE_IS_LOCALIZING = 'Update the localizing status',\n\tUPDATE_LOCALIZE_DATA = 'Update active localization data',\n}\ninterface LocalizationAction {\n\treadonly type: LocalizationActionTypes;\n\treadonly payload: CmCulture | CmCulture[] | Culture[] | boolean | PublicLocalization | PublicLocalization[];\n}\n\nclass LocalizationState {\n\tlocalizations: PublicLocalization[] = [];\n\tisLocalizing: boolean = false;\n\tactiveLocalization: PublicLocalization = null;\n}\n\nconst reduce = (state: LocalizationState, action: LocalizationAction) => {\n\tswitch (action.type) {\n\t\tcase LocalizationActionTypes.UPDATE_LOCALIZATIONS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlocalizations: [...(action.payload as PublicLocalization[]).map(loc => loc)],\n\t\t\t};\n\t\tcase LocalizationActionTypes.UPDATE_IS_LOCALIZING:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisLocalizing: action.payload as boolean,\n\t\t\t};\n\t\tcase LocalizationActionTypes.UPDATE_LOCALIZE_DATA:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tactiveLocalization: action.payload ? { ...(action.payload as PublicLocalization) } : null,\n\t\t\t};\n\t}\n};\n\n/**\n * @deprecated Use @cm/core/localization LocalizationService instead\n */\n@UntilDestroy()\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class CmLocalizationService {\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tmissingLocalizationSub$: Subject = new Subject();\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tmissingLocalization$: Observable = this.missingLocalizationSub$.asObservable();\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tlocalizationSnapshot: PublicLocalization[] = [];\n\n\tprivate state = new LocalizationState();\n\tprivate dispatch = new BehaviorSubject(this.state);\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tlocalization$: Observable = this.dispatch\n\t\t.asObservable()\n\t\t.pipe(map(state => state.localizations));\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tisLocalizing$: Observable = this.dispatch.asObservable().pipe(\n\t\tmap(state => state.isLocalizing),\n\t\tdistinctUntilChanged()\n\t);\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tactiveLocalization$: Observable = this.dispatch.asObservable().pipe(\n\t\tmap(state => state.activeLocalization),\n\t\tdistinctUntilChanged(this.distinctUntilChangePredicate)\n\t);\n\n\t/**\n\t * @deprecated\n\t * Use supportedCultures$ on the CmSettingsService\n\t */\n\treadonly possibleSupported$: Observable = this.settings.supportedCultures$;\n\n\t/**\n\t * @deprecated\n\t * Use clientCultures$ on the CmSettingsService\n\t */\n\treadonly supported$: Observable = this.settings.existingCultures$;\n\n\t/**\n\t * @deprecated\n\t * Use @cm/core/settings SettingsService.culture$\n\t */\n\tculture$: Observable = this.settings.culture$;\n\n\tconstructor(\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly eventService: CmEventService,\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly settings: SettingsService\n\t) {\n\t\tthis.auth.token$.pipe(filter(token => !token)).subscribe(() => this.updateIsLocalizing(false));\n\t}\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tinit(): Observable {\n\t\t// This has to be here. In the constructor creates a circular dependency since the logging\n\t\t// HTTP interceptors relies on the localization service\n\t\tthis.instantiateLocalizations();\n\n\t\tconst localizations$ = this.localization$.pipe(\n\t\t\tfilter(localization => (localization || []).length > 0),\n\t\t\ttake(1)\n\t\t);\n\n\t\treturn localizations$.pipe(\n\t\t\tcatchError(err => throwError(err)),\n\t\t\tswitchMap(() => of(true))\n\t\t);\n\t}\n\t/**\n\t *\n\t * @deprecated - Use localizationService.find$ and do the rest yourself\n\t */\n\tlocalizationHasValue$(locKey: string, ignoreDefault: boolean = false): Observable {\n\t\treturn this.localization$.pipe(map(locs => !!locs.find(loc => loc.name === locKey)?.value?.length));\n\t}\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\ttoggleLocalization(): void {\n\t\tthis.setLocalizationState(!(this.state || ({} as LocalizationState)).isLocalizing);\n\t}\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\tsetLocalizationState(isLocalizing: boolean): void {\n\t\tif (!isLocalizing) {\n\t\t\tthis.updateIsLocalizing(isLocalizing);\n\t\t} else {\n\t\t\t// Only turn it on if they are authorized\n\t\t\tthis.auth.token$\n\t\t\t\t.pipe(\n\t\t\t\t\tfirst(),\n\t\t\t\t\tmap(token => (token || {}).localizationEnabled)\n\t\t\t\t)\n\t\t\t\t.subscribe(isAuthorized => {\n\t\t\t\t\tif (isAuthorized) {\n\t\t\t\t\t\tthis.updateIsLocalizing(isLocalizing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t}\n\t/**\n\t * @deprecated - Just don't use it, okay?\n\t */\n\ttriggerLocalization(localization: PublicLocalization = null): void {\n\t\tconst type = LocalizationActionTypes.UPDATE_LOCALIZE_DATA;\n\t\tconst action = { payload: localization, type };\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\n\t}\n\t/**\n\t * @deprecated - Use LocalizationService.findGUIDLocName and find$\n\t */\n\tmapErrorGUID(guid?: string, isKey: boolean = false): string {\n\t\tlet locKey: string;\n\t\tif (isKey) {\n\t\t\tlocKey = guid;\n\t\t} else {\n\t\t\t// Default to server error\n\t\t\tconst guidMap: string = !guid || guid === '' ? 'Core/Error.GUID.ServerError' : this.getErrorMap(guid);\n\n\t\t\tlocKey = guidMap ? guidMap : 'Core/Error.GUID.ServerError';\n\t\t}\n\t\tconst errorLoc = this.state.localizations.find(loc => loc.name === locKey);\n\t\treturn errorLoc\n\t\t\t? errorLoc.value\n\t\t\t: 'An error has occurred and has been reported. Please try your request again later.';\n\t}\n\t/**\n\t * @deprecated - Use LocalizationService.findGUIDLocName\n\t */\n\tgetErrorMap(guid?: string): string {\n\t\treturn ERROR_GUIDS[`GUID_${guid}`];\n\t}\n\t/**\n\t * @deprecated - Use localizationService.find$ - Make it an observable\n\t */\n\tlocalize(key: string, defaultValue: string): string {\n\t\tconst localization = this.findLocalization(key);\n\t\treturn localization?.value || defaultValue;\n\t}\n\t/**\n\t * @deprecated - Use localizationService.find$\n\t */\n\tlocalize$(key: string, defaultValue: string): Observable {\n\t\treturn this.findLocalization$(key).pipe(map(localization => localization?.value || defaultValue));\n\t}\n\t/**\n\t * @deprecated - Use localizationService.find$ - Make it an observable\n\t */\n\tfindLocalization(key: string, strict: boolean = true): PublicLocalization {\n\t\treturn this.getLocalizationFromList(key, strict);\n\t}\n\t/**\n\t * @deprecated - Use localizationService.find$\n\t */\n\tfindLocalization$(key: string, strict: boolean = true): Observable {\n\t\treturn this.localization$.pipe(map(locs => this.getLocalizationFromList(key, strict, locs)));\n\t}\n\n\t/**\n\t * @deprecated - Use LocalizationViewService.popSystemError\n\t * Displays the generic system error snackbar\n\t * @method\n\t * @param {string} [id='system-error'] - The id to use for displaying the error\n\t * @return {void}\n\t */\n\tpopLocalizedSystemError(id: string = 'system-error') {\n\t\tthis.eventService.handleSystemError(id);\n\t}\n\n\tprivate getLocalizationFromList(\n\t\tkey: string,\n\t\tstrict: boolean,\n\t\tlist: PublicLocalization[] = [...this.state.localizations]\n\t): PublicLocalization {\n\t\tconst localization = list.find(loc => (strict ? loc.name === key : loc.name.includes(key))) || null;\n\t\tif (!localization) {\n\t\t\tthis.reportMissingLocalization(key);\n\t\t}\n\t\treturn localization;\n\t}\n\n\tprivate reportMissingLocalization(key: string) {\n\t\tthis.missingLocalizationSub$.next(key);\n\t}\n\n\tprivate updateIsLocalizing(payload: boolean) {\n\t\tconst type = LocalizationActionTypes.UPDATE_IS_LOCALIZING;\n\t\tconst action = { payload, type };\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\n\t}\n\n\tprivate updateLocalizations(localizations: PublicLocalization[]) {\n\t\tthis.localizationSnapshot = (localizations || []).slice();\n\t\tconst type = LocalizationActionTypes.UPDATE_LOCALIZATIONS;\n\t\tconst action = { payload: localizations, type };\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\n\t}\n\n\tprivate instantiateLocalizations(): void {\n\t\tcombineLatest([this.settings.cultureCode$, this.settings.client$])\n\t\t\t.pipe(\n\t\t\t\tswitchMap(\n\t\t\t\t\t([culture, client]) =>\n\t\t\t\t\t\tthis.apollo.watchQuery<{\n\t\t\t\t\t\t\tclientSponsor: { name: string; localizationList: PublicLocalization[] };\n\t\t\t\t\t\t\trequest: GetLocalizationListRequest;\n\t\t\t\t\t\t}>({\n\t\t\t\t\t\t\tquery: LOCALIZATION_QUERY,\n\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\t\tclientAlias: client,\n\t\t\t\t\t\t\t\t\tcultureName: culture,\n\t\t\t\t\t\t\t\t\tportalType: this.settings.portal,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}).valueChanges\n\t\t\t\t),\n\t\t\t\tmap(({ data }) => (data.clientSponsor || {}).localizationList || []),\n\t\t\t\tuntilDestroyed(this)\n\t\t\t)\n\t\t\t.subscribe(localizations => this.updateLocalizations(localizations));\n\t}\n\n\tprivate distinctUntilChangePredicate(a: any, b: any): boolean {\n\t\tif (a === b) {\n\t\t\treturn true;\n\t\t}\n\t\tif (a && b && a.code === b.code) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { PortalTypeEnum } from '@ats/api/cm';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { Observable, combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { CmCulture, PortalCoreFeature } from '../models';\r\n\r\n/**\r\n * @deprecated Use @cm/core/settings SettingsService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmSettingsService {\r\n\tclient$: Observable;\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.clientSnapshot\r\n\t */\r\n\tget client(): string {\r\n\t\treturn this.settings.clientSnapshot;\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.culture$\r\n\t */\r\n\tculture$: Observable = this.settings.culture$.pipe(map(culture => culture));\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.existingCultures$\r\n\t */\r\n\tclientCultures$: Observable = this.settings.existingCultures$;\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.supportedCultures$\r\n\t */\r\n\tsupportedCultures$: Observable = this.settings.supportedCultures$;\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.apiWithContext$\r\n\t */\r\n\tapiWithContext$: Observable = this.settings.apiWithContext$;\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.spUrl\r\n\t */\r\n\treadonly spUrl: string = this.settings.spUrl;\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.cpUrl\r\n\t */\r\n\treadonly cpUrl: string = this.settings.cpUrl;\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.api\r\n\t */\r\n\treadonly api: string = this.settings.api;\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.portalNumeric\r\n\t */\r\n\treadonly portal: PortalTypeEnum = this.settings.portalNumeric;\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.coreFeature\r\n\t */\r\n\treadonly portalCoreFeature: PortalCoreFeature = this.settings.coreFeature;\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.culture$\r\n\t */\r\n\tlanguage$: Observable = this.settings.culture$.pipe(map(culture => culture.code));\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.client/client$ and/or SettingsService.culture$\r\n\t */\r\n\tsettings$: Observable<{ client: string; language: string }> = combineLatest([\r\n\t\tthis.settings.client$,\r\n\t\tthis.language$,\r\n\t]).pipe(map(([client, language]) => ({ client, language })));\r\n\r\n\tconstructor(private readonly settings: SettingsService) {\r\n\t\tthis.client$ = this.settings.client$;\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.routeWithContext\r\n\t */\r\n\troute(path: string[]): string[] {\r\n\t\treturn this.settings.routeWithContext(path);\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated Use @cm/core/settings SettingsService.routeWithNewCulture\r\n\t */\r\n\trouteWithNewCulture(path: string[], newCulture: string) {\r\n\t\treturn this.settings.routeWithNewCulture(path, newCulture);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AtsDate, AtsDateUnit } from '@ats/utility';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { StorageService } from '@cm/core/storage';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Observable, Subject, filter, map, switchMap, take, timer } from 'rxjs';\r\n\r\nconst WARN_INTERVAL_MINUTES = 3;\r\nconst DEFAULT_EXPIRATION_MINUTES = 90;\r\nexport const EXPIRATION_TIME = 'CM-timeout';\r\n\r\n@UntilDestroy()\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmTimeoutService {\r\n\tprivate readonly resetCount = new Subject();\r\n\treset$ = this.resetCount.asObservable();\r\n\r\n\tprivate cookieName$: Observable;\r\n\tcookieName: string;\r\n\r\n\texpirationTime$: Observable;\r\n\tatWarnTime$: Observable<0>;\r\n\twarnDuration$: Observable<0>;\r\n\tprivate expirationFromToken: number;\r\n\r\n\tconstructor(private readonly storage: StorageService, private readonly settings: SettingsService) {\r\n\t\tthis.cookieName$ = this.settings.client$.pipe(\r\n\t\t\tfilter(client => !!client),\r\n\t\t\tmap(client => `${EXPIRATION_TIME}.${client}`),\r\n\t\t\ttake(1)\r\n\t\t);\r\n\r\n\t\tthis.expirationTime$ = this.cookieName$.pipe(\r\n\t\t\tswitchMap(cookieName => this.storage.getStorageItemEvents$(cookieName)),\r\n\t\t\tfilter(t => t > 0)\r\n\t\t);\r\n\r\n\t\tthis.atWarnTime$ = this.expirationTime$.pipe(\r\n\t\t\tmap(time => time - warnDuration),\r\n\t\t\tswitchMap(time => timer(time))\r\n\t\t);\r\n\r\n\t\tconst warnDuration = AtsDate.toMS(WARN_INTERVAL_MINUTES, AtsDateUnit.Minute);\r\n\t\tthis.warnDuration$ = timer(warnDuration);\r\n\t\tthis.reset$.pipe(untilDestroyed(this)).subscribe(() => {\r\n\t\t\tthis.resetExpiration();\r\n\t\t});\r\n\t}\r\n\r\n\tresetCountdown(): void {\r\n\t\tthis.resetCount.next();\r\n\t}\r\n\r\n\tsetTimeoutToStorage(token: any): void {\r\n\t\tthis.expirationFromToken = this.getExpiration(token);\r\n\t\tthis.cookieName$.subscribe(cookieName => {\r\n\t\t\tthis.cookieName = cookieName;\r\n\t\t\tthis.storage.save(cookieName, this.expirationFromToken, DEFAULT_EXPIRATION_MINUTES);\r\n\t\t});\r\n\t}\r\n\r\n\tresetExpiration(): void {\r\n\t\tthis.storage.save(this.cookieName, this.expirationFromToken, DEFAULT_EXPIRATION_MINUTES);\r\n\t}\r\n\r\n\tdeleteExpiration(): void {\r\n\t\tthis.storage.delete(this.cookieName);\r\n\t}\r\n\r\n\tprivate getExpiration(token: any): number {\r\n\t\tconst expirationMinutes =\r\n\t\t\ttoken.absoluteExpirationMinutesRemaining < token.slidingExpirationMinutes\r\n\t\t\t\t? token.absoluteExpirationMinutesRemaining\r\n\t\t\t\t: token.slidingExpirationMinutes;\r\n\t\treturn (\r\n\t\t\tAtsDate.toMS(expirationMinutes, AtsDateUnit.Minute) ||\r\n\t\t\tAtsDate.toMS(DEFAULT_EXPIRATION_MINUTES, AtsDateUnit.Minute)\r\n\t\t);\r\n\t}\r\n}\r\n","import { InjectionToken } from '@angular/core';\nimport { CoreConfig } from '../models';\n\nexport const CORE_CONFIG_TOKEN = new InjectionToken('forRoot() Core Module Config');\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LOC_PORTAL_TYPE = new InjectionToken('forRoot() Portal Type for Localization');\r\n","import { Injectable } from '@angular/core';\r\nimport { CmAuthService } from '@ats/cm/core';\r\nimport { AtsResponsiveService, atsSort } from '@ats/utility';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, take, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { NavNode } from './nav-node.interface';\r\n\r\nenum NavActionTypes {\r\n\tUPDATE_NAV_VISIBILITY = 'Update nav panel visibility',\r\n\tUPDATE_PAGE_NAV_VISIBILITY = 'Update page level nav visibility',\r\n\tUPDATE_PRIMARY_NAV = 'Update primary nav',\r\n\tCLOSE_NAV = 'Close navigation panel',\r\n\tUPDATE_NAV_DISABLED = 'Update nav disabled state',\r\n}\r\n\r\ninterface NavAction {\r\n\treadonly type: NavActionTypes;\r\n\treadonly payload: boolean | NavNode[];\r\n}\r\n\r\nexport interface IHeaderLocs {\r\n\tkey: string;\r\n\tdefault: string;\r\n}\r\n\r\nclass NavState {\r\n\tnavVisible = true;\r\n\tpageNavVisible = true;\r\n\tprimaryNav: NavNode[] = [];\r\n\tnavDisabled = false;\r\n}\r\n\r\nconst reduce = (state: NavState, action: NavAction) => {\r\n\tswitch (action.type) {\r\n\t\tcase NavActionTypes.UPDATE_NAV_VISIBILITY:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnavVisible: action.payload as boolean,\r\n\t\t\t};\r\n\t\tcase NavActionTypes.CLOSE_NAV:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnavVisible: false,\r\n\t\t\t};\r\n\t\tcase NavActionTypes.UPDATE_PAGE_NAV_VISIBILITY:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tpageNavVisible: action.payload as boolean,\r\n\t\t\t};\r\n\t\tcase NavActionTypes.UPDATE_PRIMARY_NAV:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tprimaryNav: (action.payload as NavNode[]).map(node => ({ ...node })),\r\n\t\t\t};\r\n\t\tcase NavActionTypes.UPDATE_NAV_DISABLED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnavDisabled: action.payload as boolean,\r\n\t\t\t};\r\n\t}\r\n};\r\n\r\n@UntilDestroy()\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmNavigationService {\r\n\tprivate state = new NavState();\r\n\tprivate dispatch = new BehaviorSubject(this.state);\r\n\tprivate headerLocalization = new BehaviorSubject({ key: '', default: '' });\r\n\r\n\tnavVisible$: Observable = this.dispatch.asObservable().pipe(\r\n\t\tmap(state => state.navVisible),\r\n\t\tdistinctUntilChanged()\r\n\t);\r\n\tpageNavVisible$: Observable = this.dispatch.asObservable().pipe(\r\n\t\tmap(state => state.pageNavVisible),\r\n\t\tdistinctUntilChanged()\r\n\t);\r\n\tnavDisabled$: Observable = this.dispatch.asObservable().pipe(\r\n\t\tmap(state => state.navDisabled),\r\n\t\tdistinctUntilChanged()\r\n\t);\r\n\r\n\tnav$: Observable = this.dispatch.asObservable().pipe(map(state => state.primaryNav));\r\n\r\n\tconstructor(private responsiveService: AtsResponsiveService, private auth: CmAuthService) {\r\n\t\tthis.responsiveService.breakpoints$.pipe(take(1)).subscribe(breakpoints => {\r\n\t\t\t// navVisible starts as true. This sets it to false on the initial load if mobile\r\n\t\t\tif (breakpoints.mobile) {\r\n\t\t\t\tthis.toggleNav();\r\n\t\t\t}\r\n\t\t\tif (breakpoints.small) {\r\n\t\t\t\tthis.togglePageNav();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.auth.token$\r\n\t\t\t.pipe(untilDestroyed(this), filter(Boolean), withLatestFrom(this.responsiveService.breakpoints$))\r\n\t\t\t.subscribe(([auth, breakpoint]) => {\r\n\t\t\t\tthis.state = new NavState();\r\n\t\t\t\tthis.state.navVisible = !breakpoint.mobile;\r\n\t\t\t\tthis.dispatch.next(this.state);\r\n\t\t\t});\r\n\t}\r\n\r\n\tloadNav$(nav$: Observable): Observable {\r\n\t\treturn nav$.pipe(\r\n\t\t\ttap(nav => {\r\n\t\t\t\tconst type = NavActionTypes.UPDATE_PRIMARY_NAV;\r\n\t\t\t\tconst action = { payload: nav, type };\r\n\t\t\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tgetPageNav$(path: string, exclude: string[] = [], relativeTo: string = ''): Observable {\r\n\t\treturn this.nav$.pipe(\r\n\t\t\tmap(nodes =>\r\n\t\t\t\tnodes\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\tnode =>\r\n\t\t\t\t\t\t\tnode.url.includes(path) && (!exclude.length || !exclude.some(ex => node.url.includes(ex)))\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.map(node => ({\r\n\t\t\t\t\t\t...node,\r\n\t\t\t\t\t\troute: relativeTo + node.url.replace(path, ''),\r\n\t\t\t\t\t}))\r\n\t\t\t),\r\n\t\t\tatsSort('displayOrder')\r\n\t\t);\r\n\t}\r\n\r\n\ttoggleNav() {\r\n\t\tconst type = NavActionTypes.UPDATE_NAV_VISIBILITY;\r\n\t\tconst action = { payload: !this.state.navVisible, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tcloseNav() {\r\n\t\tconst type = NavActionTypes.CLOSE_NAV;\r\n\t\tconst action = { payload: false, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\ttogglePageNav() {\r\n\t\tconst type = NavActionTypes.UPDATE_PAGE_NAV_VISIBILITY;\r\n\t\tconst action = { payload: !this.state.pageNavVisible, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tupdateNavDisabled(navDisabled: boolean) {\r\n\t\tconst type = NavActionTypes.UPDATE_NAV_DISABLED;\r\n\t\tconst action = { payload: navDisabled, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'cm-continue-modal',\n templateUrl: './cm-continue-modal.component.html',\n styleUrls: ['./cm-continue-modal.component.scss'],\n standalone: false\n})\nexport class CmContinueModalComponent implements OnInit {\n\tconstructor(public dialogRef: MatDialogRef) {}\n\n\tngOnInit() {}\n}\n","

{{\"Please Confirm\" | cmLocalize: \"Core/System.ContinueModal.Title.Confirm\"}}

\r\n
\r\n\t

{{\"Are you sure you want to continue?\" | cmLocalize: \"Core/System.ContinueModal.Content.Message\"}}

\r\n
\r\n\r\n
\r\n\t\r\n\t\r\n
\r\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { PortalTypeEnum } from '@ats/api/cm';\nimport { CmCookiePolicyService, CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\nimport { Observable, of, switchMap } from 'rxjs';\n\n@Component({\n selector: 'cm-cookie-modal',\n templateUrl: './cookie-modal.component.html',\n styleUrls: ['./cookie-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CmCookieModalComponent {\n\tisLoggedIn: Observable;\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(\n\t\tprivate readonly dialogRef: MatDialogRef,\n\t\t@Inject(MAT_DIALOG_DATA) private readonly data: { id: number },\n\t\tprivate readonly settings: CmSettingsService,\n\t\tprivate readonly cookiePolicyService: CmCookiePolicyService\n\t) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\taccept(): void {\n\t\tof(this.settings.portal === PortalTypeEnum.CandidatePortal)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(isCandidatePortal =>\n\t\t\t\t\tisCandidatePortal\n\t\t\t\t\t\t? this.cookiePolicyService.insertCandidateHistory$(this.data.id)\n\t\t\t\t\t\t: this.cookiePolicyService.insertWebUserHistory$(this.data.id)\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.cookiePolicyService.acceptCookie(this.data.id);\n\t\t\t\tthis.dialogRef.close();\n\t\t\t});\n\t}\n}\n","
\n\t
\n\t\t\n\t\t\tWe use stores that improve your experience with the website, keep statistics to optimize performance, and\n\t\t\tallow for interaction with other platforms. For more information please view our\n\t\t\n\t\t\n\t\t\t\n\t\t\t\tPrivacy Statement\n\t\t\t\n\t\t\n\t
\n\t\n
\n","@if (crcat.points !== crcat.pointsMax) {\n\t@if (crcat.pointsMax > 0) {\n\t\t\n\t\t\t{{ unitLabel }}\n\t\t\t\n\t\t\t{{ maxPoints }}\n\t\t\n\t}\n\t@if (crcat.points > 0) {\n\t\t\n\t\t\t{{ unitLabel }}\n\t\t\t\n\t\t\t{{ minPoints }}\n\t\t\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport { CertRequirementCatalogDetail } from '@ats/api/cm';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { LocalizeComponent } from '@cm/ui/localize';\nimport {\n\tCPCrcatPointsLocKeys,\n\tcpCrcatPointsLocs,\n\tSPCrcatPointsLocKeys,\n\tspCrcatPointsLocs,\n} from './points-message-display.locs';\n\n@Component({\n selector: 'cm-points-message-display',\n templateUrl: './points-message-display.component.html',\n styleUrls: ['./points-message-display.component.scss'],\n imports: [CommonModule, LocalizeComponent],\n providers: [LocalizationProvider({ ...spCrcatPointsLocs, ...cpCrcatPointsLocs })]\n})\nexport class PointsMessageDisplayComponent implements OnInit {\n\t@Input({ required: true }) crcat: CertRequirementCatalogDetail;\n\t@Input({ required: true }) pointsControl: AbstractControl | FormControl | null;\n\n\tget unitLabel(): string {\n\t\treturn this.crcat?.factorUnits ?? 'Points';\n\t}\n\n\tget maxPoints(): number {\n\t\treturn this.crcat?.factor > 0\n\t\t\t? this.crcat.pointsMax / this.crcat.factor\n\t\t\t: this.crcat.pointsMax;\n\t}\n\n\tget minPoints(): number {\n\t\treturn this.crcat?.factor > 0 ? this.crcat.points / this.crcat.factor : this.crcat.points;\n\t}\n\n\tconstructor(\n\t\t@Inject(LOC_INJECTOR) public readonly locs: SPCrcatPointsLocKeys & CPCrcatPointsLocKeys\n\t) {}\n\n\tngOnInit() {}\n}\n","
\n\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t
{{ selection.value }}
\n\t
\n
\n","import { KeyValue } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { CmCreqUploadService } from '../creq-upload.service';\n\n@Component({\n selector: 'cm-selection-list',\n templateUrl: './selection-list.component.html',\n styleUrls: ['./selection-list.component.scss'],\n standalone: false\n})\nexport class CmSelectionListComponent implements OnInit {\n\tmaps$: Observable[]>;\n\tconstructor(private readonly uploadService: CmCreqUploadService) {}\n\n\tngOnInit() {\n\t\tthis.maps$ = this.uploadService.maps$;\n\t}\n}\n","@if (creq$ | async; as creq) {\n\t\n\t\t
\n\t\t\t\n\t\t\t{{ creq.activeDate | cmDate }}\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t@if (creq.expireDate) {\n\t\t\t\t{{ creq.expireDate | cmDate }}\n\t\t\t} @else{\n\t\t\t\t\n\t\t\t}\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t{{ creq.provider}}\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t{{ creq.langName }}\n\t\t
\n\n\t\t@if (creq.certRequirementCatalogDetail; as crcatDetail) {\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{{crcatDetail.factorUnits}}\n\t\t\t\t\n\t\t\t\t 0\">\n\t\t\t\t\t{{creq?.points / crcatDetail.factor }}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{creq?.points }}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{creq.points }}\n\t\t\t\t\n\t\t\t
\n\t\t}\n\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
{{ creq.docNotes }}
\n\t\t
\n\t
\n\n}\n\n\n
\n\t\n
\n","import { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core';\nimport { CertRequirementDetail, Culture, PortalType } from '@ats/api/cm';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { Apollo, gql } from 'apollo-angular';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CmCreqUploadService } from '../creq-upload.service';\nimport {\n\tCPUploadConfirmationLocKeys,\n\tcpUploadConfirmationLocs,\n\tSPUploadConfirmationLocKeys,\n\tspUploadConfirmationLocs,\n} from './upload-confirmation.locs';\n\nconst CREQ_CULTURES = gql`\n\tquery creqCultures($request: CulturesRequest) {\n\t\tcultures(request: $request) {\n\t\t\tid\n\t\t\tname\n\t\t\tlabel\n\t\t}\n\t}\n`;\n\n@Component({\n selector: 'cm-upload-confirmation',\n templateUrl: './upload-confirmation.component.html',\n styleUrls: ['./upload-confirmation.component.scss'],\n providers: [LocalizationProvider({ ...cpUploadConfirmationLocs, ...spUploadConfirmationLocs })],\n standalone: false\n})\nexport class CmUploadConfirmationComponent implements OnInit {\n\t@Output() restart = new EventEmitter();\n\tcreq$: Observable & { langName: string }>;\n\treadonly isSP: boolean;\n\n\tconstructor(\n\t\tprivate uploadService: CmCreqUploadService,\n\t\tprivate settings: SettingsService,\n\t\tprivate apollo: Apollo,\n\t\t@Inject(LOC_INJECTOR)\n\t\tpublic readonly locs: CPUploadConfirmationLocKeys & SPUploadConfirmationLocKeys\n\t) {\n\t\tthis.isSP = this.settings.portal === PortalType.SponsorPortal;\n\t}\n\n\tngOnInit() {\n\t\tthis.creq$ = combineLatest([\n\t\t\tthis.fetchCreqCultures$(),\n\t\t\tthis.uploadService.creqUpload$,\n\t\t]).pipe(\n\t\t\tmap(([cultures, creq]) => ({\n\t\t\t\t...creq,\n\t\t\t\tlangName: cultures.find(culture => culture.name === creq.docLanguage)?.label,\n\t\t\t}))\n\t\t);\n\t}\n\n\tstartOver() {\n\t\tthis.restart.emit();\n\t}\n\n\tprivate fetchCreqCultures$() {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ cultures: Partial[] }>({\n\t\t\t\tquery: CREQ_CULTURES,\n\t\t\t\tvariables: { request: { onlyNeutral: true } },\n\t\t\t})\n\t\t\t.valueChanges.pipe(map(results => results?.data?.cultures));\n\t}\n}\n","\n\t\n\t\t
\n\t\t\t\n\t\t\t@if (crcat.instructions) {\n\t\t\t\t\n\t\t\t}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t@if (allowPoints$ | async) {\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ crcat.factorUnits }}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t@if (crcat?.factorUnits) {\n\t\t\t\t\t\t\t{{ crcat.factorUnits }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t@if (crcat?.factorUnits) {\n\t\t\t\t\t\t\t{{ crcat.factorUnits }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t
\n
\n","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormGroupDirective, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n\tCandidateAccount,\n\tCertRequirementCatalogDetail,\n\tCertRequirementDetail,\n\tCrcatType,\n\tCulture,\n\tHubFeature,\n\tHubPermission,\n\tPortalType,\n} from '@ats/api/cm';\nimport { CmAuthService, Guard } from '@ats/cm/core';\nimport { CmNumericValidatorVariation, CmValidators } from '@ats/cm/ui';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { AtsFileUploadService } from '@ats/utility';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo, gql } from 'apollo-angular';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport {\n\tdistinctUntilChanged,\n\tdistinctUntilKeyChanged,\n\tfilter,\n\tmap,\n\tstartWith,\n\tswitchMap,\n\ttake,\n\twithLatestFrom,\n} from 'rxjs/operators';\nimport { CMOption } from '../../../models';\nimport { CmCreqUploadService } from '../creq-upload.service';\nimport { DEFAULT_DOCUMENTATION_VALIDATORS } from '../default-documentation-validators';\nimport {\n\tCPUploadConfirmationLocKeys,\n\tcpUploadConfirmationLocs,\n\tSPUploadConfirmationLocKeys,\n\tspUploadConfirmationLocs,\n} from '../upload-confirmation/upload-confirmation.locs';\nimport {\n\tCPUploadFormLocKeys,\n\tcpUploadFormLocs,\n\tSPUploadFormLocKeys,\n\tspUploadFormLocs,\n} from './upload-form.locs';\n\nconst CREQ_CULTURES = gql`\n\tquery creqCultures($request: CulturesRequest) {\n\t\tcultures(request: $request) {\n\t\t\tid\n\t\t\tname\n\t\t\tlabel\n\t\t}\n\t}\n`;\n\nconst CRCAT_QUERY = (guard: Guard) => gql`\n\tquery certRequirementCatalogDetail($request: RequestByIdOrExternalId!) {\n\t\tcertRequirementCatalogDetail(request: $request) {\n\t\t\tinstructions\n\t\t\tproviderRequired\n\t\t\tstartDate\n\t\t\tcreateAge\n\t\t\tdocRequired\n\t\t\tid\n\t\t\ttype\n\t\t\t${\n\t\t\t\tguard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t.somePermissions([\n\t\t\t\t\t\tHubPermission.CandidateRequirementsContinuingEducationView,\n\t\t\t\t\t\tHubPermission.RequirementsContinuingEducationCatalogView,\n\t\t\t\t\t]).all\n\t\t\t\t\t? `\n\t\t\t\t\tfactor\n\t\t\t\t\tfactorUnits\n\t\t\t\t\tpoints\n\t\t\t\t\tpointsMax\n\t\t\t\t\t`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst CAND_CRCAT_QUERY = (guard: Guard) => gql`\n\tquery candidateAccount($cmcId: CandidateIdRequest, $types: CertRequirementListRequest) {\n\t\tcandidateAccount(request: $cmcId) {\n\t\t\tcmcId\n\t\t\tcertRequirementList(request: $types) {\n\t\t\t\tid\n\t\t\t\t${\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t\t.everyPermission([\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsContinuingEducationView,\n\t\t\t\t\t\t]).all\n\t\t\t\t\t\t? `\n\t\t\t\t\t\tpoints\n\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\tcertRequirementCatalog {\n\t\t\t\t\tid\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst CREATE_CREQ_MUTATION = gql`\n\tmutation createCertRequirement($request: CreateCertRequirementRequest!) {\n\t\tcreateCertRequirement(request: $request) {\n\t\t\tid\n\t\t\tdocUploadUrl\n\t\t}\n\t}\n`;\n\nconst GET_CREQ_QUERY = (guard: Guard) => gql`\n\tquery candidateAccount($cand: CandidateIdRequest, $creq: RequestByIdOrExternalId!) {\n\t\tcandidateAccount(request: $cand) {\n\t\t\tcmcId\n\t\t\texternalId\n\t\t\tcertRequirementDetail(request: $creq) {\n\t\t\t\tinvalid\n\t\t\t\tcmcId\n\t\t\t\tdocUrl\n\t\t\t\tdocNotes\n\t\t\t\tdocLanguage\n\t\t\t\t${\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t\t.somePermissions([\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsContinuingEducationView,\n\t\t\t\t\t\t\tHubPermission.RequirementsContinuingEducationCatalogView,\n\t\t\t\t\t\t]).all\n\t\t\t\t\t\t? `\n\t\t\t\t\tpoints\n\t\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\tcertRequirementCatalogDetail {\n\t\t\t\t\tid\n\t\t\t\t\texternalId\n\t\t\t\t\tinstructions\n\t\t\t\t\tdocRequired\n\t\t\t\t\t${\n\t\t\t\t\t\tguard\n\t\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t\t\t.somePermissions([\n\t\t\t\t\t\t\t\tHubPermission.CandidateRequirementsContinuingEducationView,\n\t\t\t\t\t\t\t\tHubPermission.RequirementsContinuingEducationCatalogView,\n\t\t\t\t\t\t\t]).all\n\t\t\t\t\t\t\t? `\n\t\t\t\t\tfactor\n\t\t\t\t\tfactorUnits\n\t\t\t\t\tpoints\n\t\t\t\t\tpointsMax\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tactiveDate\n\t\t\t\texpireDate\n\t\t\t\texternalId\n\t\t\t}\n\t\t}\n\t}\n`;\n\n@UntilDestroy()\n@Component({\n selector: 'cm-upload-form',\n templateUrl: './upload-form.component.html',\n styleUrls: ['./upload-form.component.scss'],\n providers: [\n LocalizationProvider({\n ...spUploadFormLocs,\n ...cpUploadFormLocs,\n ...cpUploadConfirmationLocs,\n ...spUploadConfirmationLocs,\n }),\n ],\n standalone: false\n})\nexport class CmUploadFormComponent implements OnInit {\n\t@Input() cmcId$: Observable;\n\t@Output() next = new EventEmitter();\n\tcrcat$: Observable;\n\tcultures$: Observable;\n\toverrideExpiration$: Observable;\n\tformGroup: UntypedFormGroup;\n\ttoday = new Date();\n\treadonly isSP: boolean;\n\treadonly allowPoints$: Observable;\n\tcrcatType = CrcatType;\n\tceAccess$: Observable<{ view: boolean; modify: boolean }>;\n\n\tprivate minDateSnapshot: Date;\n\n\tconstructor(\n\t\tprivate readonly parentForm: FormGroupDirective,\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly uploadService: CmCreqUploadService,\n\t\tprivate readonly settings: SettingsService,\n\t\tprivate readonly fileService: AtsFileUploadService,\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly notifications: AtsNotificationService,\n\t\t@Inject(LOC_INJECTOR)\n\t\tpublic readonly locs: CPUploadConfirmationLocKeys &\n\t\t\tSPUploadConfirmationLocKeys &\n\t\t\tCPUploadFormLocKeys &\n\t\t\tSPUploadFormLocKeys\n\t) {\n\t\tthis.isSP = this.settings.portal === PortalType.SponsorPortal;\n\t\tthis.allowPoints$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducationCeMaxPoints]).none\n\t\t\t)\n\t\t);\n\t}\n\n\t// Angular Material But\n\t// https://stackoverflow.com/questions/48216330/angular-5-formgroup-reset-doesnt-reset-validators\n\t// https://github.com/angular/angular/issues/15741\n\n\tngOnInit() {\n\t\tthis.formGroup = this.parentForm.form;\n\t\tthis.parentForm.form.reset();\n\t\tthis.overrideExpiration$ = this.overrideExpireDate.valueChanges.pipe(\n\t\t\tdistinctUntilChanged(),\n\t\t\tstartWith(false)\n\t\t);\n\t\tthis.crcat$ = this.uploadService.selection$.pipe(\n\t\t\tfilter(selection => !!selection.name),\n\t\t\tswitchMap(selection => this.fetchCRCat$(selection.name)),\n\t\t\tdistinctUntilKeyChanged('id')\n\t\t);\n\n\t\tthis.cultures$ = this.fetchCreqCultures$().pipe(\n\t\t\tmap(cultures =>\n\t\t\t\tcultures.map(culture => ({ display: culture.label, value: culture.name }))\n\t\t\t)\n\t\t);\n\n\t\tthis.ceAccess$ = this.auth.guard$.pipe(\n\t\t\tmap(guard => ({\n\t\t\t\tview: guard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t.everyPermission([HubPermission.CandidateRequirementsContinuingEducationView])\n\t\t\t\t\t.all,\n\t\t\t\tmodify: guard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t.everyPermission([HubPermission.CandidateRequirementsContinuingEducationModify])\n\t\t\t\t\t.all,\n\t\t\t}))\n\t\t);\n\n\t\tcombineLatest([this.crcat$, this.ceAccess$, this.allowPoints$])\n\t\t\t.pipe(untilDestroyed(this))\n\t\t\t.subscribe(([crcat, ceAccess, allowPoints]) => {\n\t\t\t\tif (crcat.providerRequired !== null && this.provider.disabled) {\n\t\t\t\t\tthis.provider.enable();\n\t\t\t\t}\n\n\t\t\t\tif (crcat.providerRequired) {\n\t\t\t\t\tthis.provider.setValidators([Validators.required]);\n\t\t\t\t} else {\n\t\t\t\t\tthis.provider.setValidators(null);\n\t\t\t\t\tif (crcat.providerRequired === null) {\n\t\t\t\t\t\tthis.provider.disable();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!this.isSP) {\n\t\t\t\t\tthis.expireDate.disable();\n\t\t\t\t}\n\n\t\t\t\tif (crcat.createAge === 0) {\n\t\t\t\t\tthis.activeDate.setValue(new Date());\n\t\t\t\t\tthis.activeDate.disable();\n\t\t\t\t} else if (crcat.createAge === null) {\n\t\t\t\t\tthis.minDateSnapshot = crcat.startDate ? new Date(crcat.startDate) : null;\n\t\t\t\t} else if (crcat.createAge !== null) {\n\t\t\t\t\tconst now = new Date();\n\t\t\t\t\tconst date1 = crcat.startDate ? new Date(crcat.startDate) : null;\n\t\t\t\t\tconst date2 = crcat.createAge\n\t\t\t\t\t\t? new Date(now.setMonth(now.getMonth() + -1 * crcat.createAge))\n\t\t\t\t\t\t: null;\n\t\t\t\t\tthis.minDateSnapshot = date2 > date1 ? date2 : date1;\n\t\t\t\t}\n\n\t\t\t\tif (!ceAccess.modify || crcat.type !== CrcatType.CeActivity || !allowPoints) {\n\t\t\t\t\tthis.points.disable();\n\t\t\t\t} else if (allowPoints) {\n\t\t\t\t\tthis.setPoints(crcat);\n\t\t\t\t}\n\n\t\t\t\tif (crcat.docRequired === null) {\n\t\t\t\t\tthis.documentation.disable();\n\t\t\t\t\tthis.documentationLang.disable();\n\t\t\t\t} else if (!crcat.docRequired || this.isSP) {\n\t\t\t\t\tthis.documentation.setValidators(DEFAULT_DOCUMENTATION_VALIDATORS);\n\t\t\t\t\tthis.documentation.enable();\n\t\t\t\t\tthis.documentationLang.enable();\n\t\t\t\t\tthis.setDocumentationLanguage();\n\t\t\t\t} else {\n\t\t\t\t\tthis.documentation.setValidators([\n\t\t\t\t\t\tValidators.required,\n\t\t\t\t\t\t...DEFAULT_DOCUMENTATION_VALIDATORS,\n\t\t\t\t\t]);\n\t\t\t\t\tthis.documentation.enable();\n\t\t\t\t\tthis.documentationLang.enable();\n\t\t\t\t\tthis.setDocumentationLanguage();\n\t\t\t\t}\n\n\t\t\t\tif (crcat.validPeriod) {\n\t\t\t\t\tconst now = new Date();\n\t\t\t\t\tthis.expireDate.setValue(\n\t\t\t\t\t\tnew Date(now.setMonth(now.getMonth() + crcat.validPeriod))\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (this.documentation.value) {\n\t\t\t\t\tthis.documentation.setValue(null);\n\t\t\t\t}\n\n\t\t\t\tthis.parentForm.form.markAsPristine();\n\t\t\t\tthis.parentForm.form.markAsUntouched();\n\t\t\t});\n\t}\n\n\tprivate setPoints(crcat: CertRequirementCatalogDetail): void {\n\t\tconst catalogPoints = (crcat || {}).points;\n\t\tconst pointsMax = (crcat || {}).pointsMax;\n\t\tconst factor = (crcat || {}).factor ? (crcat || {}).factor : 1;\n\n\t\tif (pointsMax > 0 && catalogPoints > 0 && pointsMax === catalogPoints) {\n\t\t\tthis.points.setValue(catalogPoints);\n\t\t\tthis.points.disable();\n\t\t} else {\n\t\t\tthis.points.setValidators([\n\t\t\t\tValidators.required,\n\t\t\t\tCmValidators.numeric(CmNumericValidatorVariation.Positive),\n\t\t\t\tCmValidators.numeric(CmNumericValidatorVariation.Integer),\n\t\t\t]);\n\t\t\tif (pointsMax > 0) {\n\t\t\t\tthis.points.addValidators(CmValidators.factorPointsValidator(pointsMax, factor));\n\t\t\t}\n\t\t\tif (catalogPoints > 0) {\n\t\t\t\tthis.points.setValue(catalogPoints);\n\t\t\t\tthis.points.addValidators(Validators.min(catalogPoints));\n\t\t\t}\n\t\t}\n\t}\n\n\tget activeDate() {\n\t\treturn this.formGroup.get('activeDate');\n\t}\n\tget expireDate() {\n\t\treturn this.formGroup.get('expireDate');\n\t}\n\tget overrideExpireDate() {\n\t\treturn this.formGroup.get('overrideExpireDate');\n\t}\n\tget points() {\n\t\treturn this.formGroup.get('points');\n\t}\n\tget provider() {\n\t\treturn this.formGroup.get('provider');\n\t}\n\tget notes() {\n\t\treturn this.formGroup.get('notes');\n\t}\n\tget comments() {\n\t\treturn this.formGroup.get('comments');\n\t}\n\tget documentationLang() {\n\t\treturn this.formGroup.get('documentationLang');\n\t}\n\tget documentation() {\n\t\treturn this.formGroup.get('documentation');\n\t}\n\tget minDate() {\n\t\treturn this.minDateSnapshot && !this.isSP ? this.minDateSnapshot : null;\n\t}\n\n\thandleSubmit() {\n\t\tthis.formGroup.markAllAsTouched();\n\n\t\tif (this.documentation.errors) {\n\t\t\tObject.keys(this.documentation.errors).forEach(err => {\n\t\t\t\tlet locKey = '';\n\t\t\t\tswitch (err) {\n\t\t\t\t\tcase 'required':\n\t\t\t\t\t\tlocKey = this.isSP\n\t\t\t\t\t\t\t? this.locs.SPUploadFormFieldErrorDocumentationRequired\n\t\t\t\t\t\t\t: this.locs.CPUploadFormFieldErrorDocumentationRequired;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'fileSize':\n\t\t\t\t\t\tlocKey = this.isSP\n\t\t\t\t\t\t\t? this.locs.SPUploadFormFieldErrorDocumentationSize\n\t\t\t\t\t\t\t: this.locs.CPUploadFormFieldErrorDocumentationSize;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'maxlength':\n\t\t\t\t\t\tlocKey = this.isSP\n\t\t\t\t\t\t\t? this.locs.SPUploadFormFieldErrorDocumentationLimit\n\t\t\t\t\t\t\t: this.locs.CPUploadFormFieldErrorDocumentationLimit;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (locKey) {\n\t\t\t\t\tthis.notifications.showFailure(locKey);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (!this.formGroup.valid) {\n\t\t\treturn;\n\t\t}\n\t\tconst cmcId$ = this.cmcId$.pipe(distinctUntilChanged());\n\t\tconst crcat$ = this.crcat$.pipe(distinctUntilChanged());\n\n\t\tcombineLatest([cmcId$, crcat$, this.allowPoints$])\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\tmap(([cmcId, crcat, allowPoints]) => {\n\t\t\t\t\tconst request = {\n\t\t\t\t\t\tcmcId,\n\t\t\t\t\t\tcrcatId: crcat.id,\n\t\t\t\t\t\tactiveDate: this.activeDate.value,\n\t\t\t\t\t\ttype: crcat.type,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.overrideExpireDate.value) {\n\t\t\t\t\t\trequest['expireDate'] = this.expireDate.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.provider.value) {\n\t\t\t\t\t\trequest['provider'] = this.provider.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.documentationLang.value) {\n\t\t\t\t\t\trequest['docLanguage'] = this.documentationLang.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.notes.value) {\n\t\t\t\t\t\trequest['docNotes'] = this.notes.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allowPoints && this.points.value) {\n\t\t\t\t\t\trequest['points'] = Math.floor(\n\t\t\t\t\t\t\t+this.points.value * (crcat?.factor > 0 ? crcat.factor : 1)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.comments.value) {\n\t\t\t\t\t\trequest['historyComment'] = this.comments.value;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn request;\n\t\t\t\t}),\n\t\t\t\twithLatestFrom(this.auth.guard$),\n\t\t\t\tswitchMap(([data, guard]) => {\n\t\t\t\t\tconst { type, ...request } = data;\n\t\t\t\t\treturn this.apollo\n\t\t\t\t\t\t.mutate<{ createCertRequirement: Partial }>({\n\t\t\t\t\t\t\tmutation: CREATE_CREQ_MUTATION,\n\t\t\t\t\t\t\tvariables: { request },\n\t\t\t\t\t\t\trefetchQueries: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tquery: CAND_CRCAT_QUERY(guard),\n\t\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\t\tcmcId: { cmcId: request.cmcId },\n\t\t\t\t\t\t\t\t\t\ttypes: { types: [type] },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\tmap(results => ({\n\t\t\t\t\t\t\t\tcreq: ((results || {}).data || {}).createCertRequirement || {},\n\t\t\t\t\t\t\t\tcmcId: request.cmcId,\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ creq, cmcId }) => {\n\t\t\t\t\treturn this.documentation?.value\n\t\t\t\t\t\t? this.fileService\n\t\t\t\t\t\t\t\t.uploadFile(this.documentation.value, creq.docUploadUrl)\n\t\t\t\t\t\t\t\t.pipe(map(() => ({ creq, cmcId })))\n\t\t\t\t\t\t: of({ creq, cmcId });\n\t\t\t\t}),\n\t\t\t\twithLatestFrom(this.auth.guard$),\n\t\t\t\tswitchMap(([{ creq, cmcId }, guard]) => {\n\t\t\t\t\treturn this.apollo.query<{ candidateAccount: CandidateAccount }>({\n\t\t\t\t\t\tquery: GET_CREQ_QUERY(guard),\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\tcand: { cmcId },\n\t\t\t\t\t\t\tcreq: { id: creq.id },\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe(({ data }) => {\n\t\t\t\tthis.uploadService.setCReq((data.candidateAccount || {}).certRequirementDetail);\n\t\t\t\tthis.next.emit();\n\t\t\t});\n\t}\n\n\tprivate setDocumentationLanguage(): void {\n\t\tif (!this.documentationLang.value) {\n\t\t\tthis.cultures$.pipe(take(1)).subscribe(cultures => {\n\t\t\t\tif (cultures.map(culture => culture.value).includes('en')) {\n\t\t\t\t\tthis.documentationLang.setValue('en');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate fetchCRCat$(id: number): Observable {\n\t\treturn this.auth.guard$.pipe(\n\t\t\tswitchMap(guard =>\n\t\t\t\tthis.apollo\n\t\t\t\t\t.watchQuery<{ certRequirementCatalogDetail: CertRequirementCatalogDetail }>({\n\t\t\t\t\t\tquery: CRCAT_QUERY(guard),\n\t\t\t\t\t\tvariables: { request: { id } },\n\t\t\t\t\t})\n\t\t\t\t\t.valueChanges.pipe(map(({ data }) => (data || {}).certRequirementCatalogDetail))\n\t\t\t)\n\t\t);\n\t}\n\n\tprivate fetchCreqCultures$(): Observable[]> {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ cultures: Partial[] }>({\n\t\t\t\tquery: CREQ_CULTURES,\n\t\t\t\tvariables: { request: { onlyNeutral: true } },\n\t\t\t})\n\t\t\t.valueChanges.pipe(map(({ data }) => (data || {}).cultures));\n\t}\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged((x, y) => compare ? compare(x[key], y[key]) : x[key] === y[key]);\n}\n","

{{ \"Please confirm\" | cmLocalize: locFeature +\r\n\t\"/_Shared.DeleteConfirmation.Title.Confirm\" }}\r\n

\r\n
\r\n\t

\r\n\t\tAre you sure you\r\n\t\t\twant to\r\n\t\t\tdelete this\r\n\t\t\titem?\r\n\t

\r\n\t

\r\n\t\t{{ message }}\r\n\t

\r\n
\r\n\r\n
\r\n\t\r\n\t\r\n
\r\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\n\n@Component({\n selector: 'cm-delete-confirmation',\n templateUrl: './cm-delete-confirmation.component.html',\n styleUrls: ['./cm-delete-confirmation.component.scss'],\n standalone: false\n})\nexport class CmDeleteConfirmationComponent {\n\tmessage: string;\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(\n\t\tpublic dialogRef: MatDialogRef,\n\t\t@Inject(MAT_DIALOG_DATA) data,\n\t\tprivate settings: CmSettingsService\n\t) {\n\t\tthis.message = data?.message ? data.message : null;\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n}\n","\n\tDANGER\n\t\n\t\t\n\t\t\n\t\t\n\t\n\n\n\tERROR\n\t\n\t\t\n\t\t\n\t\t\n\t\n\n\n\tINFO\n\t\n\t\t\n\t\t\n\t\t\n\t\n\n\n\tSUCCESS\n\t\n\t\t\n\t\t\n\t\n\n\n\t\n\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'cm-inline-alert',\n templateUrl: './inline-alert.component.html',\n styleUrls: ['./inline-alert.component.scss'],\n standalone: false\n})\nexport class CmInlineAlert implements OnInit {\n\t@Input() type: 'info' | 'warn' | 'error' | 'danger' | 'success' = 'info';\n\tconstructor() {}\n\n\tngOnInit() {}\n}\n","\n\t

\n\t\t{{'Localizing' | cmLocalize:locFeature + '/System.LocalizeModal.Title.Localizing'}}\n\t\t — {{ localization?.name }}\n\t

\n\t
\n\n\n\t\t
\n\t\t\t\n\t\t\t\t{{ localization?.uiType || '' | atsSplitPascal }}\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ localization?.shared | cmBool }}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ localization?.htmlAllowed | cmBool }}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ localization?.defaultValue }}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
{{ displayVal }}
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{'New Value' | cmLocalize:locFeature +\n\t\t\t\t\t\t\t'/System.LocalizeModal.FieldLabel.NewValue'}}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\n\t
\n\t\t\n\t\t\n\t
\n\n\t\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{'Edit' | cmLocalize:locFeature + '/System.LocalizeModal.Title.Edit'}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{'Default Value' | cmLocalize:locFeature +\n\t\t\t\t\t\t\t'/System.LocalizeModal.FieldLabel.DefaultValue'}}\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{'Current Value' | cmLocalize:locFeature +\n\t\t\t\t\t\t\t'/System.LocalizeModal.FieldLabel.CurrentValue'}}\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t
\n\t\t\t\n\t\t\t{{ localization?.description }}\n\t\t
\n\t
\n\n\t\n\t\t 1\">\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{\"Language\" | cmLocalize:locFeature +\n\t\t\t\t\t\t\"/System.LocalizeModal.FieldLabel.Language\"}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{lang.label}} ({{lang.nativeLabel}})\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n
\n","import { AfterViewInit, Component, Inject, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FetchPolicy, MutationFetchPolicy } from '@apollo/client/core/watchQueryOptions';\nimport {\n\tClientSponsor,\n\tGetLocalizationRequest,\n\tLocalizationResponse,\n\tLocType,\n\tPortalTypeEnum,\n} from '@ats/api/cm';\nimport {\n\tCmCulture,\n\tCmLocalizationService,\n\tCmSettingsService,\n\tPortalCoreFeature,\n\tPublicLocalization,\n} from '@ats/cm/core';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { MatTabChangeEvent } from '@ats/ui';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { TINYMCE } from '@cm/shared/ui/tinymce';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo, gql } from 'apollo-angular';\nimport { Observable, of } from 'rxjs';\nimport { map, pluck, switchMap, take } from 'rxjs/operators';\nimport {\n\tcpLocalizeModalLocs,\n\tLocalizeModalLocType,\n\tspLocalizeModalLocs,\n} from './localize-modal.locs';\n\nconst INDIVIDUAL_LOCALIZATION = gql`\n\tquery individualLocalization($request: GetLocalizationRequest!) {\n\t\tclientSponsor {\n\t\t\tlocalization(request: $request) {\n\t\t\t\tname\n\t\t\t\tcultureName\n\t\t\t\tdefaultValue\n\t\t\t\tdescription\n\t\t\t\thtmlAllowed\n\t\t\t\tpath\n\t\t\t\tportalType\n\t\t\t\tshared\n\t\t\t\ttype\n\t\t\t\tuiType\n\t\t\t\tvalue\n\t\t\t\tisCustomized\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst UPDATE_LOCALIZATION = gql`\n\tmutation updateLocalizationList($request: UpdateLocalizationListRequest!) {\n\t\tupdateLocalizationList(request: $request) {\n\t\t\tname\n\t\t\ttype\n\t\t\tvalue\n\t\t\thtmlAllowed\n\t\t\tisCustomized\n\t\t}\n\t}\n`;\n\nconst DELETE_LOCALIZATION = gql`\n\tmutation deleteLocalizationList($request: DeleteLocalizationListRequest!) {\n\t\tdeleteLocalizationList(request: $request) {\n\t\t\tname\n\t\t\ttype\n\t\t\tvalue\n\t\t\thtmlAllowed\n\t\t\tisCustomized\n\t\t}\n\t}\n`;\n\nconst CREATE_LOCALIZATION = gql`\n\tmutation createLocalizationList($request: CreateLocalizationListRequest!) {\n\t\tcreateLocalizationList(request: $request) {\n\t\t\tname\n\t\t\ttype\n\t\t\tvalue\n\t\t\thtmlAllowed\n\t\t\tisCustomized\n\t\t}\n\t}\n`;\n\ninterface ReturnedLocalization {\n\ttype: LocType;\n\tname: string;\n\tvalue: string;\n\tcultureName: string;\n}\n\n/**\n * @deprecated Use localize-dialog from @cm/ui/localize\n */\n@UntilDestroy()\n@Component({\n selector: 'cm-localize-modal',\n templateUrl: './localize-modal.component.html',\n styleUrls: ['./localize-modal.component.scss'],\n providers: [LocalizationProvider({ ...spLocalizeModalLocs, ...cpLocalizeModalLocs })],\n standalone: false\n})\nexport class CmLocalizeModalComponent implements AfterViewInit, OnInit {\n\tcultures$: Observable;\n\tsupportedCultures$: Observable;\n\tnewVal: string = '';\n\tactiveTabIndex: number = 0;\n\tlanguageForm: UntypedFormGroup;\n\tdisplayVal: string;\n\tlocalization!: LocalizationResponse;\n\treadonly tiny = TINYMCE;\n\treadonly locFeature: PortalCoreFeature;\n\tprivate hasCodeChanges: boolean = false;\n\tisCP: boolean = false;\n\n\tget sanitizedValue() {\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(this.newVal);\n\t}\n\n\tconstructor(\n\t\tpublic dialogRef: MatDialogRef,\n\t\t@Inject(MAT_DIALOG_DATA) private data: PublicLocalization,\n\t\t@Inject(LOC_INJECTOR) private locs: LocalizeModalLocType,\n\t\tprivate sanitizer: DomSanitizer,\n\t\tprivate apollo: Apollo,\n\t\tprivate localizationService: CmLocalizationService,\n\t\tprivate settings: CmSettingsService,\n\t\tprivate fb: UntypedFormBuilder,\n\t\tprivate notificationService: AtsNotificationService\n\t) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t\tthis.isCP = this.settings.portal === PortalTypeEnum.CandidatePortal;\n\t}\n\n\tngOnInit() {\n\t\tthis.cultures$ = this.settings.clientCultures$;\n\t\tthis.supportedCultures$ = this.settings.supportedCultures$;\n\t}\n\n\tngAfterViewInit() {\n\t\t// Hack for TinyMCE issue with MatTabs\n\t\t// https://github.com/tinymce/tinymce-angular/issues/76\n\t\tsetTimeout(() => this.initialize(), 0);\n\t}\n\n\tget language(): UntypedFormControl {\n\t\treturn this.languageForm.get('language') as UntypedFormControl;\n\t}\n\n\thandleTabChange(event: MatTabChangeEvent): void {\n\t\tthis.activeTabIndex = event.index;\n\t}\n\n\tdeleteLoc(): void {\n\t\tthis.saveLocalization(true);\n\t}\n\n\tsaveLocalization(deleteLocalization = false): void {\n\t\tthis.settings.culture$.pipe(take(1)).subscribe(culture => {\n\t\t\tconst fetchPolicy = culture.code === this.language.value ? 'network-only' : 'no-cache';\n\t\t\tif ((this.newVal || this.newVal === '') && !deleteLocalization) {\n\t\t\t\tif (this.localization.isCustomized) {\n\t\t\t\t\tthis.updateLocalization(this.newVal, fetchPolicy);\n\t\t\t\t} else {\n\t\t\t\t\tthis.createLocalization(this.newVal, fetchPolicy);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.deleteLocalization(fetchPolicy);\n\t\t\t}\n\t\t});\n\t}\n\n\tcloseDialog(codeModified?: boolean): void {\n\t\tif (codeModified) {\n\t\t\tthis.notificationService.popInfo({\n\t\t\t\tid: 'localize-modal-close',\n\t\t\t\tmessage: this.localizationService.localize(\n\t\t\t\t\t`${this.locFeature}/System.LocalizeModal.NotificationMessage.CodeModified`,\n\t\t\t\t\t'Your localization code may have been modified for security reasons. Please verify the result.'\n\t\t\t\t),\n\t\t\t});\n\t\t}\n\t\tthis.dialogRef.close();\n\t}\n\n\tprivate initialize(): void {\n\t\tthis.settings.culture$\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\tswitchMap(culture =>\n\t\t\t\t\tthis.fetchIndividualLocalization$({\n\t\t\t\t\t\tcultureName: culture.code,\n\t\t\t\t\t\tname: this.data.name,\n\t\t\t\t\t\ttype: this.data.type,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(res => {\n\t\t\t\tthis.languageForm = this.createLanguageForm(res.cultureName);\n\t\t\t\tthis.displayVal = res.value;\n\t\t\t\tthis.newVal = res.value;\n\t\t\t\tthis.localization = res;\n\t\t\t\tthis.listenToLanguageChanges$();\n\t\t\t});\n\t}\n\n\tprivate listenToLanguageChanges$(): void {\n\t\tthis.language.valueChanges\n\t\t\t.pipe(\n\t\t\t\tuntilDestroyed(this),\n\t\t\t\tswitchMap(lang => {\n\t\t\t\t\tif (this.localization.cultureName === lang) {\n\t\t\t\t\t\treturn of(null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this.fetchIndividualLocalization$({\n\t\t\t\t\t\t\tcultureName: lang,\n\t\t\t\t\t\t\tname: this.localization.name,\n\t\t\t\t\t\t\ttype: this.localization.type,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe(localizationNewLang => {\n\t\t\t\tif (localizationNewLang) {\n\t\t\t\t\tthis.localization = localizationNewLang;\n\t\t\t\t}\n\t\t\t\tif (this.localization.isCustomized) {\n\t\t\t\t\tthis.displayVal = this.localization.value;\n\t\t\t\t\tthis.newVal = this.localization.value;\n\t\t\t\t} else {\n\t\t\t\t\tthis.newVal = null;\n\t\t\t\t\tthis.displayVal = null;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate createLanguageForm(langCode: string): UntypedFormGroup {\n\t\treturn this.fb.group({\n\t\t\tlanguage: [langCode],\n\t\t});\n\t}\n\n\tprivate fetchIndividualLocalization$(\n\t\trequest: GetLocalizationRequest,\n\t\tfetchPolicy: FetchPolicy = 'network-only'\n\t): Observable {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ clientSponsor: ClientSponsor }, { request: GetLocalizationRequest }>({\n\t\t\t\tquery: INDIVIDUAL_LOCALIZATION,\n\t\t\t\tvariables: { request },\n\t\t\t\tfetchPolicy,\n\t\t\t})\n\t\t\t.valueChanges.pipe(take(1), pluck('data', 'clientSponsor', 'localization'));\n\t}\n\n\tprivate updateLocalization(newVal: string = '', fetchPolicy: MutationFetchPolicy): void {\n\t\tthis.apollo\n\t\t\t.mutate<{ updateLocalizationList: ReturnedLocalization[] }>({\n\t\t\t\tmutation: UPDATE_LOCALIZATION,\n\t\t\t\tfetchPolicy,\n\t\t\t\tvariables: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tcultureName: this.language.value,\n\t\t\t\t\t\ttype: this.localization.type,\n\t\t\t\t\t\tlocalizationList: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.localization.name,\n\t\t\t\t\t\t\t\tvalue: newVal,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map(({ data }) => (data.updateLocalizationList[0] || {}).value))\n\t\t\t.subscribe(loc => {\n\t\t\t\tthis.notificationService.showSuccess(\n\t\t\t\t\tthis.locs[\n\t\t\t\t\t\t`${\n\t\t\t\t\t\t\tthis.isCP\n\t\t\t\t\t\t\t\t? 'CPSystemLocalizeModalChangesSaved'\n\t\t\t\t\t\t\t\t: 'SPSystemLocalizeModalChangesSaved'\n\t\t\t\t\t\t}`\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t\tthis.closeDialog(this.hasCodeChanges);\n\t\t\t});\n\t}\n\n\tprivate deleteLocalization(fetchPolicy: MutationFetchPolicy): void {\n\t\tthis.apollo\n\t\t\t.mutate<{ deleteLocalizationList: ReturnedLocalization[] }>({\n\t\t\t\tmutation: DELETE_LOCALIZATION,\n\t\t\t\tfetchPolicy,\n\t\t\t\tvariables: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tcultureName: this.language.value,\n\t\t\t\t\t\ttype: this.localization.type,\n\t\t\t\t\t\tlocalizationList: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.localization.name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.closeDialog();\n\t\t\t});\n\t}\n\n\tprivate createLocalization(newVal: string = '', fetchPolicy: MutationFetchPolicy): void {\n\t\tthis.apollo\n\t\t\t.mutate<{ createLocalizationList: ReturnedLocalization[] }>({\n\t\t\t\tmutation: CREATE_LOCALIZATION,\n\t\t\t\tfetchPolicy,\n\t\t\t\tvariables: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tcultureName: this.language.value,\n\t\t\t\t\t\ttype: this.localization.type,\n\t\t\t\t\t\tlocalizationList: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.localization.name,\n\t\t\t\t\t\t\t\tvalue: newVal,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map(({ data }) => (data.createLocalizationList[0] || {}).value))\n\t\t\t.subscribe(loc => {\n\t\t\t\tthis.closeDialog(this.hasCodeChanges);\n\t\t\t});\n\t}\n}\n","import { map } from './map';\nexport function pluck(...properties) {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return map((x) => {\n let currentProp = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n });\n}\n","
\n\t

\n\t\t{{data.title}}\n\t

\n
\n
\n\t
\n\t\t\n\t\t\n\t
\n
\n
\n\t\n\t\n
\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\nimport { CMOption } from '@ats/cm/ui';\n\nexport interface CmMultiselectData {\n\toptions: CMOption[];\n\ttitle?: string;\n\tinitialSelectedOptions: any[];\n}\n\n@Component({\n selector: 'cm-multiselect-modal',\n templateUrl: './cm-multiselect-modal.component.html',\n styleUrls: ['./cm-multiselect-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CmMultiselectModalComponent {\n\tform: UntypedFormGroup;\n\tportalCoreFeature: PortalCoreFeature;\n\n\tconstructor(\n\t\t@Inject(MAT_DIALOG_DATA)\n\t\tpublic readonly data: CmMultiselectData,\n\t\tprivate readonly dialogRef: MatDialogRef,\n\t\tprivate readonly fb: UntypedFormBuilder,\n\t\tprivate readonly settings: CmSettingsService\n\t) {\n\t\tthis.portalCoreFeature = this.settings.portalCoreFeature;\n\t\tthis.form = this.fb.group({ selected: [this.data.initialSelectedOptions] });\n\t}\n\n\thandleSubmit(formValue: UntypedFormGroup): void {\n\t\tthis.dialogRef.close(formValue);\n\t}\n}\n","import { Component } from '@angular/core';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\n\n@Component({\n selector: 'cm-reload-confirmation',\n templateUrl: './cm-reload-confirmation.component.html',\n styleUrls: ['./cm-reload-confirmation.component.scss'],\n standalone: false\n})\nexport class CmReloadConfirmationComponent {\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n}\n","
\n\t

\n\t\t\n\t\t\tThere was a problem and a system reload is needed.\n\t\t\n\t

\n
\n\n
\n\t\n
\n","\n\t\n\t\t\n\t\t\tSearch\n\t\t\n\t\n\t\n\t\n\t\n\n","import { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { debounceTime } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'cm-search',\n templateUrl: './cm-search.component.html',\n styleUrls: ['./cm-search.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => CmSearchComponent) }],\n standalone: false\n})\nexport class CmSearchComponent implements ControlValueAccessor, OnInit {\n\t@Input() localizationPrefix: string = 'Core/System.SearchForm';\n\t@Input() caseSensitive: boolean = false;\n\tvalue: string = '';\n\ttouched = false;\n\tdisabled = false;\n\tsearchControl: UntypedFormControl;\n\n\tconstructor() {\n\t\tthis.searchControl = new UntypedFormControl(this.value);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.searchControl.valueChanges.pipe(untilDestroyed(this), debounceTime(350)).subscribe((value: string) => {\n\t\t\tvalue = this.caseSensitive ? value : value.toLocaleLowerCase();\n\t\t\tthis.onChange(value);\n\t\t});\n\t}\n\n\tonChange = (value: string): any => {};\n\tonTouched = () => {};\n\n\tregisterOnChange(onChange: any): void {\n\t\tthis.onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouched: any): void {\n\t\tthis.onTouched = onTouched;\n\t}\n\n\twriteValue(value: string): void {\n\t\tthis.searchControl.setValue(value);\n\t}\n\n\tmarkAsTouched(): void {\n\t\tif (!this.touched) {\n\t\t\tthis.onTouched();\n\t\t\tthis.touched = true;\n\t\t}\n\t}\n\n\tsetDisabledState(disabled: boolean): void {\n\t\tthis.disabled = disabled;\n\t}\n\n\tclear() {\n\t\tthis.searchControl.setValue('');\n\t}\n}\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { gql } from '@apollo/client/core';\nimport { CultureInfoResponse } from '@ats/api/cm';\nimport { CMOption } from '@ats/cm/ui';\nimport { atsSort } from '@ats/utility';\nimport { Apollo } from 'apollo-angular';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { map, shareReplay, startWith } from 'rxjs/operators';\n\nconst SUPPORTED_CULTURES = gql`\n\tquery supportedCultures {\n\t\tclientSponsor {\n\t\t\tname\n\t\t\tsupportedCultures {\n\t\t\t\tlabel\n\t\t\t\tietfBcp47Name\n\t\t\t}\n\t\t}\n\t}\n`;\n\n@Component({\n selector: 'cm-supported-culture-menu',\n templateUrl: './cm-supported-culture-menu.component.html',\n styleUrls: ['./cm-supported-culture-menu.component.scss'],\n standalone: false\n})\nexport class CmSupportedCultureMenuComponent implements OnInit {\n\t@Input() filter: string[] | CMOption[];\n\t@Output() select = new EventEmitter();\n\tcultures$: Observable;\n\tprivate filteredCulturesSubj$: Subject = new Subject();\n\n\tconstructor(private readonly apollo: Apollo) {}\n\n\tngOnInit(): void {\n\t\tconst filteredCultures$ = this.filteredCulturesSubj$.asObservable().pipe(startWith([]), shareReplay(1));\n\t\tthis.cultures$ = combineLatest([this.fetchSupportedCultures$(), filteredCultures$]).pipe(\n\t\t\tmap(([cultures, filtered]) =>\n\t\t\t\t(filtered || []).length ? cultures.filter(culture => !filtered.includes(culture.value)) : cultures\n\t\t\t)\n\t\t);\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes.filter) {\n\t\t\tconst filteredOptions =\n\t\t\t\tthis.filter && typeof this.filter[0] === 'string'\n\t\t\t\t\t? [...this.filter]\n\t\t\t\t\t: (this.filter || []).map(filteredCulture => filteredCulture.value);\n\t\t\tthis.filteredCulturesSubj$.next([...filteredOptions]);\n\t\t}\n\t}\n\n\tselectCulture(culture: string) {\n\t\tthis.select.emit(culture);\n\t}\n\n\tprivate fetchSupportedCultures$(): Observable {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ clientSponsor: { name: string; supportedCultures: Partial[] } }>({\n\t\t\t\tquery: SUPPORTED_CULTURES,\n\t\t\t})\n\t\t\t.valueChanges.pipe(\n\t\t\t\tmap(({ data }) =>\n\t\t\t\t\t((data.clientSponsor || {}).supportedCultures || []).map(culture => ({\n\t\t\t\t\t\tvalue: culture.ietfBcp47Name,\n\t\t\t\t\t\tdisplay: culture.label,\n\t\t\t\t\t}))\n\t\t\t\t),\n\t\t\t\tatsSort('display')\n\t\t\t);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'cm-table-row',\n templateUrl: './cm-table-row.component.html',\n styleUrls: ['./cm-table-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CmTableRowComponent implements OnInit {\n\t@Input() gridColumns: string;\n\tconstructor() {}\n\n\tngOnInit() {}\n}\n","
\n\t\n\t
\n\t\t\n\t
\n
\n","import { Injectable, OnInit } from '@angular/core';\r\nimport { AtsLoggerService } from '@ats/logger';\r\nimport { atsSortFn, Unsubscribable } from '@ats/utility';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, mapTo, skip, switchMap, take, takeUntil, tap } from 'rxjs/operators';\r\nimport { CmTableColumn, CmTableConfig, CmTableDatarow, CmTableGroup, CmTableRow, CmTableSort } from '../models';\r\n\r\nconst enum TableActionTypes {\r\n\tSET_COLUMNS = 'Add the columns',\r\n\tSET_GRID_STYLES = 'Set the grid styles',\r\n\tSET_GROUPS = 'Add the groups',\r\n\tSET_ROWS = 'Add the table rows',\r\n\tSET_SELECTABLE = 'Set table selectability',\r\n\tUPDATE_IS_SELECTING = 'Update if the table is selecting',\r\n\tUPDATE_VISIBLE_ROWS = 'Update the visible rows',\r\n\tUPDATE_FILTER = 'Update the current filter text',\r\n\tUPDATE_SORT = 'Update the current sort order',\r\n\tTOGGLE_LOADING = 'Toggle loading indicator',\r\n}\r\n\r\ninterface TableAction {\r\n\treadonly type: TableActionTypes;\r\n\treadonly payload:\r\n\t\t| CmTableGroup[]\r\n\t\t| CmTableDatarow[]\r\n\t\t| CmTableRow[]\r\n\t\t| CmTableColumn[]\r\n\t\t| string\r\n\t\t| string[]\r\n\t\t| CmTableSort[]\r\n\t\t| boolean;\r\n}\r\n\r\nclass TableState {\r\n\tgroups: CmTableGroup[] = [];\r\n\tcolumns: CmTableColumn[] = [];\r\n\trows: CmTableDatarow[] = null;\r\n\tvisible: CmTableRow[] = [];\r\n\tsort: string[] = [];\r\n\tfilter = '';\r\n\tloading = true;\r\n\tgridStyles: string;\r\n\tselectable = false;\r\n\tisSelecting = null;\r\n}\r\n\r\nconst reduce = (state: TableState, action: TableAction) => {\r\n\tswitch (action.type) {\r\n\t\tcase TableActionTypes.SET_COLUMNS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tcolumns: action.payload as CmTableColumn[],\r\n\t\t\t};\r\n\t\tcase TableActionTypes.SET_GROUPS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tgroups: action.payload as CmTableGroup[],\r\n\t\t\t};\r\n\t\tcase TableActionTypes.SET_ROWS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trows: action.payload as CmTableDatarow[],\r\n\t\t\t};\r\n\t\tcase TableActionTypes.UPDATE_VISIBLE_ROWS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tvisible: action.payload as CmTableRow[],\r\n\t\t\t};\r\n\t\tcase TableActionTypes.UPDATE_FILTER:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tfilter: action.payload as string,\r\n\t\t\t};\r\n\t\tcase TableActionTypes.UPDATE_SORT:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsort: action.payload as string[],\r\n\t\t\t};\r\n\t\tcase TableActionTypes.TOGGLE_LOADING:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tloading: action.payload as boolean,\r\n\t\t\t};\r\n\t\tcase TableActionTypes.SET_GRID_STYLES:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tgridStyles: action.payload as string,\r\n\t\t\t};\r\n\t\tcase TableActionTypes.SET_SELECTABLE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tselectable: action.payload as boolean,\r\n\t\t\t};\r\n\t\tcase TableActionTypes.UPDATE_IS_SELECTING:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tisSelecting: action.payload as boolean,\r\n\t\t\t};\r\n\t}\r\n};\r\n\r\n@Injectable()\r\nexport class CmTableService extends Unsubscribable implements OnInit {\r\n\tprivate state = new TableState();\r\n\tprivate dispatch = new BehaviorSubject(this.state);\r\n\tprivate loaders$ = new BehaviorSubject([]);\r\n\tprivate selecting$ = new BehaviorSubject(this.state.isSelecting);\r\n\tprivate sourceData: CmTableDatarow[] = [];\r\n\r\n\tcolumns$ = this.dispatch.asObservable().pipe(map(state => state.columns));\r\n\r\n\tgroups$ = this.dispatch.asObservable().pipe(map(state => state.groups));\r\n\r\n\trows$ = this.dispatch.asObservable().pipe(\r\n\t\tfilter(state => !state.loading && state.rows !== null),\r\n\t\tmap(state => state.visible)\r\n\t);\r\n\r\n\tselection$ = this.dispatch.asObservable().pipe(\r\n\t\tfilter(state => !state.loading && state.rows !== null && state.isSelecting),\r\n\t\tmap(state => ({\r\n\t\t\tselected: state.rows.filter(row => row.selected && !!row.data),\r\n\t\t\tremaining: state.rows.filter(row => !row.selected && !!row.data),\r\n\t\t}))\r\n\t);\r\n\r\n\tfilter$ = this.dispatch.asObservable().pipe(map(state => state.filter));\r\n\r\n\tsort$ = this.dispatch.asObservable().pipe(map(state => state.sort));\r\n\r\n\tisSelecting$ = this.dispatch.asObservable().pipe(map(state => state.isSelecting));\r\n\r\n\tgridStyles$ = this.dispatch.asObservable().pipe(map(state => state.gridStyles));\r\n\r\n\tisLoading$: Observable = this.loaders$.asObservable().pipe(map(loaders => loaders.length > 0));\r\n\r\n\thasSummaryImpact = ['toggle-all-groups', 'toggle-group', 'sort'];\r\n\r\n\tconstructor(private logger: AtsLoggerService) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tconfig(config$: Observable, filter$: Observable) {\r\n\t\tconfig$\r\n\t\t\t.pipe(\r\n\t\t\t\ttakeUntil(this.unsub),\r\n\t\t\t\tswitchMap(config =>\r\n\t\t\t\t\tfilter$.pipe(\r\n\t\t\t\t\t\ttake(1),\r\n\t\t\t\t\t\tmap(filter => ({ ...config, filter }))\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t\t.subscribe(({ rows, groups, columns, secured, isSelecting$, filter }) => {\r\n\t\t\t\tthis.toggleLoading('config');\r\n\r\n\t\t\t\tgroups = groups.map(group => ({\r\n\t\t\t\t\t...group,\r\n\t\t\t\t\tid: group.id && !this.isEndDelimited(group.id) ? group.id + '_' : group.id,\r\n\t\t\t\t\tparentGroup:\r\n\t\t\t\t\t\tgroup.parentGroup && !this.isEndDelimited(group.parentGroup)\r\n\t\t\t\t\t\t\t? group.parentGroup + '_'\r\n\t\t\t\t\t\t\t: group.parentGroup,\r\n\t\t\t\t}));\r\n\r\n\t\t\t\trows = rows.map(row => ({\r\n\t\t\t\t\t...row,\r\n\t\t\t\t\tparentGroup:\r\n\t\t\t\t\t\trow.parentGroup && !this.isEndDelimited(row.parentGroup)\r\n\t\t\t\t\t\t\t? row.parentGroup + '_'\r\n\t\t\t\t\t\t\t: row.parentGroup,\r\n\t\t\t\t}));\r\n\r\n\t\t\t\tthis.sourceData = rows.map(row => ({ ...row }));\r\n\r\n\t\t\t\tcolumns = columns.map(col => {\r\n\t\t\t\t\tlet filtered = true;\r\n\t\t\t\t\tif (!this.state.columns.length) {\r\n\t\t\t\t\t\tfiltered = Object.prototype.hasOwnProperty.call(col, 'filtered') ? col.filtered : true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst current = this.state.columns.find(column => column.id === col.id);\r\n\t\t\t\t\t\tfiltered =\r\n\t\t\t\t\t\t\tcurrent && Object.prototype.hasOwnProperty.call(current, 'filtered')\r\n\t\t\t\t\t\t\t\t? current.filtered\r\n\t\t\t\t\t\t\t\t: filtered;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\t...col,\r\n\t\t\t\t\t\tfiltered,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (secured)\r\n\t\t\t\t\tcolumns = columns.map(col => ({\r\n\t\t\t\t\t\t...col,\r\n\t\t\t\t\t\thidden: !secured.find(item => item.column === col.id)\r\n\t\t\t\t\t\t\t? col.hidden\r\n\t\t\t\t\t\t\t: !secured.find(item => item.column === col.id).passed,\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\tif (isSelecting$) {\r\n\t\t\t\t\tthis.setSelectable(true);\r\n\t\t\t\t\tisSelecting$.pipe(takeUntil(this.unsub)).subscribe(isSelecting => this.setIsSelecting(isSelecting));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setGroups(groups);\r\n\t\t\t\tthis.setRows(rows);\r\n\t\t\t\tthis.setColumns(columns);\r\n\t\t\t\tthis.setFilter(filter, false);\r\n\t\t\t\tthis.updateRowVisibility('config');\r\n\t\t\t});\r\n\r\n\t\t// Skip the first filter value since config is getting it\r\n\t\tfilter$\r\n\t\t\t.pipe(\r\n\t\t\t\tskip(1),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\ttap(() => this.toggleLoading('filter')),\r\n\t\t\t\ttakeUntil(this.unsub)\r\n\t\t\t)\r\n\t\t\t.subscribe(dataFilter => this.setFilter(dataFilter));\r\n\r\n\t\tthis.isLoading$.pipe(takeUntil(this.unsub)).subscribe(isLoading => this.setLoading(isLoading));\r\n\t}\r\n\r\n\ttoggleSelecting(cancel = false) {\r\n\t\tif (!this.state.selectable) return;\r\n\r\n\t\tif (this.state.isSelecting && cancel) {\r\n\t\t\tthis.setRows(this.sourceData.map(row => ({ ...row })));\r\n\t\t\tif (this.state.sort.length > 0) this.sortColumns();\r\n\t\t\telse this.updateRowVisibility();\r\n\t\t}\r\n\r\n\t\tthis.setIsSelecting(!this.state.isSelecting);\r\n\t}\r\n\r\n\ttoggleGroup(id: string) {\r\n\t\tthis.toggleLoading('toggle-group');\r\n\t\tif (!this.state.visible.find(item => item.id === id && item.childCount > 0)) return;\r\n\t\tconst groups = this.state.groups.slice();\r\n\t\tconst group = groups.find(gr => gr.id === id);\r\n\t\tif (group) {\r\n\t\t\tgroup.open = !group.open;\r\n\t\t\tif (!group.open)\r\n\t\t\t\tgroups.forEach(grp => {\r\n\t\t\t\t\tgrp.open = grp.parentGroup && grp.parentGroup.includes(group.id) ? false : grp.open;\r\n\t\t\t\t});\r\n\t\t\tthis.setGroups(groups);\r\n\t\t\tthis.updateRowVisibility('toggle-group');\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleSelection(row: CmTableRow | CmTableRow[]) {\r\n\t\tthis.toggleLoading('selection');\r\n\t\tlet rows = this.state.rows.slice();\r\n\r\n\t\tif (Array.isArray(row)) {\r\n\t\t\trow.forEach(rw => (rows = this.mapRowSelection(rw, rows)));\r\n\t\t} else {\r\n\t\t\trows = this.mapRowSelection(row, rows);\r\n\t\t}\r\n\r\n\t\tthis.setRows(rows);\r\n\t\tthis.updateRowVisibility('selection');\r\n\r\n\t\treturn this.loaders$.asObservable().pipe(\r\n\t\t\tfilter(loaders => !loaders.includes('selection')),\r\n\t\t\ttake(1),\r\n\t\t\tmapTo(true)\r\n\t\t);\r\n\t}\r\n\r\n\tclearSelection() {\r\n\t\tthis.toggleLoading('selection');\r\n\t\tconst rows = this.state.rows.slice().map(row => ({\r\n\t\t\t...row,\r\n\t\t\tselected: row.disabled ? row.selected : false,\r\n\t\t}));\r\n\r\n\t\tthis.setRows(rows);\r\n\t\tthis.updateRowVisibility('selection');\r\n\r\n\t\treturn this.loaders$.asObservable().pipe(\r\n\t\t\tfilter(loaders => !loaders.includes('selection')),\r\n\t\t\ttake(1),\r\n\t\t\tmapTo(true)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate mapRowSelection(row: CmTableRow, rows: CmTableDatarow[]) {\r\n\t\tconst group = this.state.groups.find(grp => grp.id === row.id && !!row.data);\r\n\t\tconst parent = this.state.rows.find(rw => !!rw.data && rw.id === row.parentGroup);\r\n\t\trows.forEach(rw => {\r\n\t\t\tif (rw.data && rw.disabled) return;\r\n\t\t\tif (\r\n\t\t\t\t// The row we are toggling\r\n\t\t\t\t(row.data && rw.id === row.id) ||\r\n\t\t\t\t// Toggled a group not a row\r\n\t\t\t\t(!row.data && !rw.filtered && rw.parentGroup && rw.parentGroup.includes(row.id)) ||\r\n\t\t\t\t// Turned a row that has children off - Turn off the children as well\r\n\t\t\t\t(group && row.selected && rw.data && rw.parentGroup.includes(group.id)) ||\r\n\t\t\t\t// Turned on a child whose parent is off - Turn on the parent\r\n\t\t\t\t(parent && !parent.selected && rw.data && rw.id === parent.id)\r\n\t\t\t) {\r\n\t\t\t\trw.selected = !row.selected;\r\n\t\t\t}\r\n\t\t\t// It is a parent row and has a uneditable child feature on, it has to stay on\r\n\t\t\tif (\r\n\t\t\t\tgroup &&\r\n\t\t\t\trw.data &&\r\n\t\t\t\trw.id === group.id &&\r\n\t\t\t\tthis.state.rows\r\n\t\t\t\t\t.filter(child => !!child.data && child.parentGroup.includes(group.id))\r\n\t\t\t\t\t.some(child => child.disabled && child.selected)\r\n\t\t\t)\r\n\t\t\t\trw.selected = true;\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\ttoggleAllGroups(level?: number) {\r\n\t\tthis.toggleLoading('toggle-all-groups');\r\n\t\t// setTimeout is used to unblock the call stack and show the loading overlay\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst allOpen = this.state.groups.filter(group => !level || group.level > level).every(group => group.open);\r\n\t\t\tthis.setGroups(\r\n\t\t\t\tthis.state.groups.map(group => ({\r\n\t\t\t\t\t...group,\r\n\t\t\t\t\topen: !level || group.level > level ? !allOpen : true,\r\n\t\t\t\t}))\r\n\t\t\t);\r\n\t\t\tthis.updateRowVisibility('toggle-all-groups');\r\n\t\t}, 10);\r\n\t}\r\n\r\n\ttoggleSort(id: string) {\r\n\t\tthis.toggleLoading('sort');\r\n\t\t// setTimeout is used to unblock the call stack and show the loading overlay\r\n\t\tsetTimeout(() => {\r\n\t\t\tlet found = false;\r\n\t\t\tconst sort = this.state.sort.map(col => {\r\n\t\t\t\tif (id === col) {\r\n\t\t\t\t\tcol = '-' + col;\r\n\t\t\t\t\tfound = true;\r\n\t\t\t\t} else if ('-' + id === col) {\r\n\t\t\t\t\tcol = '';\r\n\t\t\t\t\tfound = true;\r\n\t\t\t\t}\r\n\t\t\t\treturn col;\r\n\t\t\t});\r\n\t\t\tif (!found) sort.push(id);\r\n\t\t\tthis.setSort(sort.filter(col => col !== ''));\r\n\t\t\tthis.sortColumns();\r\n\t\t}, 10);\r\n\t}\r\n\r\n\ttoggleFilter(id: string) {\r\n\t\tthis.toggleLoading('filter');\r\n\t\tconst columns = this.state.columns.slice();\r\n\t\tconst column = columns.find(col => col.id === id);\r\n\t\tif (column) column.filtered = !column.filtered;\r\n\t\tthis.setColumns(columns);\r\n\t\tthis.updateRowVisibility('filter');\r\n\t}\r\n\r\n\ttoggleAllFilters() {\r\n\t\tthis.toggleLoading('filter');\r\n\t\tconst columns = this.state.columns.slice();\r\n\t\tconst anyNotFiltered = columns.some(col => !col.filtered);\r\n\t\tcolumns.forEach(col => (col.filtered = anyNotFiltered));\r\n\t\tthis.setColumns(columns);\r\n\t\tthis.updateRowVisibility('filter');\r\n\t}\r\n\r\n\tprivate isEndDelimited(str: string, delimiter: string = '_') {\r\n\t\treturn str.slice(-1) === delimiter;\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\t// Watch for loading changes\r\n\t\tthis.loaders$\r\n\t\t\t.asObservable()\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(loaders => loaders.length > 0),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\ttakeUntil(this.unsub)\r\n\t\t\t)\r\n\t\t\t.subscribe(loading => {\r\n\t\t\t\tconst type = TableActionTypes.TOGGLE_LOADING;\r\n\t\t\t\tconst action = { payload: loading, type };\r\n\t\t\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate sortColumns() {\r\n\t\tconst sort = [...this.state.sort];\r\n\t\tconst source = this.sourceData.map(row => ({ ...row }));\r\n\t\t// Save off the groups for later\r\n\t\tconst groups = this.state.rows.filter(row => !row.data).map(row => ({ ...row }));\r\n\t\tif (sort.length > 0) {\r\n\t\t\t// Get an array of just the row data\r\n\t\t\tconst rowData = this.state.rows.filter(row => !!row.data).map(row => ({ rowId: row.id, ...row.data }));\r\n\t\t\t// Sort the data\r\n\t\t\tconst newOrder = atsSortFn.apply(this, [rowData, ...sort]).map(row => row.rowId);\r\n\t\t\t// Map the data back to the original rows and include the groups\r\n\t\t\tthis.setRows([\r\n\t\t\t\t...groups,\r\n\t\t\t\t...newOrder.map(rowId => source.find(row => row.id.toString() === rowId.toString())),\r\n\t\t\t]);\r\n\t\t} else {\r\n\t\t\tthis.setRows(source);\r\n\t\t}\r\n\t\tthis.updateRowVisibility('sort');\r\n\t}\r\n\r\n\tprivate updateRowVisibility(loader?: string) {\r\n\t\tthis.applyFilter();\r\n\t\tconst rows = this.state.rows.map(row => ({ ...row }));\r\n\r\n\t\tconst hasSummary = this.state.columns.some(col => !!col.summary);\r\n\t\tlet summaryData = {};\r\n\t\tif (hasSummary) {\r\n\t\t\tconst existingSummary = this.state.visible.find(row => row.id === 'summary');\r\n\t\t\tif (this.hasSummaryImpact.includes(loader) && existingSummary) {\r\n\t\t\t\tsummaryData = existingSummary.data;\r\n\t\t\t} else {\r\n\t\t\t\tthis.state.columns.forEach(col => {\r\n\t\t\t\t\tsummaryData[col.id] = col.summary\r\n\t\t\t\t\t\t? rows\r\n\t\t\t\t\t\t\t\t.filter(row => !row.filtered)\r\n\t\t\t\t\t\t\t\t.map(row => row.data[col.id])\r\n\t\t\t\t\t\t\t\t.reduce(col.summary.reducer, col.summary.init)\r\n\t\t\t\t\t\t: null;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!this.state.groups.length) {\r\n\t\t\tif (hasSummary)\r\n\t\t\t\trows.unshift({\r\n\t\t\t\t\tid: 'summary',\r\n\t\t\t\t\tdata: summaryData,\r\n\t\t\t\t\tfiltered: false,\r\n\t\t\t\t});\r\n\t\t\tthis.setVisibleRows(rows as CmTableRow[]);\r\n\t\t\tif (loader) this.toggleLoading(loader);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst groupSortKeys =\r\n\t\t\tthis.state.groups && this.state.groups.every(grp => Object.prototype.hasOwnProperty.call(grp, 'order'))\r\n\t\t\t\t? ['order', 'id']\r\n\t\t\t\t: ['id'];\r\n\t\tconst groups = atsSortFn([...this.state.groups.map(group => ({ ...group }))], ...groupSortKeys);\r\n\t\tconst openGroups = groups.filter(group => group.open).map(group => group.id);\r\n\t\tconst firstRow = [];\r\n\t\tif (hasSummary)\r\n\t\t\tfirstRow.push({\r\n\t\t\t\tid: 'summary',\r\n\t\t\t\tdata: summaryData,\r\n\t\t\t\tfiltered: false,\r\n\t\t\t});\r\n\t\tif (rows.length > 0) {\r\n\t\t\tthis.setVisibleRows([\r\n\t\t\t\t...firstRow,\r\n\t\t\t\t...groups\r\n\t\t\t\t\t.filter(group => !group.parentGroup || openGroups.includes(group.parentGroup))\r\n\t\t\t\t\t.flatMap(group => {\r\n\t\t\t\t\t\tconst classes = ['cm-table__group--level-' + group.level.toString()];\r\n\t\t\t\t\t\tconst childCount = rows.filter(row => !row.filtered && row.parentGroup.startsWith(group.id))\r\n\t\t\t\t\t\t\t.length;\r\n\t\t\t\t\t\tconst selected =\r\n\t\t\t\t\t\t\trows.some(row => row.selected) &&\r\n\t\t\t\t\t\t\trows\r\n\t\t\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t\t\trow =>\r\n\t\t\t\t\t\t\t\t\t\t!row.filtered &&\r\n\t\t\t\t\t\t\t\t\t\t(row.parentGroup.startsWith(group.id) ||\r\n\t\t\t\t\t\t\t\t\t\t\trow.parentGroup.includes('_' + group.id))\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t.every(row => row.selected);\r\n\t\t\t\t\t\tif (childCount === 0) classes.push('cm-table__group--disabled');\r\n\t\t\t\t\t\tconst newData = [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...group,\r\n\t\t\t\t\t\t\t\tchildCount,\r\n\t\t\t\t\t\t\t\tclasses,\r\n\t\t\t\t\t\t\t\tselected,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t...rows\r\n\t\t\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t\t\trow =>\r\n\t\t\t\t\t\t\t\t\t\topenGroups.includes(row.parentGroup) &&\r\n\t\t\t\t\t\t\t\t\t\trow.parentGroup === group.id &&\r\n\t\t\t\t\t\t\t\t\t\t!row.filtered\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t.flat(),\r\n\t\t\t\t\t\t];\r\n\t\t\t\t\t\treturn newData as CmTableRow[];\r\n\t\t\t\t\t}),\r\n\t\t\t]);\r\n\t\t}\r\n\t\tif (loader) this.toggleLoading(loader);\r\n\t}\r\n\r\n\tprivate applyFilter() {\r\n\t\tconst rows = this.state.rows.slice();\r\n\t\tconst filteredColumns = this.state.columns\r\n\t\t\t.filter(col => col.filtered && !col.hidden)\r\n\t\t\t.map(col => (col.filterKey ? col.filterKey : col.id));\r\n\r\n\t\trows.forEach(\r\n\t\t\trow =>\r\n\t\t\t\t(row.filtered =\r\n\t\t\t\t\tfilteredColumns.length > 0\r\n\t\t\t\t\t\t? !filteredColumns.some(column =>\r\n\t\t\t\t\t\t\t\trow.data[column]\r\n\t\t\t\t\t\t\t\t\t? row.data[column]\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(this.state.filter.toLowerCase())\r\n\t\t\t\t\t\t\t\t\t: false\r\n\t\t\t\t\t\t )\r\n\t\t\t\t\t\t: false)\r\n\t\t);\r\n\r\n\t\tthis.setRows(rows.slice());\r\n\t}\r\n\r\n\t/******* STATE MANAGERS **********/\r\n\tprivate setRows(rows: CmTableDatarow[]) {\r\n\t\tconst type = TableActionTypes.SET_ROWS;\r\n\t\tconst action = { payload: rows.slice(), type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\tprivate setVisibleRows(rows: CmTableRow[]) {\r\n\t\tconst type = TableActionTypes.UPDATE_VISIBLE_ROWS;\r\n\t\tconst action = { payload: rows.slice(), type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate setFilter(dataFilter: string, update: boolean = true) {\r\n\t\tconst type = TableActionTypes.UPDATE_FILTER;\r\n\t\tconst action = { payload: dataFilter, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t\tif (update)\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.updateRowVisibility('filter');\r\n\t\t\t}, 10);\r\n\t}\r\n\r\n\tprivate setGroups(groups: CmTableGroup[]) {\r\n\t\tconst type = TableActionTypes.SET_GROUPS;\r\n\t\tconst action = { payload: groups.slice(), type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate setSort(sort: string[]) {\r\n\t\tconst type = TableActionTypes.UPDATE_SORT;\r\n\t\tconst action = { payload: sort.slice(), type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate setIsSelecting(isSelecting: boolean) {\r\n\t\tconst type = TableActionTypes.UPDATE_IS_SELECTING;\r\n\t\tconst action = { payload: isSelecting, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate setSelectable(selectable: boolean) {\r\n\t\tconst type = TableActionTypes.SET_SELECTABLE;\r\n\t\tconst action = { payload: selectable, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate setColumns(columns: CmTableColumn[]) {\r\n\t\tconst type = TableActionTypes.SET_COLUMNS;\r\n\t\tconst action = { payload: columns.slice(), type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t\tif (!this.state.gridStyles) this.setGridStyles();\r\n\t}\r\n\r\n\tprivate setLoading(isLoading: boolean) {\r\n\t\tconst type = TableActionTypes.TOGGLE_LOADING;\r\n\t\tconst action = { payload: isLoading, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate setGridStyles() {\r\n\t\tconst gridStyles = this.state.columns\r\n\t\t\t.filter(col => !col.hidden)\r\n\t\t\t.slice()\r\n\t\t\t.map(col =>\r\n\t\t\t\tcol.sizing\r\n\t\t\t\t\t? col.sizing\r\n\t\t\t\t\t: col.relativeWidth\r\n\t\t\t\t\t? 'minmax(0, ' + col.relativeWidth.toString() + 'fr)'\r\n\t\t\t\t\t: 'minmax(0, 1fr)'\r\n\t\t\t)\r\n\t\t\t.join(' ');\r\n\t\t// if (this.state.visible && this.state.visible.some(row => row.selectable))\r\n\t\t// \tgridStyles = '30px ' + gridStyles;\r\n\t\tconst type = TableActionTypes.SET_GRID_STYLES;\r\n\t\tconst action = {\r\n\t\t\tpayload: gridStyles,\r\n\t\t\ttype,\r\n\t\t};\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate toggleLoading(id: string) {\r\n\t\tconst loaders = this.loaders$.getValue().slice();\r\n\t\tif (loaders.includes(id)) this.loaders$.next(loaders.filter(loader => loader !== id));\r\n\t\telse this.loaders$.next([id, ...loaders]);\r\n\t}\r\n\t/******* END STATE MANAGERS **********/\r\n}\r\n","
\n\n\t\n\t\t\n\t\n\n\t
\n\t\t\n\t
\n\n\t\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tFilter\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\t
\n\t\t\t\t\t\tTo toggle a range, select a row then hold the shift key while selecting the row\n\t\t\t\t\t\t\tat the end of the range within the same group.\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t 0)\">\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t
\n\t
\n
\n\n\n\t\n\n\n\n\t\n\n\n\n\t\n\n\n\n\t
\n\t\t\n\t\t\tNo data to show\n\t\t\n\t
\n
\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tTemplateRef,\n\tViewChild,\n} from '@angular/core';\nimport { CmNavigationService } from '@ats/cm/navigation';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith, take, takeUntil, tap } from 'rxjs/operators';\nimport { CmTableColumn, CmTableConfig, CmTableGroup, CmTableRow, CmTableTools } from '../../models';\nimport { CmTableDatarow } from '../../models/cm-table-data-row.interface';\nimport { CmTableService } from '../../services/table.service';\n\n@Component({\n selector: 'cm-table',\n templateUrl: './cm-table.component.html',\n styleUrls: ['./cm-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CmTableService],\n standalone: false\n})\nexport class CmTableComponent implements OnInit, OnDestroy {\n\tprivate ngUnsubscribe = new Subject();\n\tprivate lastSelectedSubj$ = new BehaviorSubject(null);\n\t@Input() minWidth = 45;\n\t@Input() minWidthUnit: string = 'rem';\n\t@Input() maxWidth: number;\n\t@Input() maxWidthUnit: string = 'rem';\n\t@Input() config$: Observable;\n\t@Input() headerTemplate: TemplateRef;\n\t@Input() rowTemplate: TemplateRef;\n\t@Input() summaryTemplate: TemplateRef;\n\t@Input() holdOpen;\n\t@Input() tools: CmTableTools[] = [\n\t\tCmTableTools.FILTER,\n\t\tCmTableTools.TOGGLE_FILTER,\n\t\tCmTableTools.EMPTY_GROUPS,\n\t\tCmTableTools.TOGGLE_GROUPS,\n\t\tCmTableTools.ZOOM,\n\t\tCmTableTools.FULLSCREEN,\n\t\tCmTableTools.DOWNLOAD,\n\t];\n\t@Output() toggledRow: EventEmitter = new EventEmitter();\n\t@ViewChild('filterInp') filterField: ElementRef;\n\ttoolsEnum = CmTableTools;\n\trows$: Observable;\n\trowCount$: Observable;\n\tcolumns$: Observable;\n\tgroups$: Observable;\n\tsummaries$: Observable<{ summary: any; id: string }[]>;\n\tshowSummaries$: Observable;\n\tsort$: Observable;\n\tfilter$ = new BehaviorSubject('');\n\tisSelecting$: Observable;\n\tselectable$: Observable;\n\n\tlevels: any[] = [];\n\tsize = 0.75;\n\tanyNotFiltered = false;\n\tallOpen = false;\n\tfullscreen = false;\n\tpreviousNavState: boolean;\n\tnavState: boolean;\n\tshowEmptyGroups = false;\n\tanyEmptyGroups = true;\n\tgridStyles$: Observable;\n\tisLoading$: Observable;\n\t// public selectionSnapshot: { selected: any[]; unselected: any[] };\n\tpublic selection$: Observable<{ selected: Data[]; remaining: Data[] }>;\n\tpublic selectionWithMeta$: Observable<{ selected: CmTableDatarow[]; remaining: CmTableDatarow[] }>;\n\n\tconstructor(\n\t\tprivate waiter: CmTableService,\n\t\tprivate notifications: AtsNotificationService,\n\t\tprivate navService: CmNavigationService\n\t) {}\n\n\tngOnInit() {\n\t\tthis.navService.navVisible$.pipe(distinctUntilChanged(), takeUntil(this.ngUnsubscribe)).subscribe(visible => {\n\t\t\tthis.navState = visible;\n\t\t});\n\t\tthis.isLoading$ = this.loadingStreams$();\n\n\t\tthis.gridStyles$ = this.waiter.gridStyles$.pipe(\n\t\t\tdistinctUntilChanged(),\n\t\t\tmap((styles: string) => (styles && !!styles.length ? styles : '100%'))\n\t\t);\n\n\t\tthis.selectable$ = this.waiter.isSelecting$.pipe(\n\t\t\tdistinctUntilChanged(),\n\t\t\tmap(isSelecting => isSelecting !== null)\n\t\t);\n\n\t\tthis.isSelecting$ = this.waiter.isSelecting$.pipe(distinctUntilChanged());\n\n\t\tthis.sort$ = this.waiter.sort$;\n\n\t\tthis.groups$ = this.waiter.groups$;\n\n\t\tthis.rows$ = this.waiter.rows$.pipe(\n\t\t\tmap((rows: CmTableRow[]) => rows.filter(row => !row.filtered)),\n\t\t\ttap(\n\t\t\t\t(rows: CmTableRow[]) =>\n\t\t\t\t\t(this.allOpen = rows\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\trow => row.id !== 'summary' && !row.data && (!this.holdOpen || row.level > this.holdOpen)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.every(row => row.open))\n\t\t\t),\n\t\t\ttap(\n\t\t\t\t(rows: CmTableRow[]) =>\n\t\t\t\t\t(this.anyEmptyGroups = rows\n\t\t\t\t\t\t.filter(row => row.id !== 'summary' && !row.data)\n\t\t\t\t\t\t.some(row => row.childCount === 0))\n\t\t\t)\n\t\t);\n\n\t\tthis.rowCount$ = this.rows$.pipe(map(rows => rows.filter(row => row.visible || row?.childCount !== 0).length));\n\n\t\tthis.columns$ = this.waiter.columns$.pipe(\n\t\t\ttap((columns: CmTableColumn[]) => (this.anyNotFiltered = columns.some(col => !col.filtered))),\n\t\t\tmap((columns: CmTableColumn[]) => columns.filter(col => !col.hidden))\n\t\t);\n\n\t\tconst filter$ = this.filter$.asObservable().pipe(debounceTime(450), distinctUntilChanged());\n\n\t\tconst config$ = this.config$;\n\n\t\tthis.waiter.config(config$, filter$);\n\n\t\tthis.selection$ = this.waiter.selection$.pipe(\n\t\t\tmap(selection => ({\n\t\t\t\tselected: selection.selected.map(row => row.data),\n\t\t\t\tremaining: selection.remaining.map(row => row.data),\n\t\t\t}))\n\t\t);\n\n\t\tthis.selectionWithMeta$ = this.waiter.selection$;\n\t}\n\n\ttrackByFn = data => data.id;\n\ttoggleSelection = (row: CmTableRow, idx?: number, ev?: MouseEvent) => {\n\t\tif (ev && ev.shiftKey && (idx || idx === 0)) {\n\t\t\tcombineLatest([this.rows$, this.lastSelectedSubj$.asObservable()])\n\t\t\t\t.pipe(take(1))\n\t\t\t\t.subscribe(([rows, previous]) => {\n\t\t\t\t\tif (previous || previous === 0) {\n\t\t\t\t\t\tconst previousRow = rows[previous];\n\t\t\t\t\t\t// Don't do multiple if it spans groups. That is messy and ugly.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!(previousRow.parentGroup && row.parentGroup) ||\n\t\t\t\t\t\t\tpreviousRow.parentGroup === row.parentGroup\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Positive range means first clicked item is lower in the table\n\t\t\t\t\t\t\tconst start = previous - idx < 0 ? previous + 1 : idx;\n\t\t\t\t\t\t\tconst end = previous - idx < 0 ? idx + 1 : previous;\n\t\t\t\t\t\t\tthis.waiter.toggleSelection(rows.slice(start, end));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.waiter.toggleSelection(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t} else {\n\t\t\tthis.waiter.toggleSelection(row);\n\t\t}\n\t\tif (idx || idx === 0) this.lastSelectedSubj$.next(idx);\n\t};\n\tclearSelection = () => this.waiter.clearSelection();\n\n\ttoggleGroup = groupid => this.waiter.toggleGroup(groupid);\n\ttoggleAllGroups = () => this.waiter.toggleAllGroups(this.holdOpen);\n\ttoggleSort = (columnId, sortable?) => {\n\t\tif (sortable !== false) this.waiter.toggleSort(columnId);\n\t};\n\ttoggleFilter = columnId => this.waiter.toggleFilter(columnId);\n\ttoggleAllFilters = () => this.waiter.toggleAllFilters();\n\ttoggleEmptyGroups = () => (this.showEmptyGroups = !this.showEmptyGroups);\n\tfilter = value => this.filter$.next(value);\n\n\ttoggleFullscreen = () => {\n\t\tif (!this.fullscreen) {\n\t\t\tthis.previousNavState = this.navState;\n\t\t\tif (this.navState) {\n\t\t\t\tthis.navService.toggleNav();\n\t\t\t}\n\t\t\tthis.fullscreen = true;\n\t\t} else {\n\t\t\tif (this.previousNavState) this.navService.toggleNav();\n\t\t\tthis.fullscreen = false;\n\t\t}\n\t};\n\tclearFilter = () => {\n\t\tthis.filter('');\n\t\tthis.filterField.nativeElement.value = '';\n\t};\n\tzoom = (direction: string) => {\n\t\tswitch (direction) {\n\t\t\tcase 'out':\n\t\t\t\tthis.size -= 0.25;\n\t\t\t\tbreak;\n\t\t\tcase 'in':\n\t\t\t\tthis.size += 0.25;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.size = 0.75;\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tngOnDestroy() {\n\t\tthis.ngUnsubscribe.next();\n\t\tthis.ngUnsubscribe.complete();\n\t}\n\n\t// stop table loader from showing if the page loader is visible\n\tloadingStreams$(): Observable {\n\t\tconst waiterLoading$ = this.waiter.isLoading$.pipe(startWith(true));\n\t\tconst notificationsLoading$ = this.notifications.loading$;\n\t\treturn combineLatest([waiterLoading$, notificationsLoading$]).pipe(\n\t\t\tmap(([serviceLoader, pageLoader]) => (pageLoader ? false : serviceLoader))\n\t\t);\n\t}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CmUiBugType } from '../../models/cm-ui-bug-type.enum';\n\n@Component({\n selector: 'cm-ui-bug',\n templateUrl: './ui-bug.component.html',\n styleUrls: ['./ui-bug.component.scss'],\n standalone: false\n})\nexport class CmUIBugComponent implements OnInit {\n\t@Input() type: CmUiBugType = CmUiBugType.INFO;\n\t@Input() bugTitle: string;\n\t@Input() content: string;\n\n\tconstructor() {}\n\n\tngOnInit() {}\n}\n","\n\n\n\t{{bugTitle}}\n\t{{content}}\n\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\n\n@Component({\n selector: 'cm-unsaved-confirmation',\n templateUrl: './cm-unsaved-confirmation.component.html',\n styleUrls: ['./cm-unsaved-confirmation.component.scss'],\n standalone: false\n})\nexport class CmUnsavedConfirmationComponent {\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(public dialogRef: MatDialogRef, private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\tonNoClick(): void {\n\t\tthis.dialogRef.close(false);\n\t}\n}\n","

{{ \"Please confirm\" | cmLocalize: locFeature +\n\t\"/_Shared.UnsavedConfirmation.Title.Confirm\" }}\n

\n
\n\t

{{ \"Unsaved changes will be lost.\" | cmLocalize: locFeature +\n\t\t\"/_Shared.UnsavedConfirmation.Content.Unsaved\"\n\t\t}}

\n
\n
\n\t\n\t\n
\n","import { formatDate } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { AtsDate, AtsDateUnit } from '@ats/utility';\r\n\r\n@Pipe({\n name: 'cmTime',\n standalone: false\n})\r\nexport class CmTimePipe implements PipeTransform {\r\n\tconstructor() {}\r\n\r\n\ttransform(value: any, format: string = 'h:mm:ss a', duration = false, unit?: string | AtsDateUnit): string {\r\n\t\tif (typeof value === 'string' && value !== '') {\r\n\t\t\tvalue = new Date(value);\r\n\t\t}\r\n\t\t// We're using this method to tell if an object is a date because it is the most efficient (yay js!) while being perfectly accurate.\r\n\t\t// See the comment dated May 26 2017 here: https://stackoverflow.com/questions/643782/how-to-check-whether-an-object-is-a-date\r\n\t\tconst num = parseInt(value);\r\n\t\tif (!value || Object.prototype.toString.call(value) !== '[object Date]' || value === null) {\r\n\t\t\tif (isNaN(num)) {\r\n\t\t\t\treturn value ? value.toString() : '';\r\n\t\t\t} else if (!duration) {\r\n\t\t\t\tvalue = new Date(num);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (duration && (num || num === 0)) {\r\n\t\t\tlet typedUnit: AtsDateUnit;\r\n\t\t\tif (unit) {\r\n\t\t\t\tif (typeof unit === 'string') {\r\n\t\t\t\t\tconst char = unit.charAt(0);\r\n\t\t\t\t\tconst rest = unit.substring(1);\r\n\t\t\t\t\ttypedUnit = AtsDateUnit[char.toUpperCase() + rest];\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttypedUnit = unit;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn AtsDate.formatDuration(num, typedUnit);\r\n\t\t} else {\r\n\t\t\treturn formatDate(value, format, 'en');\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Culture, CulturesRequest } from '@ats/api/cm';\r\nimport { Apollo, gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nconst FILTERED_CULTURE_QUERY = gql`\r\n\tquery cultures($request: CulturesRequest) {\r\n\t\tcultures(request: $request) {\r\n\t\t\tid\r\n\t\t\tname\r\n\t\t\tlabel\r\n\t\t\twinCode\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n@Pipe({\n name: 'cmCulture',\n standalone: false\n})\r\nexport class CmCulturePipe implements PipeTransform {\r\n\tconstructor(private apollo: Apollo) {}\r\n\r\n\ttransform(\r\n\t\tvalue: string,\r\n\t\tprop: 'name' | 'winCode' = 'winCode',\r\n\t\tfilter?: 'neutral' | 'uniqueWinCode'\r\n\t): Observable {\r\n\t\treturn this.fetchCultures$(filter).pipe(\r\n\t\t\tmap(cultures => cultures.find(culture => culture[prop] === value)?.label)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate fetchCultures$(filter?: 'neutral' | 'uniqueWinCode') {\r\n\t\tconst query = { query: FILTERED_CULTURE_QUERY };\r\n\t\tif (filter) {\r\n\t\t\tconst request: CulturesRequest =\r\n\t\t\t\tfilter === 'neutral' ? { onlyNeutral: true } : { onlyUniqueWinCodes: true };\r\n\t\t\tquery['request'] = request;\r\n\t\t}\r\n\r\n\t\treturn this.apollo\r\n\t\t\t.watchQuery<{ cultures: Partial[] }>(query)\r\n\t\t\t.valueChanges.pipe(map(results => results?.data?.cultures));\r\n\t}\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { CmAuthService, CmInterceptHeaders } from '@ats/cm/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, take } from 'rxjs/operators';\r\nimport { CmImageNotFound } from '../models';\r\n\r\n@Pipe({\n name: 'cmSecureImage',\n standalone: false\n})\r\nexport class CmSecureImagePipe implements PipeTransform {\r\n\tconstructor(private http: HttpClient, private auth: CmAuthService, private sanitizer: DomSanitizer) {}\r\n\r\n\ttransform(src: string): Observable {\r\n\t\tconst token = this.auth.getAuthToken();\r\n\t\tconst headers = new HttpHeaders({\r\n\t\t\tAuthorization: `Bearer ${token}`,\r\n\t\t\t...CmInterceptHeaders.BypassAuth,\r\n\t\t});\r\n\t\treturn this.http.get(src, { headers, responseType: 'blob' }).pipe(\r\n\t\t\tmap(blob => this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(blob))),\r\n\t\t\tcatchError(err => of(CmImageNotFound.ImageNotFound)),\r\n\t\t\ttake(1)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { Subscription } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { CmReloadConfirmationComponent } from '../components/cm-reload-confirmation/cm-reload-confirmation.component';\n\n@Injectable()\nexport class CmReloadService {\n\treadonly realoadSubscription: Subscription;\n\n\tconstructor(private readonly dialog: MatDialog, private readonly notifications: AtsNotificationService) {\n\t\tthis.realoadSubscription = this.notifications.reload$\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\tthis.dialog\n\t\t\t\t\t\t.open(CmReloadConfirmationComponent, {\n\t\t\t\t\t\t\tdisableClose: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.afterClosed()\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(() => window.location.reload());\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { LocalizedText } from '@ats/cm/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmPageHeaderService {\r\n\treadonly heading$: Observable;\r\n\r\n\tprivate readonly heading = new BehaviorSubject(null);\r\n\r\n\tconstructor() {\r\n\t\tthis.heading$ = this.heading.asObservable();\r\n\t}\r\n\r\n\tsetHeader(headingConfig: LocalizedText | string): void {\r\n\t\tthis.heading.next(headingConfig);\r\n\t}\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { CmLocalizationService, LocalizedText } from '@ats/cm/core';\r\nimport { LocalizationService } from '@cm/core/localization';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { BehaviorSubject, combineLatest, of } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\nexport const DEFAULT_PAGE_TITLE_KEY = 'DEFAULT_TITLE_KEY';\r\nexport const DEFAULT_PAGE_TITLE_VALUE = 'DEFAULT_TITLE_VALUE';\r\n\r\n@UntilDestroy()\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class PageTitleService {\r\n\tprivate readonly title = new BehaviorSubject(null);\r\n\r\n\tconstructor(\r\n\t\t@Inject(DEFAULT_PAGE_TITLE_KEY) private readonly defaultKey: string,\r\n\t\t@Inject(DEFAULT_PAGE_TITLE_VALUE) private readonly defaultValue: string,\r\n\t\tprivate readonly locService: LocalizationService,\r\n\t\tprivate readonly legacyLocalizationService: CmLocalizationService,\r\n\t\tprivate readonly titleService: Title\r\n\t) {\r\n\t\tconst localizedCompanyName$ = this.legacyLocalizationService.localize$(this.defaultKey, this.defaultValue);\r\n\r\n\t\tconst title$ = this.title.asObservable().pipe(\r\n\t\t\tswitchMap((title: LocalizedText | string) => {\r\n\t\t\t\tif (!title) {\r\n\t\t\t\t\treturn of(null);\r\n\t\t\t\t}\r\n\t\t\t\treturn typeof title === 'string'\r\n\t\t\t\t\t? this.locService.findValue$(title)\r\n\t\t\t\t\t: this.legacyLocalizationService.localize$(title.key, title.defaultValue);\r\n\t\t\t}),\r\n\t\t\tmap(title => (title ? `${title} | ` : ''))\r\n\t\t);\r\n\r\n\t\tcombineLatest([localizedCompanyName$, title$])\r\n\t\t\t.pipe(\r\n\t\t\t\tuntilDestroyed(this),\r\n\t\t\t\tmap(([companyName, title]) => `${title}${companyName}`)\r\n\t\t\t)\r\n\t\t\t.subscribe(title => this.titleService.setTitle(title));\r\n\t}\r\n\r\n\tsetTitle(title: LocalizedText | string | null = null): void {\r\n\t\tthis.title.next(title);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { LocalizedText } from '@ats/cm/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmPageHeaderService } from './page-header.service';\r\nimport { PageTitleService } from './page-title.service';\r\n\r\n@UntilDestroy()\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmRouteService {\r\n\tconstructor(\r\n\t\tprivate readonly titleService: PageTitleService,\r\n\t\tprivate readonly headerService: CmPageHeaderService,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly route: ActivatedRoute\r\n\t) {\r\n\t\tthis.router.events\r\n\t\t\t.pipe(\r\n\t\t\t\tuntilDestroyed(this),\r\n\t\t\t\tfilter(event => event instanceof NavigationEnd)\r\n\t\t\t)\r\n\t\t\t.subscribe(() => this.handleNavEnd());\r\n\t}\r\n\r\n\tprivate handleNavEnd(): void {\r\n\t\tconst title = this.getRouteData(this.route.snapshot, 'title');\r\n\t\tconst heading = this.getRouteData(this.route.snapshot, 'heading');\r\n\t\tif (title || heading) {\r\n\t\t\tthis.titleService.setTitle(title || heading);\r\n\t\t}\r\n\r\n\t\tif (heading) {\r\n\t\t\tthis.headerService.setHeader(heading);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getRouteData(route: ActivatedRouteSnapshot, key: string, currentValue: T = null): T {\r\n\t\tconst newValue = ((route.data || {}).page || {})[key] as T;\r\n\t\tif (newValue) {\r\n\t\t\tcurrentValue = newValue;\r\n\t\t}\r\n\t\tif (route.firstChild) {\r\n\t\t\tconst foundData = this.getRouteData(route.firstChild, key, currentValue);\r\n\t\t\tif (foundData) {\r\n\t\t\t\tcurrentValue = foundData;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn currentValue;\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { RouterModule } from '@angular/router';\nimport { CmCoreModule } from '@ats/cm/core';\nimport { AtsIconsModule } from '@ats/icons';\nimport { AtsUiModule } from '@ats/ui';\nimport { AtsUtilityModule } from '@ats/utility';\nimport { AccessibilityModule } from '@cm/shared/ui/accessibility';\nimport { CmAutocompleteComponent } from '@cm/shared/ui/autocomplete';\nimport { CmMiniButtonDirective } from '@cm/shared/ui/button';\nimport { LocalizeComponent, LocalizePipe } from '@cm/ui/localize';\nimport { EditorModule } from '@tinymce/tinymce-angular';\nimport { CmAddressFormComponent } from './components/cm-address-form/cm-address-form.component';\nimport { CmAnnouncementDetailComponent } from './components/cm-announcement-detail/cm-announcement-detail.component';\nimport { CmCertLogicTreeComponent } from './components/cm-cert-logic-tree/cm-cert-logic-tree.component';\nimport { CmCertLogicViewComponent } from './components/cm-cert-logic-tree/cm-cert-logic-view.component';\nimport { CmContextOverlayComponent } from './components/cm-context-overlay/context-overlay.component';\nimport { CmContinueModalComponent } from './components/cm-continue-modal/cm-continue-modal.component';\nimport { CmCookieModalComponent } from './components/cm-cookie/cookie-modal.component';\nimport { CmCreqUploadComponent } from './components/cm-creq-upload/creq-upload.component';\nimport { CmCreqUploadService } from './components/cm-creq-upload/creq-upload.service';\nimport { PointsMessageDisplayComponent } from './components/cm-creq-upload/points-message-display/points-message-display.component';\nimport { CmSelectionFormComponent } from './components/cm-creq-upload/selection-form/selection-form.component';\nimport { CmSelectionListComponent } from './components/cm-creq-upload/selection-list/selection-list.component';\nimport { CmUploadConfirmationComponent } from './components/cm-creq-upload/upload-confirmation/upload-confirmation.component';\nimport { CmUploadFormComponent } from './components/cm-creq-upload/upload-form/upload-form.component';\nimport { CmDashComponent } from './components/cm-dash/cm-dash.component';\nimport { CmDeleteConfirmationComponent } from './components/cm-delete-confirmation/cm-delete-confirmation.component';\nimport { CmFileUploadComponent } from './components/cm-file-upload/cm-file-upload.component';\nimport { CmInlineAlert } from './components/cm-inline-alert/inline-alert.component';\nimport { CmKeyValListComponent } from './components/cm-key-val/key-val-list.component';\nimport { CmKeyValComponent } from './components/cm-key-val/key-val.component';\nimport { CmLoaderComponent } from './components/cm-loader/cm-loader.component';\nimport { CmLoadingDialogComponent } from './components/cm-loading-dialog/cm-loading-dialog.component';\nimport { CmLoadingIconComponent } from './components/cm-loading-icon/cm-loading-icon.component';\nimport { CmLocalizeModalComponent } from './components/cm-localize-modal/localize-modal.component';\nimport { CmMultiselectModalComponent } from './components/cm-multiselect-modal/cm-multiselect-modal.component';\nimport { CmMultiselectComponent } from './components/cm-multiselect/cm-multiselect.component';\nimport { CmNotFoundComponent } from './components/cm-not-found/cm-not-found.component';\nimport { CmNotificationsComponent } from './components/cm-notifications/cm-notifications.component';\nimport { CmSnackBarA11yComponent } from './components/cm-notifications/sm-snackbar-a11y/cm-snackbar-a11y.component';\nimport { CmProgressIndicatorComponent } from './components/cm-progress-indicator/cm-progress-indicator.component';\nimport { CmReloadConfirmationComponent } from './components/cm-reload-confirmation/cm-reload-confirmation.component';\nimport { CmSearchComponent } from './components/cm-search/cm-search.component';\nimport { CmSelectSupportedLanguageComponent } from './components/cm-select-supported-language/cm-select-supported-lang.component';\nimport { CmSupportedCultureMenuComponent } from './components/cm-supported-culture-menu/cm-supported-culture-menu.component';\nimport { CmTableCellComponent } from './components/cm-table/cm-table-cell/cm-table-cell.component';\nimport { CmTableRowComponent } from './components/cm-table/cm-table-row/cm-table-row.component';\nimport { CmTableComponent } from './components/cm-table/cm-table.component';\nimport { CmTimeoutModalComponent } from './components/cm-timeout/cm-timeout-modal/cm-timeout-modal.component';\nimport { CmTimeoutComponent } from './components/cm-timeout/cm-timeout.component';\nimport { CmUIBugComponent } from './components/cm-ui-bug/ui-bug.component';\nimport { CmUnsavedConfirmationComponent } from './components/cm-unsaved-confirmation/cm-unsaved-confirmation.component';\nimport {\n\tCmCSVUploadDirective,\n\tCmDataLabelDirective,\n\tCmInnerHtmlSpacingDirective,\n\tCmInternalizeLinkDirective,\n\tCmLinkButtonDirective,\n\tCmLocalizeDirective,\n\tCmLogFormDirective,\n\tCmSSODirective,\n\tCmSelectFullDirective,\n\tCmVerticalStepperScrollerDirective,\n\tCmWrapButtonDirective,\n} from './directives';\nimport { CmContextOverlayDirective } from './directives/cm-context-overlay.directive';\nimport { CmCurrentLinkDirective } from './directives/cm-current-link.directive';\nimport { CmFileDownloadDirective } from './directives/cm-file-download.directive';\nimport { CmLinkDescriptionDirective } from './directives/cm-link-description.directive';\nimport { CmMarkAsteriskDirective } from './directives/cm-mark-asterisk.directive';\nimport { CmDatePipe, CmLinkFromRootPipe, CmLocalizeEnumPipe, CmTimePipe } from './pipes';\nimport { CmCulturePipe } from './pipes/culture.pipe';\nimport { CmSecureImagePipe } from './pipes/secure-image.pipe';\nimport { CmReloadService } from './services/cm-reload.service';\nimport { CmRouteService } from './services/route.service';\n\nconst declarations = [\n\tCmAddressFormComponent,\n\tCmAnnouncementDetailComponent,\n\tCmTimeoutModalComponent,\n\tCmTimeoutComponent,\n\tCmCSVUploadDirective,\n\tCmCertLogicTreeComponent,\n\tCmCertLogicViewComponent,\n\tCmContextOverlayComponent,\n\tCmContextOverlayDirective,\n\tCmContinueModalComponent,\n\tCmCookieModalComponent,\n\tCmCreqUploadComponent,\n\tCmCulturePipe,\n\tCmDashComponent,\n\tCmDatePipe,\n\tCmDeleteConfirmationComponent,\n\tCmFileDownloadDirective,\n\tCmFileUploadComponent,\n\tCmInlineAlert,\n\tCmInnerHtmlSpacingDirective,\n\tCmVerticalStepperScrollerDirective,\n\tCmKeyValComponent,\n\tCmKeyValListComponent,\n\tCmLinkButtonDirective,\n\tCmLinkFromRootPipe,\n\tCmLoaderComponent,\n\tCmLoadingIconComponent,\n\tCmLoadingDialogComponent,\n\tCmLocalizeDirective,\n\tCmLocalizeEnumPipe,\n\tCmLocalizeModalComponent,\n\tCmLogFormDirective,\n\tCmMarkAsteriskDirective,\n\tCmNotFoundComponent,\n\tCmNotificationsComponent,\n\tCmReloadConfirmationComponent,\n\tCmMultiselectComponent,\n\tCmInternalizeLinkDirective,\n\tCmProgressIndicatorComponent,\n\tCmSSODirective,\n\tCmSecureImagePipe,\n\tCmSelectFullDirective,\n\tCmSelectSupportedLanguageComponent,\n\tCmSelectionFormComponent,\n\tCmSelectionListComponent,\n\tCmSupportedCultureMenuComponent,\n\tCmTableCellComponent,\n\tCmTableComponent,\n\tCmTableRowComponent,\n\tCmDataLabelDirective,\n\tCmTimePipe,\n\tCmUIBugComponent,\n\tCmUnsavedConfirmationComponent,\n\tCmUploadConfirmationComponent,\n\tCmUploadFormComponent,\n\tCmInnerHtmlSpacingDirective,\n\tCmCurrentLinkDirective,\n\tCmLinkDescriptionDirective,\n\tCmSearchComponent,\n\tCmMultiselectModalComponent,\n\tCmSnackBarA11yComponent,\n\tCmWrapButtonDirective,\n];\n\nconst publicImports = [\n\tCommonModule,\n\tAtsUiModule,\n\tCmCoreModule,\n\tFormsModule,\n\tReactiveFormsModule,\n\tRouterModule,\n\tAtsIconsModule,\n\tAtsUtilityModule,\n\tMatDialogModule,\n\tCmAutocompleteComponent,\n\tAccessibilityModule,\n];\n\nconst privateImports = [\n\tCmMiniButtonDirective,\n\tEditorModule,\n\tMatTabsModule,\n\tLocalizeComponent,\n\tLocalizePipe,\n\tPointsMessageDisplayComponent,\n];\n\nconst providers = [\n\tCmDatePipe,\n\tCmCulturePipe,\n\tCmTimePipe,\n\tCmLinkFromRootPipe,\n\tCmLocalizeEnumPipe,\n\tCmCreqUploadService,\n\tCmSecureImagePipe,\n\tCmReloadService,\n];\n\n@NgModule({\n\tdeclarations,\n\timports: [...publicImports, ...privateImports],\n\texports: [...publicImports, ...declarations],\n\tproviders,\n})\nexport class CmUiModule {\n\tconstructor(\n\t\tprivate readonly routeService: CmRouteService,\n\t\tprivate readonly reload: CmReloadService,\n\t) {}\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, NavigationEnd, Resolve, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { CmAuthService } from '@ats/cm/core';\r\nimport { Unsubscribable } from '@ats/utility';\r\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\r\n\r\nconst enum UIActionTypes {\r\n\tSET_VIEW_VISIBILITY = 'Set the view visibility',\r\n}\r\n\r\ninterface UIAction {\r\n\treadonly type: UIActionTypes;\r\n\treadonly payload: boolean;\r\n}\r\n\r\nclass UIState {\r\n\thideUI: boolean = true;\r\n}\r\n\r\nconst reduce = (state: UIState, action: UIAction) => {\r\n\tswitch (action.type) {\r\n\t\tcase UIActionTypes.SET_VIEW_VISIBILITY:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\thideUI: action.payload,\r\n\t\t\t};\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n};\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmUIService extends Unsubscribable implements Resolve {\r\n\tprivate state = new UIState();\r\n\tprivate dispatch = new BehaviorSubject(this.state);\r\n\r\n\tlastResolvedRoute: string;\r\n\r\n\thideUI$: Observable = this.dispatch.asObservable().pipe(\r\n\t\tmap(state => state.hideUI),\r\n\t\tdistinctUntilChanged()\r\n\t);\r\n\r\n\tconstructor(private auth: CmAuthService, private router: Router) {\r\n\t\tsuper();\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tresolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n\t\tthis.lastResolvedRoute = state.url;\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\tconst auth$ = this.auth.token$.pipe(map(Boolean));\r\n\t\tconst routeChange$ = this.router.events.pipe(filter(event => event instanceof NavigationEnd));\r\n\r\n\t\tcombineLatest([auth$, routeChange$])\r\n\t\t\t.pipe(takeUntil(this.unsub))\r\n\t\t\t.subscribe(([auth, route]: [boolean, NavigationEnd]) => {\r\n\t\t\t\tif (!auth) {\r\n\t\t\t\t\tthis.updateUIVisibility(true);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.lastResolvedRoute && this.lastResolvedRoute === route.urlAfterRedirects)\r\n\t\t\t\t\tthis.updateUIVisibility(true);\r\n\t\t\t\telse this.updateUIVisibility(false);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate updateUIVisibility(hideUI: boolean) {\r\n\t\tconst type = UIActionTypes.SET_VIEW_VISIBILITY;\r\n\t\tconst action = { payload: hideUI, type };\r\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { CmLocalizationService, CmLocalizePipe } from '@ats/cm/core';\r\nimport { AtsNotificationService, NoticeType } from '@ats/notifications';\r\nimport { take } from 'rxjs';\r\n\r\nconst DEFAULT_LOC_VALUE = 'No changes made';\r\nconst DEFAULT_LOC_KEY = 'Core/System.Global.Notification.NoChanges';\r\n\r\nconst DEFAULT_FORM_ERROR_VALUE = 'Please check all form fields for errors and try again';\r\nconst DEFAULT_FORM_ERROR_KEY = 'Core/Error.GUID.UIError';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmFormService {\r\n\tconstructor(\r\n\t\tprivate notifications: AtsNotificationService,\r\n\t\tprivate localize: CmLocalizePipe,\r\n\t\tprivate readonly localizationService: CmLocalizationService\r\n\t) {}\r\n\r\n\tisPristine(\r\n\t\tform: UntypedFormGroup,\r\n\t\tpristineFormAllowed: boolean = true,\r\n\t\tlocValue: string = DEFAULT_LOC_VALUE,\r\n\t\tlocKey: string = DEFAULT_LOC_KEY\r\n\t): boolean {\r\n\t\tform.markAllAsTouched();\r\n\t\tif (!pristineFormAllowed && form.pristine) {\r\n\t\t\tthis.popNoChangesNotification(locValue, locKey);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpopNoChangesNotification(locValue: string = DEFAULT_LOC_VALUE, locKey: string = DEFAULT_LOC_KEY): void {\r\n\t\tthis.notifications.pop({\r\n\t\t\tid: 'formPristineError',\r\n\t\t\tmessage: this.localize.transform(locValue, locKey),\r\n\t\t\taction: 'X',\r\n\t\t\ttype: NoticeType.ERROR,\r\n\t\t});\r\n\t}\r\n\r\n\tpopGenericFormErrorNotification(\r\n\t\tlocValue: string = 'Please check all form fields for errors and try again',\r\n\t\tlocKey: string = 'Core/Error.GUID.UIError'\r\n\t): void {\r\n\t\tthis.localizationService\r\n\t\t\t.localize$(locKey, locValue)\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe(message =>\r\n\t\t\t\tthis.notifications.popError({\r\n\t\t\t\t\tid: 'form-error',\r\n\t\t\t\t\tmessage,\r\n\t\t\t\t\taction: 'X',\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\n\r\n/**\r\n * Class representing error state matching on form fields\r\n * @extends ErrorStateMatcher\r\n */\r\nexport class CmErrorStateMatcher extends ErrorStateMatcher {\r\n\t/**\r\n\t * Regulate when a field shows as invalid based on global form validators\r\n\t * @param {string[]} formErrors - A list of the form errors to match\r\n\t */\r\n\tconstructor(private formErrors: string[]) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tisErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n\t\treturn !!(\r\n\t\t\tcontrol &&\r\n\t\t\t(control.touched || control.dirty) &&\r\n\t\t\t(control.invalid || this.formErrors.some(err => form.hasError(err)))\r\n\t\t);\r\n\t}\r\n}\r\n","
\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\n\t\t
\n\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t{{ model?.value?.length || 0 }}/256\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t{{ model?.value?.length || 0 }}/256\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t{{ model?.value?.length || 0 }}/256\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t{{ model?.value?.length || 0 }}/256\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\n\t 0\"\n\t\t[required]=\"stateRequired\">\n\t\t\n\n\t\t{{ displayedStateCharacters$ | async }}/256\n\t\t
\n\t\t\t
\n\t\t\t\t@if(hasVueValidation) {}@else{}\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t{{ model?.value?.length || 0 }}/{{ postalCodeMaxLength }}\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{{ postalCodeMaxLength }}\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t{{ model?.value?.length || 0 }}/90\n\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t{{ model?.value?.length || 0 }}/90\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n\n\t
\n\t\t\n\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n\tUntypedFormBuilder,\n\tUntypedFormControl,\n\tUntypedFormGroup,\n\tValidators,\n} from '@angular/forms';\nimport { IsoCountry, PortalTypeEnum } from '@ats/api/cm';\nimport { Address, AddressType, CmInterceptHeaders } from '@ats/cm/core';\nimport { CMOption } from '@ats/cm/ui';\nimport { atsSort } from '@ats/utility';\nimport { SettingsService } from '@cm/core/settings';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo, gql } from 'apollo-angular';\nimport { Observable, combineLatest } from 'rxjs';\nimport {\n\tcombineLatestWith,\n\tdebounceTime,\n\tdistinctUntilChanged,\n\tmap,\n\tskip,\n\tstartWith,\n\ttap,\n} from 'rxjs/operators';\nimport { CmValidators } from '../../validators';\nimport { AddressFormLocs } from './address-form.type';\n\nconst COUNTRY_QUERY = gql`\n\tquery countries {\n\t\tcountries {\n\t\t\tcode\n\t\t\tname\n\t\t\tnoSubdivision\n\t\t\tsubdivisions {\n\t\t\t\tcode\n\t\t\t\tname\n\t\t\t}\n\t\t\tauxiliary {\n\t\t\t\tid\n\t\t\t\tprohibited\n\t\t\t\tsortGroup\n\t\t\t}\n\t\t}\n\t}\n`;\n\n@UntilDestroy()\n@Component({\n selector: 'cm-address-form',\n templateUrl: './cm-address-form.component.html',\n styleUrls: ['./cm-address-form.component.scss'],\n standalone: false\n})\nexport class CmAddressFormComponent implements OnInit {\n\t@Input() address: Address;\n\t@Input({ required: true }) locs!: AddressFormLocs;\n\t@Input() touchOnInit: boolean = false;\n\t@Output() save: EventEmitter
= new EventEmitter
();\n\t@Output() cancel: EventEmitter = new EventEmitter();\n\t@Input() freeform: ('state' | 'country')[];\n\t@Input() portalType: PortalTypeEnum;\n\t@Input() hideCancel: boolean = false;\n\t@Input() hasVueValidation: boolean = false;\n\n\taddressType = AddressType;\n\tpostalCodeMaxLength: number;\n\tformGroup: UntypedFormGroup;\n\tcountries$: Observable;\n\tstates$: Observable;\n\tdisplayedStateCharacters$: Observable;\n\tclassPrefix: string;\n\tlocPrefix: string;\n\tstateRequired: boolean;\n\n\tconstructor(\n\t\tprivate apollo: Apollo,\n\t\tprivate fb: UntypedFormBuilder,\n\t\tprivate settings: SettingsService\n\t) {}\n\n\tngOnInit() {\n\t\tconst countries$ = this.fetchCountries$();\n\t\tthis.classPrefix = this.portalType === PortalTypeEnum.SponsorPortal ? 'sp-form' : 'cp-form';\n\n\t\tthis.locPrefix =\n\t\t\tthis.portalType === PortalTypeEnum.SponsorPortal\n\t\t\t\t? 'CandidateProfile.Addresses/Candidates.Addresses.'\n\t\t\t\t: 'CandidateProfile.Addresses/Profile.Addresses.';\n\n\t\tthis.postalCodeMaxLength = this.hasVueValidation ? 15 : 90;\n\n\t\tthis.formGroup = this.fb.group({\n\t\t\tline1: [this.address.line1 || null, Validators.maxLength(256)],\n\t\t\tline2: [this.address.line2 || null, Validators.maxLength(256)],\n\t\t\tline3: [this.address.line3 || null, Validators.maxLength(256)],\n\t\t\tcity: [this.address.city || null, Validators.maxLength(256)],\n\t\t\tstate: [this.address.state || null, Validators.maxLength(256)],\n\t\t\tpostal: [this.address.postal || null, Validators.maxLength(this.postalCodeMaxLength)],\n\t\t\tcountry: [this.address.country || null, Validators.maxLength(256)],\n\t\t});\n\n\t\tif (this.address.type !== AddressType.LOCALIZED) {\n\t\t\tthis.formGroup.addControl(\n\t\t\t\t'fax',\n\t\t\t\tnew UntypedFormControl(this.address.fax, Validators.maxLength(90))\n\t\t\t);\n\t\t\tthis.formGroup.addControl(\n\t\t\t\t'phone',\n\t\t\t\tnew UntypedFormControl(this.address.phone, Validators.maxLength(90))\n\t\t\t);\n\t\t\tthis.formGroup.addControl('business', new UntypedFormControl(this.address.business));\n\t\t} else {\n\t\t\tthis.country.disable();\n\t\t}\n\n\t\tif (this.address.type === AddressType.MAILING) {\n\t\t\tthis.line1.addValidators([Validators.required]);\n\t\t\tthis.city.addValidators([Validators.required]);\n\t\t\tthis.country.addValidators([Validators.required]);\n\t\t}\n\n\t\tthis.countries$ = countries$.pipe(\n\t\t\tmap(countries =>\n\t\t\t\tcountries.map(\n\t\t\t\t\tcountry => ({ display: country.name, value: country.code } as CMOption)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\n\t\tconst selectedCountry$ = this.country.valueChanges.pipe(startWith(this.country.value));\n\t\tthis.states$ = combineLatest([countries$, selectedCountry$]).pipe(\n\t\t\tmap(([countries, selected]) => {\n\t\t\t\tconst selectedCountry = countries.find(\n\t\t\t\t\tcountry => country.code === selected || country.name === selected\n\t\t\t\t);\n\t\t\t\tconst states = ((selectedCountry || {}).subdivisions || []).map(\n\t\t\t\t\tsubdivision =>\n\t\t\t\t\t\t({ display: subdivision.name, value: subdivision.code } as CMOption)\n\t\t\t\t);\n\t\t\t\treturn states;\n\t\t\t}),\n\t\t\ttap(states => {\n\t\t\t\tthis.stateRequired = (states || []).length > 0 || this.hasVueValidation;\n\t\t\t\tif (this.stateRequired) {\n\t\t\t\t\tthis.state.setValidators([Validators.required, Validators.maxLength(256)]);\n\t\t\t\t} else {\n\t\t\t\t\tthis.state.setValidators([Validators.maxLength(256)]);\n\t\t\t\t}\n\t\t\t\tthis.state.updateValueAndValidity();\n\t\t\t})\n\t\t);\n\n\t\tif (this.hasVueValidation) {\n\t\t\tthis.listenToCountryChangesForVue();\n\t\t}\n\n\t\tif (!this.freeform?.includes('state') && !this.freeform?.includes('country')) {\n\t\t\tthis.states$.pipe(skip(1), untilDestroyed(this)).subscribe(() => {\n\t\t\t\tthis.state.setValue(null);\n\t\t\t\tthis.state.updateValueAndValidity();\n\t\t\t});\n\t\t}\n\n\t\tthis.markFormAsTouchedIfAddressHasValues();\n\t\tthis.displayedStateCharacters$ = this.getDisplayedStateCharacters$();\n\t}\n\n\tpublic handleSubmit() {\n\t\tthis.formGroup.markAllAsTouched();\n\t\tthis.formGroup.updateValueAndValidity();\n\t\tif (this.formGroup.valid) {\n\t\t\tthis.save.emit(this.formGroup.value as Address);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tget line1() {\n\t\treturn this.formGroup.get('line1') as UntypedFormControl;\n\t}\n\tget line2() {\n\t\treturn this.formGroup.get('line2') as UntypedFormControl;\n\t}\n\tget line3() {\n\t\treturn this.formGroup.get('line3') as UntypedFormControl;\n\t}\n\tget city() {\n\t\treturn this.formGroup.get('city') as UntypedFormControl;\n\t}\n\tget state() {\n\t\treturn this.formGroup.get('state') as UntypedFormControl;\n\t}\n\tget postal() {\n\t\treturn this.formGroup.get('postal') as UntypedFormControl;\n\t}\n\tget country() {\n\t\treturn this.formGroup.get('country') as UntypedFormControl;\n\t}\n\tget business() {\n\t\treturn this.formGroup.get('business') as UntypedFormControl;\n\t}\n\tget phone() {\n\t\treturn this.formGroup.get('phone') as UntypedFormControl;\n\t}\n\tget fax() {\n\t\treturn this.address.type !== AddressType.LOCALIZED\n\t\t\t? (this.formGroup.get('fax') as UntypedFormControl)\n\t\t\t: undefined;\n\t}\n\n\tget cityReq() {\n\t\treturn this.address.type === AddressType.MAILING;\n\t}\n\n\tget line1Req() {\n\t\treturn this.address.type === AddressType.MAILING;\n\t}\n\n\tprivate getDisplayedStateCharacters$(): Observable {\n\t\treturn this.state.valueChanges.pipe(\n\t\t\tdebounceTime(300),\n\t\t\tdistinctUntilChanged(),\n\t\t\tcombineLatestWith(this.states$),\n\t\t\tmap(([stateCode, allStates]) => {\n\t\t\t\tconst state = allStates.find(state => state.value === stateCode);\n\t\t\t\treturn state ? ((state || {}).display || '').length : (stateCode || '').length;\n\t\t\t})\n\t\t);\n\t}\n\n\tprivate markFormAsTouchedIfAddressHasValues(): void {\n\t\tconst formHasValue = Object.keys(this.address)\n\t\t\t.filter(key => {\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase '__typename':\n\t\t\t\t\tcase 'cmcId':\n\t\t\t\t\tcase 'type':\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.some(key => !!this.address[key]);\n\n\t\tif (formHasValue || this.touchOnInit) {\n\t\t\tthis.formGroup.markAllAsTouched();\n\t\t}\n\t}\n\n\tprivate fetchCountries$() {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ countries: IsoCountry[] }>({\n\t\t\t\tquery: COUNTRY_QUERY,\n\t\t\t\tcontext: {\n\t\t\t\t\theaders: CmInterceptHeaders.ClientHeader(this.settings.clientSnapshot),\n\t\t\t\t},\n\t\t\t})\n\t\t\t.valueChanges.pipe(\n\t\t\t\tmap(results => results?.data?.countries),\n\t\t\t\tmap(countries => countries.filter(country => !country.auxiliary?.prohibited)),\n\t\t\t\tmap(countries =>\n\t\t\t\t\tcountries.map(country => ({\n\t\t\t\t\t\t...country,\n\t\t\t\t\t\tauxiliary: country.auxiliary\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...country.auxiliary,\n\t\t\t\t\t\t\t\t\tsortGroup: country.auxiliary.sortGroup * -1,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t}))\n\t\t\t\t),\n\t\t\t\tatsSort('auxiliary.sortGroup', 'name')\n\t\t\t);\n\t}\n\n\tprivate listenToCountryChangesForVue(): void {\n\t\tthis.country.valueChanges\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(300),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tstartWith(this.country.value),\n\t\t\t\tuntilDestroyed(this)\n\t\t\t)\n\t\t\t.subscribe(country => {\n\t\t\t\tif (country === 'USA' || country === 'CAN') {\n\t\t\t\t\tthis.postal.setValidators([\n\t\t\t\t\t\tValidators.required,\n\t\t\t\t\t\tCmValidators.vuePostalCode(country),\n\t\t\t\t\t]);\n\t\t\t\t\tthis.postal.updateValueAndValidity();\n\t\t\t\t\tthis.phone.setValidators([\n\t\t\t\t\t\tValidators.required,\n\t\t\t\t\t\tCmValidators.vueUsaPhoneFormat,\n\t\t\t\t\t\tCmValidators.vueZerosPhoneFormat,\n\t\t\t\t\t]);\n\t\t\t\t\tthis.phone.updateValueAndValidity();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.postal.setValidators([Validators.required]);\n\t\t\t\tthis.postal.updateValueAndValidity();\n\t\t\t\tthis.phone.setValidators([Validators.required, CmValidators.vueZerosPhoneFormat]);\n\t\t\t\tthis.phone.updateValueAndValidity();\n\t\t\t});\n\t}\n}\n","
\n\t\n\t\t\n\t\t\t \n\t\t\t\n\t\t\t\tMore information\n\t\t\t\n\t\t\n\t\n\t
\n\t\t

\n\t\t\t{{ announcement.headline }}\n\t\t

\n\t\t
\n\t\t\t{{ announcement.summary }}\n\t\t
\n\t\t
\n\t
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NewsArticleDetail } from '@ats/api/cm';\n\n@Component({\n selector: 'cm-announcement-detail',\n templateUrl: './cm-announcement-detail.component.html',\n styleUrls: ['./cm-announcement-detail.component.scss'],\n standalone: false\n})\nexport class CmAnnouncementDetailComponent implements OnInit {\n\t@Input() announcement: NewsArticleDetail;\n\n\tconstructor(private sanitizer: DomSanitizer) {}\n\n\tngOnInit() {}\n\n\tsanitizeHtml(body: string): SafeHtml {\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(body);\n\t}\n\n\tcheckPictureUrl(pictureUrl: string): string {\n\t\treturn pictureUrl ? `url('${pictureUrl}')` : null;\n\t}\n}\n","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ node.externalId }}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t-\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tRequired:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tAll\r\n\t\t\t\t\t\t({{node.numChildren}})\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{node.numRequired}}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCompleted:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ node.earnedPoints }}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t  – {{node.label}} \r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t 0 || node.earnedPoints)\">\r\n\t\t\t\t\t\t 0\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tMax:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ node.maxPoints }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCompleted:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ node.earnedPoints }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t  – {{node.label}} \r\n\t\t\t\t\t 0 || node.earnedPoints))\r\n\t\t\t\t\t\t\t}\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t{{ formatLeafName(node) }}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t— \r\n\t\t\t\t\t\t\t\tStarts\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t{{node.startDate | cmDate}}\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t, \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tEnds\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t{{node.endDate | cmDate}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ node.isComplete ? ('Complete' |\r\n\t\t\t\t\t\t\t\tcmLocalize:'Credential/System.LogicTree.Content.Complete') : ('Incomplete' |\r\n\t\t\t\t\t\t\t\tcmLocalize:'Credential/System.LogicTree.Content.Incomplete') }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t 0 || node.earnedPoints)}\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t
\r\n\r\n\r\n\t\t\t\r\n\t\t\t\t

{{ formatLeafName(node) }}

\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tActive:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{ (usedItem.cert?.activeDate || usedItem.exam?.dateTime ||\r\n\t\t\t\t\t\t\t\t\tusedItem.certRequirement?.activeDate) | cmDate }}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tInactive:\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{ (usedItem.cert?.inactiveDate | cmDate) || (\"Never\" | cmLocalize: locFeature +\r\n\t\t\t\t\t\t\t\t\t\t'/System.Global.Content.Never') }}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tPoints:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{ usedItem.points }}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { NestedTreeControl } from '@angular/cdk/tree';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';\nimport { MatTreeNestedDataSource } from '@angular/material/tree';\nimport { CertLogicItemResponse, CertLogicItemType } from '@ats/api/cm';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\n\n@Component({\n selector: 'cm-cert-logic-tree',\n templateUrl: './cm-cert-logic-tree.component.html',\n styleUrls: ['./cm-cert-logic-tree.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CmCertLogicTreeComponent implements OnChanges {\n\ttreeControl = new NestedTreeControl(node => node.children);\n\tdataSource = new MatTreeNestedDataSource();\n\t@Input() data: CertLogicItemResponse;\n\t@Input() treeInitiallyClosed: boolean = false;\n\t@Input() catalog: boolean = false;\n\ttypes = CertLogicItemType;\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\tngOnChanges(): void {\n\t\tthis.treeControl.dataNodes = [this.data];\n\t\tthis.dataSource.data = [this.data];\n\t\tif (!this.treeInitiallyClosed) {\n\t\t\tthis.treeControl.expandAll();\n\t\t}\n\t}\n\n\thasChild(_: number, node: CertLogicItemResponse): boolean {\n\t\treturn !!node.children && node.children.length > 0;\n\t}\n\n\tformatLeafName(item: CertLogicItemResponse): string {\n\t\tif (item.certCatalog) {\n\t\t\treturn item.certCatalog.nameAbbr\n\t\t\t\t? `${item.certCatalog.name} (${item.certCatalog.nameAbbr})`\n\t\t\t\t: item.certCatalog.name;\n\t\t} else if (item.certRequirementCatalog) {\n\t\t\treturn item.certRequirementCatalog.name;\n\t\t} else if (item.examCatalog) {\n\t\t\treturn item.examCatalog.externalId\n\t\t\t\t? `(${item.examCatalog.externalId}) ${item.examCatalog.name}`\n\t\t\t\t: item.examCatalog.name;\n\t\t}\n\t}\n}\n","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\t\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tExtension\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ certHistoryDetail.activeDate | cmDate }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tNew Inactive\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ certHistoryDetail.inactiveDate | cmDate }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tNew Expires\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ certHistoryDetail.expireDate | cmDate }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tType\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ certHistoryDetail.type | cmLocalizeEnum: 'ChType' }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tLinked Credential\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ certHistoryDetail.linkedCert.certCatalog.name }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t
\r\n
\r\n\r\n\r\n\r\n\t

No data\r\n\t\tavailable

\r\n
\r\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tQueryList,\n\tViewChildren,\n} from '@angular/core';\nimport { CertDetail, CertHistoryDetail } from '@ats/api/cm';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\n\n@Component({\n selector: 'cm-cert-logic-view',\n templateUrl: './cm-cert-logic-view.component.html',\n styleUrls: ['./cm-cert-logic-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CmCertLogicViewComponent {\n\t@Input() isHistoryVisible: boolean = false;\n\t@Input() cert: CertDetail;\n\t@Input() certHistoryDetail: CertHistoryDetail;\n\t@Input() showCurrentProgress: boolean = true;\n\t@Output() selectedHistoryId: EventEmitter = new EventEmitter();\n\t@ViewChildren('tab') tabs: QueryList;\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\temitHistoryId(id: number): void {\n\t\tthis.selectedHistoryId.emit(id);\n\t}\n\n\tisItemSelected(itemId: number): boolean {\n\t\treturn this.certHistoryDetail?.id === itemId;\n\t}\n\n\ttabKeyHandler(e: KeyboardEvent): void {\n\t\tconst currentTab: number = this.tabs\n\t\t\t.toArray()\n\t\t\t.findIndex(tab => tab.nativeElement.id === document.activeElement.id);\n\n\t\tconst formattedPositiveIndex = currentTab + 1 > this.tabs.length - 1 ? 0 : currentTab + 1;\n\t\tconst formattedNegativeIndex = currentTab - 1 < 0 ? this.tabs.length - 1 : currentTab - 1;\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault();\n\t\t\t\treturn this.tabs.toArray()[formattedNegativeIndex].nativeElement.focus();\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault();\n\t\t\t\treturn this.tabs.toArray()[formattedPositiveIndex].nativeElement.focus();\n\t\t\tcase 'ArrowLeft':\n\t\t\t\te.preventDefault();\n\t\t\t\treturn this.tabs.toArray()[formattedNegativeIndex].nativeElement.focus();\n\t\t\tcase 'ArrowRight':\n\t\t\t\te.preventDefault();\n\t\t\t\treturn this.tabs.toArray()[formattedPositiveIndex].nativeElement.focus();\n\t\t}\n\t}\n}\n","\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t
\n
\n","import { Component, Input, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Component({\n selector: 'cm-context-overlay',\n templateUrl: './context-overlay.component.html',\n styleUrls: ['./context-overlay.component.scss'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'cmOverlay',\n standalone: false\n})\nexport class CmContextOverlayComponent {\n\t@Input() data: any;\n\t@Input() style: { [klass: string]: any };\n\tprivate closeSubj: Subject = new Subject();\n\tpublic close$: Observable = this.closeSubj.asObservable();\n\tpublic contentTpl: TemplateRef;\n\tpublic context: any;\n\tpublic titleTpl: TemplateRef;\n\tpublic titleContext: any;\n\t@ViewChild('overlayTpl', { read: TemplateRef }) public template: TemplateRef;\n\t@ViewChild('content', { read: ViewContainerRef }) vc: ViewContainerRef;\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\tclose() {\n\t\tthis.closeSubj.next();\n\t}\n}\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n
\n","import { CdkStep, StepperSelectionEvent } from '@angular/cdk/stepper';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatStepper } from '@angular/material/stepper';\nimport { PortalType } from '@ats/api/cm';\nimport { CmFeatureService } from '@ats/cm/core';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable, of, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';\nimport {\n\tCPCreqUploadLocKeys,\n\tcpCreqUploadLocs,\n\tSPCreqUploadLocKeys,\n\tspCreqUploadLocs,\n} from './creq-upload.locs';\nimport { CmCreqUploadService } from './creq-upload.service';\nimport { DEFAULT_DOCUMENTATION_VALIDATORS } from './default-documentation-validators';\nimport { UploadFeatures } from './selection-form/selection-form.component';\n\n// Upload form shows invalid when starting over - Bug in the material stepper\n// https://github.com/angular/components/issues/14067\n\n@UntilDestroy()\n@Component({\n selector: 'cm-creq-upload',\n templateUrl: './creq-upload.component.html',\n styleUrls: ['./creq-upload.component.scss'],\n providers: [LocalizationProvider({ ...spCreqUploadLocs, ...cpCreqUploadLocs })],\n standalone: false\n})\nexport class CmCreqUploadComponent implements OnInit {\n\t@Input() cmcId$: Observable;\n\tfeatures$: Observable;\n\tcomplete$: Observable;\n\n\titemSelectionFormGroup: UntypedFormGroup;\n\titemUploadFormGroup: UntypedFormGroup;\n\n\tprivate completeSubj$ = new Subject();\n\tprivate stepTwoActivated = new Subject();\n\tprivate selectionHasChanged = false;\n\n\tconstructor(\n\t\tprivate readonly fb: UntypedFormBuilder,\n\t\tprivate readonly settings: SettingsService,\n\t\tprivate readonly features: CmFeatureService,\n\t\tprivate readonly uploadService: CmCreqUploadService,\n\t\t@Inject(LOC_INJECTOR) public readonly locs: CPCreqUploadLocKeys & SPCreqUploadLocKeys\n\t) {}\n\n\tngOnInit() {\n\t\tthis.features$ = this.findPath();\n\t\tthis.complete$ = this.completeSubj$.asObservable().pipe(startWith(false));\n\t\tthis.initForm();\n\n\t\tthis.uploadService.selection$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(\n\t\t\t\t\t(a, b) =>\n\t\t\t\t\t\ta.credential === b.credential &&\n\t\t\t\t\t\ta.group === b.group &&\n\t\t\t\t\t\ta.intent === b.intent &&\n\t\t\t\t\t\ta.name === b.name\n\t\t\t\t),\n\t\t\t\tuntilDestroyed(this)\n\t\t\t)\n\t\t\t.subscribe(() => (this.selectionHasChanged = true));\n\n\t\tthis.stepTwoActivated\n\t\t\t.asObservable()\n\t\t\t.pipe(untilDestroyed(this))\n\t\t\t.subscribe(step => {\n\t\t\t\tif (this.selectionHasChanged && step.interacted) {\n\t\t\t\t\tstep.interacted = false;\n\n\t\t\t\t\tthis.itemUploadFormGroup.markAsPristine();\n\t\t\t\t\tthis.itemUploadFormGroup.markAsUntouched();\n\t\t\t\t}\n\t\t\t\tthis.selectionHasChanged = false;\n\t\t\t});\n\t}\n\n\thandleSelectionChange(ev: StepperSelectionEvent) {\n\t\tif (ev.selectedIndex === 1) {\n\t\t\tthis.stepTwoActivated.next(ev.selectedStep);\n\t\t}\n\t}\n\n\thandleNext(stepper: MatStepper) {\n\t\tstepper.next();\n\t}\n\n\thandleCompletion(stepper: MatStepper) {\n\t\tthis.completeSubj$.next(true);\n\t\tstepper.next();\n\t}\n\n\thandleRestart(stepper: MatStepper) {\n\t\tstepper.reset();\n\t\tthis.itemUploadFormGroup.get('documentation').setValue(null);\n\t\tthis.itemSelectionFormGroup.reset();\n\t\tthis.itemUploadFormGroup.reset();\n\t\tthis.itemSelectionFormGroup.markAsUntouched();\n\t\tthis.itemSelectionFormGroup.markAsPristine();\n\t\tthis.itemUploadFormGroup.markAsUntouched();\n\t\tthis.itemUploadFormGroup.markAsPristine();\n\t\tthis.selectionHasChanged = true;\n\t\tthis.completeSubj$.next(false);\n\t}\n\n\tprivate findPath(): Observable {\n\t\tconst userFeatures$ = this.features.protected$.pipe(filter(features => !!features));\n\t\treturn this.settings.portal === PortalType.SponsorPortal\n\t\t\t? of([])\n\t\t\t: userFeatures$.pipe(\n\t\t\t\t\tmap(\n\t\t\t\t\t\tfeatures =>\n\t\t\t\t\t\t\tfeatures.filter(feature =>\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tUploadFeatures.Initial,\n\t\t\t\t\t\t\t\t\tUploadFeatures.Miscellaneous,\n\t\t\t\t\t\t\t\t\tUploadFeatures.Recertification,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t.map(uploadFeat => uploadFeat.toString())\n\t\t\t\t\t\t\t\t\t.includes(feature)\n\t\t\t\t\t\t\t) as UploadFeatures[]\n\t\t\t\t\t)\n\t\t\t\t);\n\t}\n\n\tprivate initForm() {\n\t\tthis.features$.pipe(untilDestroyed(this), distinctUntilChanged()).subscribe(features => {\n\t\t\tconst intentValidators = features.length > 0 ? [Validators.required] : [];\n\t\t\tthis.itemSelectionFormGroup = this.fb.group({\n\t\t\t\tintent: [null, intentValidators],\n\t\t\t\tcredential: [null],\n\t\t\t\tgroup: [null, [Validators.required]],\n\t\t\t\tname: [null, [Validators.required]],\n\t\t\t});\n\t\t});\n\n\t\tthis.itemUploadFormGroup = this.fb.group({\n\t\t\tactiveDate: ['', Validators.required],\n\t\t\toverrideExpireDate: [false],\n\t\t\texpireDate: [null],\n\t\t\tpoints: [null],\n\t\t\tprovider: [''],\n\t\t\tnotes: [''],\n\t\t\tcomments: [''],\n\t\t\tdocumentationLang: [''],\n\t\t\tdocumentation: ['', [Validators.required, ...DEFAULT_DOCUMENTATION_VALIDATORS]],\n\t\t});\n\t}\n}\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type SPCreqUploadLocs =\r\n 'SPCreqUploadStepOneTitle' |\r\n 'SPCreqUploadStepTwoTitle' |\r\n 'SPCreqUploadStepThreeTitle';\r\n\r\nexport const spCreqUploadLocs: LocDefs = {\r\n SPCreqUploadStepOneTitle: {\r\n defaultValue: 'Select Item',\r\n description: 'Title for the first step in the creq upload process',\r\n displayPath: `History|Upload Items|Step One Title`,\r\n displayType: 'Content',\r\n feature: HubFeature.OtherRequirementUpload,\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Title.StepOne',\r\n portal: 'SP',\r\n },\r\n SPCreqUploadStepTwoTitle: {\r\n defaultValue: 'Upload Items',\r\n description: 'Title for the second step in the creq upload process',\r\n displayPath: `History|Upload Items|Step Two Title`,\r\n displayType: 'Title',\r\n feature: HubFeature.OtherRequirementUpload,\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Title.StepTwo',\r\n portal: 'SP',\r\n },\r\n SPCreqUploadStepThreeTitle: {\r\n defaultValue: 'Submitted',\r\n description: 'Title for the third step in the creq upload process',\r\n displayPath: `History|Upload Items|Step Three Title`,\r\n displayType: 'Title',\r\n feature: HubFeature.OtherRequirementUpload,\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Title.StepThree',\r\n portal: 'SP',\r\n },\r\n};\r\n\r\nexport type SPCreqUploadLocKeys = LocMap;\r\nexport const spCreqUploadLocKeys: SPCreqUploadLocKeys =\r\n MapLocKeys(spCreqUploadLocs);\r\n\r\nexport type CPCreqUploadLocs =\r\n 'CPCreqUploadStepOneTitle' |\r\n 'CPCreqUploadStepTwoTitle' |\r\n 'CPCreqUploadStepThreeTitle';\r\n\r\nexport const cpCreqUploadLocs: LocDefs = {\r\n CPCreqUploadStepOneTitle: {\r\n defaultValue: 'Select Item',\r\n description: 'Title for the first step in the creq upload process',\r\n displayPath: 'History|Upload Items|Step One',\r\n displayType: 'Title',\r\n feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Title.StepOne',\r\n portal: 'CP',\r\n },\r\n CPCreqUploadStepTwoTitle: {\r\n defaultValue: 'Upload Items',\r\n description: 'Title for the second step in the creq upload process',\r\n displayPath: 'History|Upload Items|Step Two',\r\n displayType: 'Title',\r\n feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Title.StepTwo',\r\n portal: 'CP',\r\n },\r\n CPCreqUploadStepThreeTitle: {\r\n defaultValue: 'Submitted',\r\n description: 'Title for the third step in the creq upload process',\r\n displayPath: 'History|Upload Items|Step Three',\r\n displayType: 'Title',\r\n feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Title.StepThree',\r\n portal: 'CP',\r\n },\r\n};\r\n\r\nexport type CPCreqUploadLocKeys = LocMap;\r\nexport const cpCreqUploadLocKeys: CPCreqUploadLocKeys =\r\n MapLocKeys(cpCreqUploadLocs);\r\n","import { KeyValue } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { CertLogicType, CertRequirementDetail } from '@ats/api/cm';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nexport interface Selection {\n\treadonly intent?: CertLogicType;\n\treadonly credential?: number;\n\treadonly group?: number;\n\treadonly name?: number;\n}\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class CmCreqUploadService {\n\tselection$: Observable;\n\tselectionSnapshot: Selection = { intent: null, credential: null, group: null, name: null };\n\tmaps$: Observable[]>;\n\tcreqUpload$: Observable>;\n\n\tprivate selectionSubj$ = new BehaviorSubject(this.selectionSnapshot);\n\tprivate mapsSubj$ = new Subject[]>();\n\tprivate creqUploadSubj$ = new Subject>();\n\n\tconstructor() {\n\t\tthis.selection$ = this.selectionSubj$.asObservable().pipe(startWith(this.selectionSnapshot));\n\t\tthis.maps$ = this.mapsSubj$.asObservable().pipe(startWith([]));\n\t\tthis.creqUpload$ = this.creqUploadSubj$.asObservable();\n\t}\n\n\tselect(selection: Selection) {\n\t\tthis.selectionSnapshot = selection;\n\t\tthis.selectionSubj$.next(selection);\n\t}\n\n\taddMaps(maps: KeyValue[]) {\n\t\tthis.mapsSubj$.next(maps);\n\t}\n\n\tsetCReq(creq: Partial) {\n\t\tthis.creqUploadSubj$.next(creq);\n\t}\n}\n","import { Validators } from '@angular/forms';\r\nimport { CmValidators } from '../../validators';\r\n\r\nexport const DEFAULT_DOCUMENTATION_VALIDATORS = [CmValidators.fileSizeValidator(20), Validators.maxLength(5)];\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type SPCrcatPointsLocs = 'SPCrcatPointsMax' | 'SPCrcatPointsMin';\r\n\r\nexport const spCrcatPointsLocs: LocDefs = {\r\n\tSPCrcatPointsMax: {\r\n\t\tdefaultValue: 'must be less than or equal to',\r\n\t\tdescription: 'Hint/error message displayed when max points is set.',\r\n\t\tdisplayPath: `History|Upload Items|Max Points`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatPointsMin: {\r\n\t\tdefaultValue: 'must be greater than or equal to',\r\n\t\tdisplayPath: `History|Upload Items|Minimum Points`,\r\n\t\tdescription: `Hint/error message displayed when catalog points is set.`,\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport type SPCrcatPointsLocKeys = LocMap;\r\nexport const spCrcatPointsLocKeys: SPCrcatPointsLocKeys =\r\n\tMapLocKeys(spCrcatPointsLocs);\r\n\r\nexport type CPCrcatPointsLocs = 'CPCrcatPointsMax' | 'CPCrcatPointsMin';\r\n\r\nexport const cpCrcatPointsLocs: LocDefs = {\r\n\tCPCrcatPointsMax: {\r\n\t\tdefaultValue: 'must be less than or equal to',\r\n\t\tdescription: 'Hint/error message displayed when max points is set.',\r\n\t\tdisplayPath: `Candidate|Program History|Upload Items|Max Points`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tCPCrcatPointsMin: {\r\n\t\tdefaultValue: 'must be greater than or equal to',\r\n\t\tdisplayPath: `Candidate|Program History|Upload Items|Minimum Points`,\r\n\t\tdescription: `Hint/error message displayed when catalog points is set.`,\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport type CPCrcatPointsLocKeys = LocMap;\r\nexport const cpCrcatPointsLocKeys: CPCrcatPointsLocKeys =\r\n\tMapLocKeys(cpCrcatPointsLocs);\r\n","\n\t\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\n\t
\n
\n","/* eslint-disable import/no-deprecated */\nimport { KeyValue } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormGroupDirective, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n\tCertCatalog,\n\tCertCatalogListRequest,\n\tCertLogicType,\n\tCertRequirementCatalog,\n\tCertRequirementCatalogListRequest,\n\tPortalType,\n} from '@ats/api/cm';\nimport { CmAuthService } from '@ats/cm/core';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo, gql } from 'apollo-angular';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { CMOption } from '../../../models';\nimport { CmCreqUploadService, Selection } from '../creq-upload.service';\nimport {\n\tCPSelectionFormLocKeys,\n\tcpSelectionFormLocs,\n\tSPSelectionFormLocKeys,\n\tspSelectionFormLocs,\n} from './selection-form.locs';\n\nconst CANDIDATE_CERTS_QUERY = gql`\n\tquery certCatalogList($request: CertCatalogListRequest) {\n\t\tcertCatalogList(request: $request) {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t}\n`;\n\nconst ITEM_GROUP_QUERY = gql`\n\tquery certRequirementCatalogList($request: CertRequirementCatalogListRequest) {\n\t\tcertRequirementCatalogList(request: $request) {\n\t\t\tid\n\t\t\tname\n\t\t\tcanCurrentAccountCreate\n\t\t\tcandidateCreateEnabled\n\t\t\ttype\n\t\t\tcreateType\n\t\t\tcertRequirementGroup {\n\t\t\t\tid\n\t\t\t\tname\n\t\t\t\tdisplayOrder\n\t\t\t\tprogram\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport enum UploadFeatures {\n\tInitial = 'OtherRequirement.Upload.CandidateAccess.InitialCertification',\n\tRecertification = 'OtherRequirement.Upload.CandidateAccess.Recertification',\n\tMiscellaneous = 'OtherRequirement.Upload.CandidateAccess.Miscellaneous',\n}\n\nconst INTENT_OPTIONS: { feature: UploadFeatures; option: CMOption }[] = [\n\t{\n\t\tfeature: UploadFeatures.Initial,\n\t\toption: { value: CertLogicType.Initial, display: 'Initial Certification' },\n\t},\n\t{\n\t\tfeature: UploadFeatures.Recertification,\n\t\toption: { value: CertLogicType.Recertification, display: 'Recertification' },\n\t},\n\t{\n\t\tfeature: UploadFeatures.Miscellaneous,\n\t\toption: { value: CertLogicType.Miscellaneous, display: 'Miscellaneous' },\n\t},\n];\n\n@UntilDestroy()\n@Component({\n selector: 'cm-selection-form',\n templateUrl: './selection-form.component.html',\n styleUrls: ['./selection-form.component.scss'],\n providers: [LocalizationProvider({ ...spSelectionFormLocs, ...cpSelectionFormLocs })],\n standalone: false\n})\nexport class CmSelectionFormComponent implements OnInit {\n\t@Input() features$: Observable;\n\t@Output() next = new EventEmitter();\n\n\tformGroup: UntypedFormGroup;\n\tisBasic$: Observable;\n\tselection$: Observable;\n\tintents$: Observable;\n\tcredentials$: Observable;\n\titemGroups$: Observable;\n\titemNames$: Observable;\n\thideCredentials$: Observable;\n\tshowNoCertWarning = false;\n\tisSP: boolean;\n\n\tget intent() {\n\t\treturn this.formGroup.get('intent');\n\t}\n\n\tget credential() {\n\t\treturn this.formGroup.get('credential');\n\t}\n\n\tget group() {\n\t\treturn this.formGroup.get('group');\n\t}\n\n\tget name() {\n\t\treturn this.formGroup.get('name');\n\t}\n\n\tconstructor(\n\t\tprivate apollo: Apollo,\n\t\tprivate auth: CmAuthService,\n\t\tprivate parentForm: FormGroupDirective,\n\t\tprivate uploadService: CmCreqUploadService,\n\t\tprivate notifications: AtsNotificationService,\n\t\tprivate settings: SettingsService,\n\t\t@Inject(LOC_INJECTOR) public readonly locs: SPSelectionFormLocKeys & CPSelectionFormLocKeys\n\t) {\n\t\tthis.isSP = this.settings.portal === PortalType.SponsorPortal;\n\t}\n\n\tngOnInit() {\n\t\tthis.isBasic$ = this.features$.pipe(map(features => features.length === 0));\n\t\tthis.formGroup = this.parentForm.form;\n\t\tthis.selection$ = this.uploadService.selection$;\n\t\tthis.intents$ = this.initIntentOptions();\n\t\tthis.credentials$ = this.initCredentialOptions();\n\t\tthis.itemGroups$ = this.initGroupOptions();\n\t\tthis.itemNames$ = this.initNameOptions();\n\n\t\tthis.hideCredentials$ = this.selection$.pipe(\n\t\t\tmap(selection => selection.intent),\n\t\t\tmap(intent => intent === CertLogicType.Miscellaneous)\n\t\t);\n\n\t\tthis.initSelection();\n\t\tthis.initMaps();\n\t}\n\n\tinitMaps() {\n\t\tcombineLatest([this.selection$, this.credentials$, this.itemGroups$, this.itemNames$])\n\t\t\t.pipe(untilDestroyed(this))\n\t\t\t.subscribe(([selection, credentials, groups, names]) => {\n\t\t\t\tconst maps: KeyValue[] = [];\n\t\t\t\tif (selection.credential && credentials && !!credentials.length) {\n\t\t\t\t\tconst opt = credentials.find(cred => cred.value === selection.credential);\n\t\t\t\t\tif (opt) {\n\t\t\t\t\t\tmaps.push({\n\t\t\t\t\t\t\tkey: this.isSP\n\t\t\t\t\t\t\t\t? this.locs.SPSelectionFormFieldLabelCredential\n\t\t\t\t\t\t\t\t: this.locs.CPSelectionFormFieldLabelCredential,\n\t\t\t\t\t\t\tvalue: opt.display,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selection.group && groups && !!groups.length) {\n\t\t\t\t\tconst opt = groups.find(group => group.value === selection.group);\n\t\t\t\t\tif (opt) {\n\t\t\t\t\t\tmaps.push({\n\t\t\t\t\t\t\tkey: this.isSP\n\t\t\t\t\t\t\t\t? this.locs.SPSelectionFormFieldLabelItemGroup\n\t\t\t\t\t\t\t\t: this.locs.CPSelectionFormFieldLabelItemGroup,\n\t\t\t\t\t\t\tvalue: opt.display,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selection.name && names && !!names.length) {\n\t\t\t\t\tconst opt = names.find(name => name.value === selection.name);\n\t\t\t\t\tif (opt) {\n\t\t\t\t\t\tmaps.push({\n\t\t\t\t\t\t\tkey: this.isSP\n\t\t\t\t\t\t\t\t? this.locs.SPSelectionFormFieldLabelItemName\n\t\t\t\t\t\t\t\t: this.locs.CPSelectionFormFieldLabelItemName,\n\t\t\t\t\t\t\tvalue: opt.display,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.uploadService.addMaps(maps);\n\t\t\t});\n\t}\n\n\thandleSubmit(): void {\n\t\tthis.formGroup.markAllAsTouched();\n\t\tif (!this.formGroup.valid) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.next.emit();\n\t}\n\n\t// Depracation warning ignored, it is from TS picking up the wrong signature\n\t// https://stackoverflow.com/questions/56571406/is-the-startwith-operator-in-rxjs-really-deprecated\n\n\tprivate initSelection(): void {\n\t\tconst intent$ = this.intent.valueChanges.pipe(\n\t\t\tstartWith(null),\n\t\t\tfilter(\n\t\t\t\tval =>\n\t\t\t\t\t!val ||\n\t\t\t\t\tval === CertLogicType.Initial ||\n\t\t\t\t\tval === CertLogicType.Recertification ||\n\t\t\t\t\tval === CertLogicType.Miscellaneous\n\t\t\t),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\n\t\tconst credential$ = this.credential.valueChanges.pipe(\n\t\t\tstartWith(null),\n\t\t\tfilter(val => typeof val !== 'string'),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\n\t\tconst features$ = this.features$;\n\n\t\tcombineLatest([features$, intent$])\n\t\t\t.pipe(untilDestroyed(this))\n\t\t\t.subscribe(([features, intent]) => {\n\t\t\t\tconst selected = this.uploadService.selectionSnapshot;\n\t\t\t\tthis.group.setValue(null);\n\t\t\t\tthis.showNoCertWarning = false;\n\t\t\t\tif (features.length > 0) {\n\t\t\t\t\tswitch (intent) {\n\t\t\t\t\t\tcase CertLogicType.Miscellaneous:\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.credential.setValidators([]);\n\t\t\t\t\t\t\t\tthis.credential.setValue(null);\n\t\t\t\t\t\t\t\tthis.credential.disable();\n\t\t\t\t\t\t\t\tthis.group.enable();\n\t\t\t\t\t\t\t}, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase CertLogicType.Initial:\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.credential.setValidators([Validators.required]);\n\t\t\t\t\t\t\t\tthis.credential.setValue(null);\n\t\t\t\t\t\t\t\tthis.credential.enable();\n\t\t\t\t\t\t\t\tthis.group.disable();\n\t\t\t\t\t\t\t}, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase CertLogicType.Recertification:\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.credential.setValidators([Validators.required]);\n\t\t\t\t\t\t\t\tthis.credential.setValue(null);\n\t\t\t\t\t\t\t\tthis.credential.enable();\n\t\t\t\t\t\t\t\tthis.group.disable();\n\t\t\t\t\t\t\t}, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.credential.setValidators([]);\n\t\t\t\t\t\t\t\tthis.credential.setValue(null);\n\t\t\t\t\t\t\t\tthis.credential.disable();\n\t\t\t\t\t\t\t\tthis.group.disable();\n\t\t\t\t\t\t\t}, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.uploadService.select({\n\t\t\t\t\t\t...selected,\n\t\t\t\t\t\tintent,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.intent.disable();\n\t\t\t\t\t\tthis.intent.setValidators([]);\n\t\t\t\t\t\tthis.credential.setValidators([]);\n\t\t\t\t\t\tthis.credential.setValue(null);\n\t\t\t\t\t\tthis.credential.disable();\n\t\t\t\t\t\tthis.group.enable();\n\t\t\t\t\t}, 1);\n\t\t\t\t}\n\t\t\t});\n\n\t\tcombineLatest([features$, credential$])\n\t\t\t.pipe(untilDestroyed(this))\n\t\t\t.subscribe(([features, credential]) => {\n\t\t\t\tif (features.length > 0) {\n\t\t\t\t\tconst selected = this.uploadService.selectionSnapshot;\n\n\t\t\t\t\tthis.group.setValue(null);\n\t\t\t\t\tif (!credential) {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.group.disable();\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.credential.setErrors(null);\n\t\t\t\t\t\tthis.credential.updateValueAndValidity();\n\t\t\t\t\t\tthis.group.enable();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.uploadService.select({\n\t\t\t\t\t\t...selected,\n\t\t\t\t\t\tcredential: credential ? credential : null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.group.valueChanges\n\t\t\t.pipe(\n\t\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\t\tstartWith(null),\n\t\t\t\tfilter(val => typeof val !== 'string'),\n\t\t\t\tdistinctUntilChanged()\n\t\t\t)\n\t\t\t.subscribe(group => {\n\t\t\t\tconst selected = this.uploadService.selectionSnapshot;\n\n\t\t\t\tthis.name.setValue(null);\n\t\t\t\tif (!group) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.name.disable();\n\t\t\t\t\t}, 2);\n\t\t\t\t} else {\n\t\t\t\t\tthis.name.enable();\n\t\t\t\t}\n\n\t\t\t\tthis.uploadService.select({\n\t\t\t\t\t...selected,\n\t\t\t\t\tgroup: group ? group : null,\n\t\t\t\t});\n\t\t\t});\n\n\t\tthis.name.valueChanges\n\t\t\t.pipe(\n\t\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\t\tstartWith(null),\n\t\t\t\tfilter(val => typeof val !== 'string'),\n\t\t\t\tdistinctUntilChanged()\n\t\t\t)\n\t\t\t.subscribe(name => {\n\t\t\t\tconst selected = this.uploadService.selectionSnapshot;\n\n\t\t\t\tthis.uploadService.select({\n\t\t\t\t\t...selected,\n\t\t\t\t\tname: name ? name : null,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tprivate initIntentOptions(): Observable {\n\t\tconst features$ = this.features$;\n\t\treturn features$.pipe(\n\t\t\tswitchMap(features =>\n\t\t\t\tof(\n\t\t\t\t\tINTENT_OPTIONS.filter(option => features.includes(option.feature)).map(\n\t\t\t\t\t\toption => option.option\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\tprivate initCredentialOptions(): Observable {\n\t\tconst features$ = this.features$;\n\t\tconst intent$ = this.selection$.pipe(map(selection => selection.intent));\n\n\t\treturn combineLatest([features$, intent$]).pipe(\n\t\t\tswitchMap(([features, intent]) => {\n\t\t\t\tif (features.length === 0 || !intent || intent === CertLogicType.Miscellaneous) {\n\t\t\t\t\treturn of([]);\n\t\t\t\t}\n\n\t\t\t\treturn this.fetchCCats({ logicType: intent }).pipe(\n\t\t\t\t\tmap(ccats => ccats.map(ccat => ({ display: ccat.name, value: ccat.id }))),\n\t\t\t\t\ttap(ccats => {\n\t\t\t\t\t\tif (!ccats.length) {\n\t\t\t\t\t\t\tthis.showNoCertWarning = true;\n\t\t\t\t\t\t\tthis.credential.setErrors({ noCerts: true });\n\t\t\t\t\t\t\tthis.credential.markAsTouched();\n\t\t\t\t\t\t\tthis.notifications.showFailure(\n\t\t\t\t\t\t\t\tthis.settings.portal === PortalType.CandidatePortal\n\t\t\t\t\t\t\t\t\t? this.locs.CPSelectionFormNoticeNoCredentials\n\t\t\t\t\t\t\t\t\t: this.locs.SPSelectionFormNoticeNoCredentials\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.credential.setErrors(null);\n\t\t\t\t\t\t\tthis.credential.updateValueAndValidity();\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t})\n\t\t);\n\t}\n\n\tprivate initGroupOptions(): Observable {\n\t\tconst features$ = this.features$;\n\t\tconst selection$ = this.selection$.pipe(\n\t\t\tfilter(\n\t\t\t\tselection =>\n\t\t\t\t\t!selection.intent ||\n\t\t\t\t\tselection.intent === CertLogicType.Miscellaneous ||\n\t\t\t\t\t!!selection.credential\n\t\t\t)\n\t\t);\n\n\t\treturn features$.pipe(\n\t\t\tswitchMap(features =>\n\t\t\t\tselection$.pipe(\n\t\t\t\t\tswitchMap(selection => {\n\t\t\t\t\t\treturn this.makeCReqRequest(selection).pipe(\n\t\t\t\t\t\t\tmap(creqs => {\n\t\t\t\t\t\t\t\treturn creqs\n\t\t\t\t\t\t\t\t\t.map(creq => creq.certRequirementGroup)\n\t\t\t\t\t\t\t\t\t.map(group => ({ value: group.id, display: group.name }))\n\t\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t\t(group, idx, self) =>\n\t\t\t\t\t\t\t\t\t\t\tself.map(grp => grp.display).indexOf(group.display) ===\n\t\t\t\t\t\t\t\t\t\t\tidx\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\tprivate initNameOptions(): Observable {\n\t\tconst features$ = this.features$;\n\t\tconst selection$ = this.selection$.pipe(\n\t\t\tfilter(\n\t\t\t\tselection =>\n\t\t\t\t\t!!selection.group &&\n\t\t\t\t\t(!selection.intent ||\n\t\t\t\t\t\tselection.intent === CertLogicType.Miscellaneous ||\n\t\t\t\t\t\t!!selection.credential)\n\t\t\t)\n\t\t);\n\n\t\treturn features$.pipe(\n\t\t\tswitchMap(features =>\n\t\t\t\tselection$.pipe(\n\t\t\t\t\tswitchMap(selection => {\n\t\t\t\t\t\treturn this.makeCReqRequest(selection).pipe(\n\t\t\t\t\t\t\tmap(creqs => {\n\t\t\t\t\t\t\t\treturn creqs\n\t\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t\tcreq => creq.certRequirementGroup.id === selection.group\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.map(creq => ({ value: creq.id, display: creq.name }));\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\tprivate makeCReqRequest(selection: Selection) {\n\t\tswitch (selection.intent) {\n\t\t\tcase CertLogicType.Miscellaneous:\n\t\t\t\treturn this.fetchCrCats({ creatable: true, logicType: selection.intent });\n\t\t\tcase CertLogicType.Initial:\n\t\t\tcase CertLogicType.Recertification:\n\t\t\t\treturn this.fetchCrCats({\n\t\t\t\t\tcreatable: true,\n\t\t\t\t\tlogicType: selection.intent,\n\t\t\t\t\tlogicCcatId: selection.credential,\n\t\t\t\t});\n\t\t\tdefault:\n\t\t\t\treturn this.fetchCrCats({ creatable: true, logicType: null });\n\t\t}\n\t}\n\n\tprivate fetchCrCats(\n\t\trequest: CertRequirementCatalogListRequest\n\t): Observable {\n\t\treturn this.auth.guard$.pipe(\n\t\t\tmap(guard => guard.reset().isWebUser().all),\n\t\t\tswitchMap(isWebUser =>\n\t\t\t\tthis.apollo\n\t\t\t\t\t.watchQuery<{ certRequirementCatalogList: CertRequirementCatalog[] }>({\n\t\t\t\t\t\tquery: ITEM_GROUP_QUERY,\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfetchPolicy: 'network-only',\n\t\t\t\t\t})\n\t\t\t\t\t.valueChanges.pipe(\n\t\t\t\t\t\tmap(results => results.data?.certRequirementCatalogList),\n\t\t\t\t\t\tmap(crcats =>\n\t\t\t\t\t\t\tcrcats.filter(crcat =>\n\t\t\t\t\t\t\t\tisWebUser\n\t\t\t\t\t\t\t\t\t? crcat?.canCurrentAccountCreate\n\t\t\t\t\t\t\t\t\t: crcat?.candidateCreateEnabled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\tprivate fetchCCats(request: CertCatalogListRequest): Observable {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ certCatalogList: CertCatalog[] }>({\n\t\t\t\tquery: CANDIDATE_CERTS_QUERY,\n\t\t\t\tvariables: {\n\t\t\t\t\trequest,\n\t\t\t\t},\n\t\t\t\tfetchPolicy: 'network-only',\n\t\t\t})\n\t\t\t.valueChanges.pipe(map(results => results.data?.certCatalogList));\n\t}\n}\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type SPSelectionFormLocs =\r\n\t| 'SPSelectionFormFieldLabelIntent'\r\n\t| 'SPSelectionFormFieldErrorIntentRequired'\r\n\t| 'SPSelectionFormFieldErrorIntentInvalid'\r\n\t| 'SPSelectionFormFieldLabelCredential'\r\n\t| 'SPSelectionFormFieldErrorNoCredentials'\r\n\t| 'SPSelectionFormFieldErrorCredentialRequired'\r\n\t| 'SPSelectionFormFieldErrorCredentialInvalid'\r\n\t| 'SPSelectionFormFieldLabelItemGroup'\r\n\t| 'SPSelectionFormFieldErrorItemGroupRequired'\r\n\t| 'SPSelectionFormFieldErrorItemGroupInvalid'\r\n\t| 'SPSelectionFormFieldLabelItemName'\r\n\t| 'SPSelectionFormFieldErrorItemNameRequired'\r\n\t| 'SPSelectionFormFieldErrorItemNameInvalid'\r\n\t| 'SPSelectionFormButtonStepOneNext'\r\n\t| 'SPSelectionFormNoticeNoCredentials';\r\n\r\nexport type CPSelectionFormLocs =\r\n\t| 'CPSelectionFormFieldLabelIntent'\r\n\t| 'CPSelectionFormFieldErrorIntentRequired'\r\n\t| 'CPSelectionFormFieldErrorIntentInvalid'\r\n\t| 'CPSelectionFormFieldLabelCredential'\r\n\t| 'CPSelectionFormFieldErrorNoCredentials'\r\n\t| 'CPSelectionFormFieldErrorCredentialRequired'\r\n\t| 'CPSelectionFormFieldErrorCredentialInvalid'\r\n\t| 'CPSelectionFormFieldLabelItemGroup'\r\n\t| 'CPSelectionFormFieldErrorItemGroupRequired'\r\n\t| 'CPSelectionFormFieldErrorItemGroupInvalid'\r\n\t| 'CPSelectionFormFieldLabelItemName'\r\n\t| 'CPSelectionFormFieldErrorItemNameRequired'\r\n\t| 'CPSelectionFormFieldErrorItemNameInvalid'\r\n\t| 'CPSelectionFormButtonStepOneNext'\r\n\t| 'CPSelectionFormNoticeNoCredentials';\r\n\r\nexport const spSelectionFormLocs: LocDefs = {\r\n\tSPSelectionFormFieldLabelIntent: {\r\n\t\tdefaultValue: 'Intent',\r\n\t\tdescription: 'Label for the intent field',\r\n\t\tdisplayPath: 'History|Selection Form|Intent',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.Intent',\r\n\t},\r\n\tSPSelectionFormFieldErrorIntentRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when intent is required',\r\n\t\tdisplayPath: 'History|Selection Form|Intent Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.IntentRequired',\r\n\t},\r\n\tSPSelectionFormFieldErrorIntentInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when intent is invalid',\r\n\t\tdisplayPath: 'History|Selection Form|Intent Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.IntentInvalid',\r\n\t},\r\n\tSPSelectionFormFieldLabelCredential: {\r\n\t\tdefaultValue: 'Credentials',\r\n\t\tdescription: 'Label for the credential field',\r\n\t\tdisplayPath: 'History|Selection Form|Credential',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.Credential',\r\n\t},\r\n\tSPSelectionFormFieldErrorNoCredentials: {\r\n\t\tdefaultValue:\r\n\t\t\t'No credentials matching the criteria were found. Please select a different intent.',\r\n\t\tdescription: 'Error message when no credentials are found',\r\n\t\tdisplayPath: 'History|Selection Form|No Credentials',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.NoCredentials',\r\n\t},\r\n\tSPSelectionFormFieldErrorCredentialRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when credential is required',\r\n\t\tdisplayPath: 'History|Selection Form|Credential Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.CredentialRequired',\r\n\t},\r\n\tSPSelectionFormFieldErrorCredentialInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when credential is invalid',\r\n\t\tdisplayPath: 'History|Selection Form|Credential Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.CredentialInvalid',\r\n\t},\r\n\tSPSelectionFormFieldLabelItemGroup: {\r\n\t\tdefaultValue: 'Item Group',\r\n\t\tdescription: 'Label for the item group field',\r\n\t\tdisplayPath: 'History|Selection Form|Item Group',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.ItemGroup',\r\n\t},\r\n\tSPSelectionFormFieldErrorItemGroupRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when item group is required',\r\n\t\tdisplayPath: 'History|Selection Form|Item Group Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ItemGroupRequired',\r\n\t},\r\n\tSPSelectionFormFieldErrorItemGroupInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when item group is invalid',\r\n\t\tdisplayPath: 'History|Selection Form|Item Group Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ItemGroupInvalid',\r\n\t},\r\n\tSPSelectionFormFieldLabelItemName: {\r\n\t\tdefaultValue: 'Item Name',\r\n\t\tdescription: 'Label for the item name field',\r\n\t\tdisplayPath: 'History|Selection Form|Item Name',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.ItemName',\r\n\t},\r\n\tSPSelectionFormFieldErrorItemNameRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when item name is required',\r\n\t\tdisplayPath: 'History|Selection Form|Item Name Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ItemNameRequired',\r\n\t},\r\n\tSPSelectionFormFieldErrorItemNameInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when item name is invalid',\r\n\t\tdisplayPath: 'History|Selection Form|Item Name Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ItemNameInvalid',\r\n\t},\r\n\tSPSelectionFormButtonStepOneNext: {\r\n\t\tdefaultValue: 'Next',\r\n\t\tdescription: 'Text for the next button',\r\n\t\tdisplayPath: 'History|Selection Form|Next Button',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Button.StepOneNext',\r\n\t},\r\n\tSPSelectionFormNoticeNoCredentials: {\r\n\t\tdefaultValue:\r\n\t\t\t'No credentials matching the criteria were found. Please select a different intent.',\r\n\t\tdescription: 'Notification message when no credentials matching the criteria are found',\r\n\t\tdisplayPath: 'History|Selection Form|No Credentials',\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const cpSelectionFormLocs: LocDefs = {\r\n\tCPSelectionFormFieldLabelIntent: {\r\n\t\tdefaultValue: 'Intent',\r\n\t\tdescription: 'Label for the intent field',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Intent',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.Intent',\r\n\t},\r\n\tCPSelectionFormFieldErrorIntentRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when intent is required',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Intent Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.IntentRequired',\r\n\t},\r\n\tCPSelectionFormFieldErrorIntentInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when intent is invalid',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Intent Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.IntentInvalid',\r\n\t},\r\n\tCPSelectionFormFieldLabelCredential: {\r\n\t\tdefaultValue: 'Credentials',\r\n\t\tdescription: 'Label for the credential field',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Credential',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.Credential',\r\n\t},\r\n\tCPSelectionFormFieldErrorNoCredentials: {\r\n\t\tdefaultValue:\r\n\t\t\t'No credentials matching the criteria were found. Please select a different intent.',\r\n\t\tdescription: 'Error message when no credentials are found',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|No Credentials',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.NoCredentials',\r\n\t},\r\n\tCPSelectionFormFieldErrorCredentialRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when credential is required',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Credential Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.CredentialRequired',\r\n\t},\r\n\tCPSelectionFormFieldErrorCredentialInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when credential is invalid',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Credential Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.CredentialInvalid',\r\n\t},\r\n\tCPSelectionFormFieldLabelItemGroup: {\r\n\t\tdefaultValue: 'Item Group',\r\n\t\tdescription: 'Label for the item group field',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Item Group',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.ItemGroup',\r\n\t},\r\n\tCPSelectionFormFieldErrorItemGroupRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when item group is required',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Item Group Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ItemGroupRequired',\r\n\t},\r\n\tCPSelectionFormFieldErrorItemGroupInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when item group is invalid',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Item Group Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ItemGroupInvalid',\r\n\t},\r\n\tCPSelectionFormFieldLabelItemName: {\r\n\t\tdefaultValue: 'Item Name',\r\n\t\tdescription: 'Label for the item name field',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Item Name',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.ItemName',\r\n\t},\r\n\tCPSelectionFormFieldErrorItemNameRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when item name is required',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Item Name Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ItemNameRequired',\r\n\t},\r\n\tCPSelectionFormFieldErrorItemNameInvalid: {\r\n\t\tdefaultValue: 'You must choose an option from the list',\r\n\t\tdescription: 'Error message when item name is invalid',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Item Name Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ItemNameInvalid',\r\n\t},\r\n\tCPSelectionFormButtonStepOneNext: {\r\n\t\tdefaultValue: 'Next',\r\n\t\tdescription: 'Text for the next button',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|Next Button',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Button.StepOneNext',\r\n\t},\r\n\tCPSelectionFormNoticeNoCredentials: {\r\n\t\tdefaultValue:\r\n\t\t\t'No credentials matching the criteria were found. Please select a different intent.',\r\n\t\tdescription: 'Notification message when no credentials matching the criteria are found',\r\n\t\tdisplayPath: 'Candidate|Program History|Selection Form|No Credentials',\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.NoCredentials',\r\n\t},\r\n};\r\n\r\nexport type SPSelectionFormLocKeys = LocMap;\r\nexport const spSelectionFormLocKeys: SPSelectionFormLocKeys =\r\n\tMapLocKeys(spSelectionFormLocs);\r\n\r\nexport type CPSelectionFormLocKeys = LocMap;\r\nexport const cpSelectionFormLocKeys: CPSelectionFormLocKeys =\r\n\tMapLocKeys(cpSelectionFormLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\n\r\n\r\nexport type SPUploadConfirmationLocs =\r\n 'SPUploadConfirmationFieldLabelActiveDate' |\r\n 'SPUploadConfirmationFieldLabelExpireDate' |\r\n 'SPUploadConfirmationFieldLabelProvider' |\r\n 'SPUploadConfirmationFieldLabelDocLanguage' |\r\n 'SPUploadConfirmationFieldLabelDocumentation' |\r\n 'SPUploadConfirmationFieldLabelDocNotes' |\r\n 'SPUploadConfirmationTextNever' |\r\n 'SPUploadConfirmationTextPoints' |\r\n 'SPUploadConfirmationButtonStepThreeStartOver' |\r\n 'SPUploadConfirmationFieldLabelFactorNotFound';\r\n\r\n export type CPUploadConfirmationLocs =\r\n 'CPUploadConfirmationFieldLabelActiveDate' |\r\n 'CPUploadConfirmationFieldLabelExpireDate' |\r\n 'CPUploadConfirmationFieldLabelProvider' |\r\n 'CPUploadConfirmationFieldLabelDocLanguage' |\r\n 'CPUploadConfirmationFieldLabelDocumentation' |\r\n 'CPUploadConfirmationFieldLabelDocNotes' |\r\n 'CPUploadConfirmationTextNever' |\r\n 'CPUploadConfirmationTextPoints' |\r\n 'CPUploadConfirmationButtonStepThreeStartOver' |\r\n 'CPUploadConfirmationFieldLabelFactorNotFound';\r\n\r\nexport const spUploadConfirmationLocs: LocDefs = {\r\n SPUploadConfirmationFieldLabelActiveDate: {\r\n defaultValue: 'Active Date',\r\n description: 'Label for the active date field',\r\n displayPath: 'History|Upload Confirmation|Active Date',\r\n displayType: 'Label',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.ActiveDate',\r\n },\r\n SPUploadConfirmationFieldLabelExpireDate: {\r\n defaultValue: 'Expire Date',\r\n description: 'Label for the expire date field',\r\n displayPath: 'History|Upload Confirmation|Expire Date',\r\n displayType: 'Label',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.ExpireDate',\r\n },\r\n SPUploadConfirmationFieldLabelProvider: {\r\n defaultValue: 'Provider',\r\n description: 'Label for the provider field',\r\n displayPath: 'History|Upload Confirmation|Provider',\r\n displayType: 'Label',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.Provider',\r\n },\r\n SPUploadConfirmationFieldLabelDocLanguage: {\r\n defaultValue: 'Documentation Language',\r\n description: 'Label for the documentation language field',\r\n displayPath: 'History|Upload Confirmation|Documentation Language',\r\n displayType: 'Label',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.DocLanguage',\r\n },\r\n SPUploadConfirmationFieldLabelDocumentation: {\r\n defaultValue: 'Documentation',\r\n description: 'Label for the documentation field',\r\n displayPath: 'History|Upload Confirmation|Documentation',\r\n displayType: 'Label',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.Documentation',\r\n },\r\n SPUploadConfirmationFieldLabelDocNotes: {\r\n defaultValue: 'Notes',\r\n description: 'Label for the documentation notes field',\r\n displayPath: 'History|Upload Confirmation|Notes',\r\n displayType: 'Label',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.DocNotes',\r\n },\r\n SPUploadConfirmationTextNever: {\r\n defaultValue: 'Never',\r\n description: 'Text displayed when there is no expire date',\r\n displayPath: 'History|Upload Confirmation|Never',\r\n displayType: 'Content',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Text.Never',\r\n },\r\n SPUploadConfirmationTextPoints: {\r\n defaultValue: 'Points',\r\n description: 'Label for the points field',\r\n displayPath: 'History|Upload Confirmation|Points',\r\n displayType: 'Label',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Text.Points',\r\n },\r\n SPUploadConfirmationButtonStepThreeStartOver: {\r\n defaultValue: 'Upload Another Item',\r\n description: 'Text for the button to start over',\r\n displayPath: 'History|Upload Confirmation|Upload Another Item',\r\n displayType: 'Button',\r\n feature: HubFeature.OtherRequirementUpload,\r\n portal: 'SP',\r\n legacyName: 'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Button.StepThreeStartOver',\r\n },\r\n SPUploadConfirmationFieldLabelFactorNotFound: {\r\n defaultValue: 'Points',\r\n description: 'Label for the points field when factor is not found',\r\n displayPath: 'History|Upload Confirmation|Factor Not Found',\r\n displayType: 'Label',\r\n feature: HubFeature.CredentialContinuingEducation,\r\n portal: 'SP',\r\n legacyName: 'Credential.ContinuingEducation/Candidate.ProgramHistory.CEActivity.Details.FieldLabel.FactorNotFound',\r\n },\r\n};\r\n\r\n\r\n\r\n\r\nexport const cpUploadConfirmationLocs: LocDefs = {\r\n\tCPUploadConfirmationFieldLabelActiveDate: {\r\n\t defaultValue: 'Active Date',\r\n\t description: 'Label for the active date field',\r\n\t displayPath: 'History|Upload Items|Label|Active Date',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.ActiveDate',\r\n\t},\r\n\tCPUploadConfirmationFieldLabelExpireDate: {\r\n\t defaultValue: 'Expire Date',\r\n\t description: 'Label for the expire date field',\r\n\t displayPath: 'History|Upload Items|Label|Expire Date',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.ExpireDate',\r\n\t},\r\n\tCPUploadConfirmationFieldLabelProvider: {\r\n\t defaultValue: 'Provider',\r\n\t description: 'Label for the provider field',\r\n\t displayPath: 'History|Upload Items|Label|Provider',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.Provider',\r\n\t},\r\n\tCPUploadConfirmationFieldLabelDocLanguage: {\r\n\t defaultValue: 'Documentation Language',\r\n\t description: 'Label for the documentation language field',\r\n\t displayPath: 'History|Upload Items|Label|Documentation Language',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.DocLanguage',\r\n\t},\r\n\tCPUploadConfirmationFieldLabelDocumentation: {\r\n\t defaultValue: 'Documentation',\r\n\t description: 'Label for the documentation field',\r\n\t displayPath: 'History|Upload Items|Label|Documentation',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.Documentation',\r\n\t},\r\n\tCPUploadConfirmationFieldLabelDocNotes: {\r\n\t defaultValue: 'Notes',\r\n\t description: 'Label for the documentation notes field',\r\n\t displayPath: 'History|Upload Items|Label|Notes',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldLabel.DocNotes',\r\n\t},\r\n\tCPUploadConfirmationTextNever: {\r\n\t defaultValue: 'Never',\r\n\t description: 'Text displayed when there is no expire date',\r\n\t displayPath: 'History|Upload Items|Content|Never',\r\n\t displayType: 'Content',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Text.Never',\r\n\t},\r\n\tCPUploadConfirmationTextPoints: {\r\n\t defaultValue: 'Points',\r\n\t description: 'Label for the points field',\r\n\t displayPath: 'History|Upload Items|Text|Points',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Text.Points',\r\n\t},\r\n\tCPUploadConfirmationButtonStepThreeStartOver: {\r\n\t defaultValue: 'Upload Another Item',\r\n\t description: 'Text for the button to start over',\r\n\t displayPath: 'History|Upload Items|Button|Upload Another Item',\r\n\t displayType: 'Button',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t legacyName: 'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Button.StepThreeStartOver',\r\n\t},\r\n\tCPUploadConfirmationFieldLabelFactorNotFound: {\r\n\t defaultValue: 'Points',\r\n\t description: 'Label for the points field when factor is not found',\r\n\t displayPath: 'History|Upload Items|Label|Factor Not Found',\r\n\t displayType: 'Label',\r\n\t feature: HubFeature.OtherRequirementUploadCandidateAccess,\r\n\t portal: 'CP',\r\n\t},\r\n };\r\n\r\nexport type SPUploadConfirmationLocKeys = LocMap;\r\nexport const spUploadConfirmationLocKeys: SPUploadConfirmationLocKeys =\r\n MapLocKeys(spUploadConfirmationLocs);\r\n\r\nexport type CPUploadConfirmationLocKeys = LocMap;\r\nexport const cpUploadConfirmationLocKeys: CPUploadConfirmationLocKeys =\r\n\tMapLocKeys(cpUploadConfirmationLocs);\r\n\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type SPUploadFormLocs =\r\n\t| 'SPUploadFormContentInstructions'\r\n\t| 'SPUploadFormFieldErrorActiveDateRequired'\r\n\t| 'SPUploadFormFieldErrorActiveDateInvalid'\r\n\t| 'SPUploadFormFieldLabelOverrideExpireDate'\r\n\t| 'SPUploadFormFieldErrorExpireDateInvalid'\r\n\t| 'SPUploadFormFieldErrorProviderRequired'\r\n\t| 'SPUploadFormFieldErrorDocumentationSizeHint'\r\n\t| 'SPUploadFormFieldErrorDocumentationRequired'\r\n\t| 'SPUploadFormFieldErrorDocumentationSize'\r\n\t| 'SPUploadFormFieldErrorDocumentationLimit'\r\n\t| 'SPUploadFormFieldErrorPointsRequired'\r\n\t| 'SPUploadFormFieldErrorPointsNumeric'\r\n\t| 'SPUploadFormFieldLabelComments'\r\n\t| 'SPUploadFormFieldHintComments'\r\n\t| 'SPUploadFormButtonStepTwoBack'\r\n\t| 'SPUploadFormButtonStepTwoNext';\r\n\r\nexport type CPUploadFormLocs =\r\n\t| 'CPUploadFormContentInstructions'\r\n\t| 'CPUploadFormFieldErrorActiveDateRequired'\r\n\t| 'CPUploadFormFieldErrorActiveDateInvalid'\r\n\t| 'CPUploadFormFieldErrorExpireDateInvalid'\r\n\t| 'CPUploadFormFieldErrorProviderRequired'\r\n\t| 'CPUploadFormFieldErrorDocumentationSizeHint'\r\n\t| 'CPUploadFormFieldErrorDocumentationRequired'\r\n\t| 'CPUploadFormFieldErrorDocumentationSize'\r\n\t| 'CPUploadFormFieldErrorDocumentationLimit'\r\n\t| 'CPUploadFormFieldErrorPointsRequired'\r\n\t| 'CPUploadFormFieldErrorPointsNumeric'\r\n\t| 'CPUploadFormButtonStepTwoBack'\r\n\t| 'CPUploadFormButtonStepTwoNext';\r\n\r\nexport const spUploadFormLocs: LocDefs = {\r\n\tSPUploadFormContentInstructions: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Instructions for uploading an item',\r\n\t\tdisplayPath: 'History|Upload Items|Instructions',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Content.Instructions',\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\r\n\tSPUploadFormFieldErrorActiveDateRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when active date is required',\r\n\t\tdisplayPath: 'History|Upload Items|Active Date Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ActiveDateRequired',\r\n\t},\r\n\tSPUploadFormFieldErrorActiveDateInvalid: {\r\n\t\tdefaultValue: 'You must use a valid date',\r\n\t\tdescription: 'Error message when active date is invalid',\r\n\t\tdisplayPath: 'History|Upload Items|Active Date Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ActiveDateInvalid',\r\n\t},\r\n\tSPUploadFormFieldLabelOverrideExpireDate: {\r\n\t\tdefaultValue: 'Override Expiration',\r\n\t\tdescription: 'Label for the override expire date checkbox',\r\n\t\tdisplayPath: 'History|Upload Items|Override Expire Date',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.OverrideExpireDate',\r\n\t},\r\n\tSPUploadFormFieldErrorExpireDateInvalid: {\r\n\t\tdefaultValue: 'You must use a valid date',\r\n\t\tdescription: 'Error message when expire date is invalid',\r\n\t\tdisplayPath: 'History|Upload Items|Expire Date Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ExpireDateInvalid',\r\n\t},\r\n\tSPUploadFormFieldErrorProviderRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when provider is required',\r\n\t\tdisplayPath: 'History|Upload Items|Provider Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.ProviderRequired',\r\n\t},\r\n\tSPUploadFormFieldErrorDocumentationSizeHint: {\r\n\t\tdefaultValue: 'Files must not be larger than 20Mb',\r\n\t\tdescription: 'Hint for documentation file size limit',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Size Hint',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.DocumentationSizeHint',\r\n\t},\r\n\tSPUploadFormFieldErrorDocumentationRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when documentation is required',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.DocumentationRequired',\r\n\t},\r\n\tSPUploadFormFieldErrorDocumentationSize: {\r\n\t\tdefaultValue: 'Files must not be larger than 2Mb',\r\n\t\tdescription: 'Error message when documentation file size is too large',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Size',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.DocumentationSize',\r\n\t},\r\n\tSPUploadFormFieldErrorDocumentationLimit: {\r\n\t\tdefaultValue: 'Maximum of 5 files',\r\n\t\tdescription: 'Error message when documentation file limit is exceeded',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Limit',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldError.DocumentationLimit',\r\n\t},\r\n\tSPUploadFormFieldErrorPointsRequired: {\r\n\t\tdefaultValue: 'are required',\r\n\t\tdescription: 'Error message when points are required',\r\n\t\tdisplayPath: 'History|Upload Items|Points Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'Credential.ContinuingEducation/Candidate.ProgramHistory.UploadItems.FieldError.PointsRequired',\r\n\t},\r\n\tSPUploadFormFieldErrorPointsNumeric: {\r\n\t\tdefaultValue:\r\n\t\t\t'must be a positive whole number. The value entered will be rounded to the nearest whole number.',\r\n\t\tdescription: 'Error message when points are not numeric',\r\n\t\tdisplayPath: 'History|Upload Items|Points Numeric',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'Credential.ContinuingEducation/Candidate.ProgramHistory.UploadItems.FieldError.PointsNumeric',\r\n\t},\r\n\tSPUploadFormFieldLabelComments: {\r\n\t\tdefaultValue: 'Comments for Candidate History',\r\n\t\tdescription: 'Label for the comments field',\r\n\t\tdisplayPath: 'History|Upload Items|Comments',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldLabel.Comments',\r\n\t},\r\n\tSPUploadFormFieldHintComments: {\r\n\t\tdefaultValue: 'Not visible to candidates',\r\n\t\tdescription: 'Hint for the comments field',\r\n\t\tdisplayPath: 'History|Upload Items|Comments Hint',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.FieldHint.Comments',\r\n\t},\r\n\tSPUploadFormButtonStepTwoBack: {\r\n\t\tdefaultValue: 'Back',\r\n\t\tdescription: 'Text for the back button',\r\n\t\tdisplayPath: 'History|Upload Items|Back Button',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Button.StepTwoBack',\r\n\t},\r\n\tSPUploadFormButtonStepTwoNext: {\r\n\t\tdefaultValue: 'Submit',\r\n\t\tdescription: 'Text for the submit button',\r\n\t\tdisplayPath: 'History|Upload Items|Submit Button',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'SP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload/Candidates.ProgramHistory.UploadItems.Button.StepTwoNext',\r\n\t},\r\n};\r\n\r\nexport const cpUploadFormLocs: LocDefs = {\r\n\tCPUploadFormContentInstructions: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Instructions for uploading an item',\r\n\t\tdisplayPath: 'History|Upload Items|Instructions',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Content.Instructions',\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\r\n\tCPUploadFormFieldErrorActiveDateRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when active date is required',\r\n\t\tdisplayPath: 'History|Upload Items|Active Date Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ActiveDateRequired',\r\n\t},\r\n\tCPUploadFormFieldErrorActiveDateInvalid: {\r\n\t\tdefaultValue: 'You must use a valid date',\r\n\t\tdescription: 'Error message when active date is invalid',\r\n\t\tdisplayPath: 'History|Upload Items|Active Date Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ActiveDateInvalid',\r\n\t},\r\n\tCPUploadFormFieldErrorExpireDateInvalid: {\r\n\t\tdefaultValue: 'You must use a valid date',\r\n\t\tdescription: 'Error message when expire date is invalid',\r\n\t\tdisplayPath: 'History|Upload Items|Expire Date Invalid',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ExpireDateInvalid',\r\n\t},\r\n\tCPUploadFormFieldErrorProviderRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when provider is required',\r\n\t\tdisplayPath: 'History|Upload Items|Provider Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.ProviderRequired',\r\n\t},\r\n\tCPUploadFormFieldErrorDocumentationSizeHint: {\r\n\t\tdefaultValue: 'Files must not be larger than 20Mb',\r\n\t\tdescription: 'Hint for documentation file size limit',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Size Hint',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.DocumentationSizeHint',\r\n\t},\r\n\tCPUploadFormFieldErrorDocumentationRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error message when documentation is required',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.DocumentationRequired',\r\n\t},\r\n\tCPUploadFormFieldErrorDocumentationSize: {\r\n\t\tdefaultValue: 'Files must not be larger than 2Mb',\r\n\t\tdescription: 'Error message when documentation file size is too large',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Size',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.DocumentationSize',\r\n\t},\r\n\tCPUploadFormFieldErrorDocumentationLimit: {\r\n\t\tdefaultValue: 'Maximum of 5 files',\r\n\t\tdescription: 'Error message when documentation file limit is exceeded',\r\n\t\tdisplayPath: 'History|Upload Items|Documentation Limit',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.FieldError.DocumentationLimit',\r\n\t},\r\n\tCPUploadFormFieldErrorPointsRequired: {\r\n\t\tdefaultValue: 'are required',\r\n\t\tdescription: 'Error message when points are required',\r\n\t\tdisplayPath: 'History|Upload Items|Points Required',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'Credential.ContinuingEducation/Candidate.ProgramHistory.UploadItems.FieldError.PointsRequired',\r\n\t},\r\n\tCPUploadFormFieldErrorPointsNumeric: {\r\n\t\tdefaultValue:\r\n\t\t\t'must be a positive whole number. The value entered will be rounded to the nearest whole number.',\r\n\t\tdescription: 'Error message when points are not numeric',\r\n\t\tdisplayPath: 'History|Upload Items|Points Numeric',\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'Credential.ContinuingEducation/Candidate.ProgramHistory.UploadItems.FieldError.PointsNumeric',\r\n\t},\r\n\tCPUploadFormButtonStepTwoBack: {\r\n\t\tdefaultValue: 'Back',\r\n\t\tdescription: 'Text for the back button',\r\n\t\tdisplayPath: 'History|Upload Items|Back Button',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Button.StepTwoBack',\r\n\t},\r\n\tCPUploadFormButtonStepTwoNext: {\r\n\t\tdefaultValue: 'Submit',\r\n\t\tdescription: 'Text for the submit button',\r\n\t\tdisplayPath: 'History|Upload Items|Submit Button',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.OtherRequirementUpload,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.Upload.CandidateAccess/History.UploadItems.Button.StepTwoNext',\r\n\t},\r\n};\r\n\r\nexport type CPUploadFormLocKeys = LocMap;\r\nexport const cpUploadFormLocKeys: CPUploadFormLocKeys =\r\n\tMapLocKeys(cpUploadFormLocs);\r\n\r\nexport type SPUploadFormLocKeys = LocMap;\r\nexport const spUploadFormLocKeys: SPUploadFormLocKeys =\r\n\tMapLocKeys(spUploadFormLocs);\r\n","import { Component } from '@angular/core';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\n\n@Component({\n selector: 'cm-dash',\n templateUrl: './cm-dash.component.html',\n styleUrls: ['./cm-dash.component.scss'],\n standalone: false\n})\nexport class CmDashComponent {\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n}\n","\n\n","
\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t{{ file.name }}\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSelect File\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSelect Files\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\n\t\n
\n","import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n\tControlContainer,\n\tControlValueAccessor,\n\tFormControl,\n\tFormGroupDirective,\n\tNG_VALUE_ACCESSOR,\n\tNgForm,\n\tUntypedFormControl,\n\tUntypedFormGroup,\n} from '@angular/forms';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\n// https://stackoverflow.com/questions/45659742/angular4-no-value-accessor-for-form-control/45659791\n\n// Because we are using NG_VALUE_ACCESSOR with Material chip list and Material chips are\n// difficult to work with, we have to add a custom error state matcher to actually display the\n// errors. Currently, you have to add a form control for the error state matcher to work, but we\n// don't want to tie the control to anything because it would interfere with our NG_VALUE_ACCESSOR.\nclass CustomErrorStateMatcher implements ErrorStateMatcher {\n\tconstructor(private readonly formControlName: string) {}\n\n\tisErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n\t\tconst selectedControl = form.form.controls[this.formControlName];\n\t\treturn (\n\t\t\t(selectedControl.dirty || selectedControl.touched) &&\n\t\t\tObject.values(selectedControl.errors || {}).some(error => error)\n\t\t);\n\t}\n}\n\n@Component({\n selector: 'cm-file-upload',\n templateUrl: './cm-file-upload.component.html',\n styleUrls: ['./cm-file-upload.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CmFileUploadComponent),\n multi: true,\n },\n ],\n standalone: false\n})\nexport class CmFileUploadComponent implements ControlValueAccessor, OnInit {\n\t@ViewChild('fileInput', { read: ElementRef }) fileInput: ElementRef;\n\t@Input() formControlName: string;\n\t@Input() acceptedFileTypes: string = '*';\n\t@Input('isDisabled') _isDisabled: boolean = false;\n\t@Input() multiple: boolean = false;\n\t_value: File[] = [];\n\treadonly locFeature: PortalCoreFeature;\n\tcustomErrorStateMatcher: ErrorStateMatcher;\n\tformControl = new FormControl([]);\n\n\tformGroup: UntypedFormGroup;\n\tonChange = (_: File[]) => {};\n\tonTouched = () => {};\n\n\tget value() {\n\t\treturn this._value;\n\t}\n\n\tset value(file: File[]) {\n\t\tthis._value = file;\n\t\tthis.onChange(file);\n\t\tthis.onTouched();\n\t}\n\n\tget isDisabled(): boolean {\n\t\treturn this._isDisabled;\n\t}\n\n\tset isDisabled(isDisabled: boolean) {\n\t\tthis._isDisabled = isDisabled;\n\t}\n\n\tget control(): UntypedFormControl {\n\t\treturn this.formGroup.get(this.formControlName) as UntypedFormControl;\n\t}\n\n\tget required(): boolean {\n\t\tif (!this.formGroup || !this.control) {\n\t\t\treturn false;\n\t\t}\n\t\tconst { validator } = this.control;\n\t\tif (validator) {\n\t\t\tconst validation = validator(new UntypedFormControl());\n\t\t\treturn validation !== null && validation.required === true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tconstructor(private controlContainer: ControlContainer, private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\tngOnInit(): void {\n\t\tthis.formGroup = this.controlContainer.control as UntypedFormGroup;\n\t\tthis.customErrorStateMatcher = new CustomErrorStateMatcher(this.formControlName);\n\t}\n\n\tattachFile(event: any): void {\n\t\tconst files = (event.target as HTMLInputElement).files;\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tif (this.multiple && this.value) {\n\t\t\t\tthis.writeValue([...this.value, files.item(i)]);\n\t\t\t} else {\n\t\t\t\tthis.writeValue([files.item(i)]);\n\t\t\t}\n\t\t}\n\t}\n\n\tremove(index: number): void {\n\t\tthis.writeValue(this.value.filter((file, i) => i !== index));\n\t}\n\n\twriteValue(value: File[]): void {\n\t\tthis.value = value;\n\t\tif (!(value || []).length && this.fileInput) {\n\t\t\tconst inputEl: HTMLInputElement = this.fileInput.nativeElement;\n\t\t\tinputEl.value = '';\n\t\t}\n\t}\n\n\tregisterOnChange(fn): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.isDisabled = isDisabled;\n\t}\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'cm-key-val-list',\n templateUrl: './key-val-list.component.html',\n styleUrls: ['./key-val-list.component.scss'],\n standalone: false\n})\nexport class CmKeyValListComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit() {}\n}\n","\n
\n\t\n
\n","
\n\t\n\t{{ alert }}\n\t\n
\n
\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\t\t\n\t\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[cm-key-val], cm-key-val',\n templateUrl: './key-val.component.html',\n styleUrls: ['./key-val.component.scss'],\n standalone: false\n})\nexport class CmKeyValComponent implements OnInit {\n\t@Input() boolean: boolean;\n\t@Input() alert: string;\n\t@Input() type: 'info' | 'warn' | 'error' | 'danger' | 'success' = 'info';\n\t@Input() error: boolean = false;\n\t@Input() downloadUrl: string;\n\t@Input() downloadTargetWindow: '_blank' | '_self' | '_parent' | '_top' = '_self';\n\tisBool: boolean = false;\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\tngOnInit() {\n\t\tthis.isBool = this.boolean === false || this.boolean === true;\n\t}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'cm-loader',\n templateUrl: './cm-loader.component.html',\n styleUrls: ['./cm-loader.component.scss'],\n standalone: false\n})\nexport class CmLoaderComponent implements OnInit {\n\t@Input() loading$: Observable;\n\n\tconstructor() {}\n\n\tngOnInit() {}\n}\n","
\n\t\n\t\t\n\t\t\n\t\n
\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'cm-loading-dialog',\n templateUrl: './cm-loading-dialog.component.html',\n styleUrls: ['./cm-loading-dialog.component.scss'],\n standalone: false\n})\nexport class CmLoadingDialogComponent {\n\tconstructor(\n\t\tpublic dialogRef: MatDialogRef,\n\t\t@Inject(MAT_DIALOG_DATA) public data: { key: string; defaultValue: string }\n\t) {}\n\n\tget defaultValue(): string {\n\t\treturn (this.data || {}).defaultValue;\n\t}\n\n\tget key(): string {\n\t\treturn (this.data || {}).key;\n\t}\n}\n","
\n\t
\n\t\t\n\t\t\n\t
\n
\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\n\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'cm-loading-icon',\n templateUrl: './cm-loading-icon.component.html',\n styleUrls: ['./cm-loading-icon.component.scss'],\n standalone: false\n})\nexport class CmLoadingIconComponent implements OnInit {\n\t@Input() size = 45;\n\tcenter: number;\n\tradius = 8;\n\tstroke = 2;\n\thasInnerCirc = true;\n\touterCirc = '6;22';\n\tinnerCirc = '6;1;2;3;4;5;6';\n\n\tconstructor() {}\n\n\tngOnInit() {\n\t\tthis.center = this.size / 2;\n\t\tif (this.size < 42) {\n\t\t\tthis.stroke = 1;\n\t\t\tthis.outerCirc = `1;${this.center - 2}`;\n\t\t\tthis.innerCirc = (this.center / 2).toString();\n\t\t\tfor (let i = 0; i < this.center / 2; i++) {\n\t\t\t\tthis.innerCirc += ';' + i.toString();\n\t\t\t}\n\t\t}\n\t\tif (this.size < 18) this.hasInnerCirc = false;\n\t}\n}\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type SpLocalizeModalLocs = 'SPSystemLocalizeModalChangesSaved';\r\nexport type CpLocalizeModalLocs = 'CPSystemLocalizeModalChangesSaved';\r\n\r\nexport const spLocalizeModalLocs: LocDefs = {\r\n\tSPSystemLocalizeModalChangesSaved: {\r\n\t\tdefaultValue: 'Changes Saved',\r\n\t\tdisplayPath: 'System|Localize Modal|Changes Saved',\r\n\t\tdescription: 'Notification displayed when changes are saved.',\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tportal: 'SP' as LocPortal,\r\n\t\tshared: false,\r\n\t\thtmlAllowed: false,\r\n\t},\r\n};\r\n\r\nexport const cpLocalizeModalLocs: LocDefs = {\r\n\tCPSystemLocalizeModalChangesSaved: {\r\n\t\tdefaultValue: 'Changes Saved',\r\n\t\tdisplayPath: 'System|Localize Modal|Changes Saved',\r\n\t\tdescription: 'Notification displayed when changes are saved.',\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tshared: false,\r\n\t\thtmlAllowed: false,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys({\r\n\t...spLocalizeModalLocs,\r\n\t...cpLocalizeModalLocs,\r\n});\r\nexport type LocalizeModalLocType = LocMap;\r\n","
\n\t
\n\t\t\n\t\t\n\t\t\n\t
\n\t
\n\t\t\n\t\t\t\n\t\t\t\t{{\n\t\t\t\t\topt.display }}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ opt.display }}\n\t\t\t\t\n\t\t\t\n\t\t\n\t
\n\n\t\n\t\t
\n\t\t\t\n\t\t\t\tNo items to display\n\t\t\t\n\t\t
\n\t
\n
\n","import { ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { CMOption } from '../../models/cm-option.interface';\n\ninterface CmMultiselectOption {\n\tdisplay: string;\n\tvalue: string | number;\n\tselected: boolean;\n}\n\n@UntilDestroy()\n@Component({\n selector: 'cm-multiselect',\n templateUrl: './cm-multiselect.component.html',\n styleUrls: ['./cm-multiselect.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => CmMultiselectComponent) }],\n standalone: false\n})\nexport class CmMultiselectComponent implements ControlValueAccessor, OnChanges {\n\t@Input() options: CMOption[] = [];\n\t@Input() searchable: boolean = true;\n\t@Input() localizationPrefix: string = 'Core/System.SelectionList';\n\t@Input() viewOnly: boolean = false;\n\tsearch: UntypedFormControl;\n\n\tfilteredOptions: CmMultiselectOption[] = [];\n\tinitialized: boolean = false;\n\ttouched = false;\n\tdisabled = false;\n\n\tprivate selected: (string | number)[] = [];\n\tprivate searchValue: string = '';\n\n\tconstructor(private readonly cd: ChangeDetectorRef) {\n\t\tthis.search = new UntypedFormControl('');\n\n\t\tthis.search.valueChanges.pipe(untilDestroyed(this)).subscribe(value => {\n\t\t\tthis.searchValue = value;\n\t\t\tthis.updateDisplay();\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes.options && !changes.options.firstChange) {\n\t\t\tthis.initialized = true;\n\t\t\tthis.updateDisplay();\n\t\t}\n\t}\n\n\tonChange = (selected: (string | number)[]): any => {};\n\tonTouched = () => {};\n\n\tregisterOnChange(onChange: any): void {\n\t\tthis.onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouched: any): void {\n\t\tthis.onTouched = onTouched;\n\t}\n\n\twriteValue(value: (string | number)[]): void {\n\t\tthis.selected = [...value];\n\t\tthis.updateDisplay();\n\t}\n\n\tonSelect(value: string | number): void {\n\t\tif (this.selected.includes(value)) {\n\t\t\tthis.selected = this.selected.filter(opt => opt !== value);\n\t\t} else {\n\t\t\tthis.selected = [...this.selected, value];\n\t\t}\n\t\tthis.updateDisplay();\n\t}\n\n\tonSelectAll() {\n\t\tthis.onToggleSelection('select');\n\t}\n\n\tonUnselectAll() {\n\t\tthis.onToggleSelection('unselect');\n\t}\n\n\tmarkAsTouched(): void {\n\t\tif (!this.touched) {\n\t\t\tthis.onTouched();\n\t\t\tthis.touched = true;\n\t\t}\n\t}\n\n\tsetDisabledState(disabled: boolean): void {\n\t\tthis.disabled = disabled;\n\t}\n\n\tprivate onToggleSelection(state: 'unselect' | 'select'): void {\n\t\tconst visibleOptions = this.filteredOptions.map(opt => opt.value);\n\t\tconst selectedInvisibleOptions = this.selected.filter(option => !visibleOptions.includes(option));\n\t\tif (state === 'select') {\n\t\t\tthis.selected = [...visibleOptions, ...selectedInvisibleOptions];\n\t\t} else {\n\t\t\tthis.selected = [...selectedInvisibleOptions];\n\t\t}\n\t\tthis.updateDisplay();\n\t}\n\n\tprivate updateDisplay() {\n\t\tthis.filteredOptions = (this.options || [])\n\t\t\t.filter(opt => !this.searchValue || opt.display.toLocaleLowerCase().includes(this.searchValue))\n\t\t\t.map(opt => ({\n\t\t\t\t...opt,\n\t\t\t\tselected: this.selected.includes(opt.value),\n\t\t\t}));\n\t\tthis.cd.detectChanges();\n\t\tthis.onChange([...this.selected]);\n\t}\n}\n","import { Component } from '@angular/core';\nimport { CmSettingsService, PortalCoreFeature } from '@ats/cm/core';\nimport { CmPageHistoryService } from '../../services/page-history.service';\n\n@Component({\n selector: 'cm-not-found',\n templateUrl: './cm-not-found.component.html',\n styleUrls: ['./cm-not-found.component.scss'],\n standalone: false\n})\nexport class CmNotFoundComponent {\n\treadonly locFeature: PortalCoreFeature;\n\n\tconstructor(private pageHistory: CmPageHistoryService, private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portalCoreFeature;\n\t}\n\n\tgoBack() {\n\t\tthis.pageHistory.back();\n\t}\n}\n","
\n\t

Not Found

\n\t\n
\n","import { Component } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\nimport { NavigationError, Router } from '@angular/router';\nimport { AtsNotificationService, Notice, NoticeType } from '@ats/notifications';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { CmModalSettings } from '../../models';\nimport { CmLoadingDialogComponent } from '../cm-loading-dialog/cm-loading-dialog.component';\nimport { CmSnackBarA11yComponent } from './sm-snackbar-a11y/cm-snackbar-a11y.component';\n\n@UntilDestroy()\n@Component({\n selector: 'cm-notifications',\n templateUrl: './cm-notifications.component.html',\n styleUrls: ['./cm-notifications.component.scss'],\n standalone: false\n})\nexport class CmNotificationsComponent {\n\tloading$: Observable;\n\tconfig: MatSnackBarConfig = {\n\t\tduration: 5000,\n\t\thorizontalPosition: 'right',\n\t\tverticalPosition: 'top',\n\t\tpoliteness: 'off',\n\t};\n\tprivate dialogRef: MatDialogRef = null;\n\n\tconstructor(\n\t\tprivate readonly notifications: AtsNotificationService,\n\t\tprivate readonly snackBar: MatSnackBar,\n\t\tprivate readonly router: Router,\n\t\tprivate dialog: MatDialog\n\t) {\n\t\tthis.loading$ = this.notifications.loading$;\n\t\tthis.notifications.notice$.pipe(untilDestroyed(this)).subscribe(notice => this.popNotification(notice));\n\n\t\tthis.router.events\n\t\t\t.pipe(\n\t\t\t\tfilter(e => e instanceof NavigationError),\n\t\t\t\tuntilDestroyed(this)\n\t\t\t)\n\t\t\t.subscribe(e =>\n\t\t\t\tthis.popNotification({\n\t\t\t\t\tid: 'routing',\n\t\t\t\t\tmessage: e.toString(),\n\t\t\t\t\ttype: NoticeType.ERROR,\n\t\t\t\t})\n\t\t\t);\n\n\t\tthis.notifications.loaderMessage$.pipe(untilDestroyed(this)).subscribe(message => {\n\t\t\tif (message) {\n\t\t\t\tthis.popLoader(message);\n\t\t\t} else {\n\t\t\t\tthis.hideLoader();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate popLoader(text: { key: string; defaultValue: string }) {\n\t\tthis.dialogRef = this.dialog.open(\n\t\t\tCmLoadingDialogComponent,\n\t\t\t{\n\t\t\t\t...CmModalSettings.Medium,\n\t\t\t\tdata: text,\n\t\t\t\tdisableClose: true,\n\t\t\t}\n\t\t);\n\t}\n\n\tprivate hideLoader() {\n\t\tif (this.dialogRef) {\n\t\t\tthis.dialogRef.close();\n\t\t\tthis.dialogRef = null;\n\t\t}\n\t}\n\n\tprivate popNotification(notice: Notice) {\n\t\tconst panelClass =\n\t\t\tnotice.type === NoticeType.SUCCESS\n\t\t\t\t? 'success-snackbar'\n\t\t\t\t: notice.type === NoticeType.INFO\n\t\t\t\t? 'info-snackbar'\n\t\t\t\t: 'error-snackbar';\n\n\t\tthis.snackBar.openFromComponent(CmSnackBarA11yComponent, {\n\t\t\t...this.config,\n\t\t\tpanelClass,\n\t\t\tdata: { message: notice.message, action: notice.action },\n\t\t});\n\t}\n}\n","{{ data.message }}\r\n
\r\n\t\r\n
\r\n\r\n\r\n\t\r\n\r\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, HostBinding, Inject } from '@angular/core';\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'cm-snackbar-a11y',\n templateUrl: './cm-snackbar-a11y.component.html',\n styleUrls: ['./cm-snackbar-a11y.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CmSnackBarA11yComponent {\n\t@HostBinding('class.mat-simple-snackbar') snackBarClass = true;\n\t@HostBinding('attr.aria-hidden') ariaHidden = true;\n\n\tconstructor(\n\t\tprivate readonly liveAnnouncer: LiveAnnouncer,\n\t\t@Inject(MAT_SNACK_BAR_DATA) public readonly data: { message: string; action?: string },\n\t\tprivate readonly snackBarRef: MatSnackBarRef\n\t) {\n\t\tthis.liveAnnouncer.announce(this.data.message);\n\t}\n\n\tclose(): void {\n\t\tthis.snackBarRef.dismiss();\n\t}\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'cm-progress-indicator',\n templateUrl: './cm-progress-indicator.component.html',\n styleUrls: ['./cm-progress-indicator.component.scss'],\n standalone: false\n})\nexport class CmProgressIndicatorComponent {\n\t@Input() display: 'circle' | 'bar' = 'bar';\n\t@Input() currentValue: number;\n\t@Input() maximumValue: number;\n\t@Input() size: number = 64;\n\n\tngOnInit(): void {\n\t\t// this is the adjustment for styling progress bar for when the maximum value is 0\n\t\tif (this.maximumValue === 0) {\n\t\t\tthis.maximumValue = 1;\n\t\t}\n\t}\n\n\t@HostBinding('style.width')\n\tget width() {\n\t\treturn this.display === 'circle' ? `${this.sizeInREM}rem` : '100%';\n\t}\n\n\t@HostBinding('style.height')\n\tget height() {\n\t\treturn this.display === 'circle' ? `${this.sizeInREM}rem` : '100%';\n\t}\n\n\t@HostBinding('style.--p')\n\tget percentageInt(): string {\n\t\treturn Math.round(this.percentage * 100).toString() + '%';\n\t}\n\n\tget sizeInREM(): number {\n\t\treturn this.size / 16;\n\t}\n\n\tget percentage(): number {\n\t\treturn this.currentValue / this.maximumValue;\n\t}\n\n\tconstructor() {}\n}\n","
\n\t\n\t\t{{ percentage | percent }}\n\t\n\t\n
\n","\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\r\n\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PortalTypeEnum } from '@ats/api/cm';\nimport { CmCulture, CmSettingsService } from '@ats/cm/core';\nimport { Unsubscribable } from '@ats/utility';\nimport { Observable, Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\n@Component({\n selector: 'cm-select-supported-lang',\n templateUrl: './cm-select-supported-lang.component.html',\n styleUrls: ['./cm-select-supported-lang.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CmSelectSupportedLanguageComponent extends Unsubscribable implements OnInit {\n\t@Input() pathAfterCulture: string[] = [];\n\tcultures$: Observable;\n\treadonly lang$: Observable;\n\tprivate cultureChangeSub: Subscription;\n\n\tconstructor(private settings: CmSettingsService, private route: ActivatedRoute) {\n\t\tsuper();\n\t\tthis.lang$ = this.settings.culture$;\n\t}\n\n\tngOnInit(): void {\n\t\tthis.cultures$ = this.settings.clientCultures$;\n\t}\n\n\tselectCulture(culture: CmCulture): void {\n\t\tthis.cultureChangeSub = this.route.queryParams.pipe(first()).subscribe(queryParams => {\n\t\t\tconst queryString = Object.keys(queryParams)\n\t\t\t\t.map(key => key + '=' + queryParams[key])\n\t\t\t\t.join('&');\n\t\t\tlet newUrl = this.settings.routeWithNewCulture(this.pathAfterCulture, culture.code).join('/');\n\t\t\tif (this.settings.portal === PortalTypeEnum.SponsorPortal) {\n\t\t\t\tnewUrl = this.settings.spUrl + newUrl;\n\t\t\t} else if (this.settings.portal === PortalTypeEnum.CandidatePortal) {\n\t\t\t\tnewUrl = this.settings.cpUrl + newUrl;\n\t\t\t}\n\t\t\tnewUrl = queryString ? newUrl + '?' + queryString : newUrl;\n\t\t\tlocation.href = newUrl;\n\t\t});\n\t}\n}\n","import { Component } from '@angular/core';\nimport { PortalTypeEnum } from '@ats/api/cm';\nimport { CmSettingsService } from '@ats/cm/core';\n\n@Component({\n selector: 'cm-timeout-modal',\n templateUrl: './cm-timeout-modal.component.html',\n styleUrls: ['./cm-timeout-modal.component.scss'],\n standalone: false\n})\nexport class CmTimeoutModalComponent {\n\treadonly locFeature: string;\n\tconstructor(private settings: CmSettingsService) {\n\t\tthis.locFeature = this.settings.portal === PortalTypeEnum.CandidatePortal ? 'CandidateAccess.Login' : 'Core';\n\t}\n}\n","

\n\tYour Session is About to End\n

\n
\n\t

\n\t\t\tYou've been inactive for a while. For your security, we'll automatically sign you out in approximately 3\n\t\t\tminutes. You may choose \"Stay signed in\" to continue or \"Sign out\" if you're done.\n\t\t

\n
\n\n
\n\t\n\t\n
\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { CmAuthService, CmTimeoutService } from '@ats/cm/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Subscription, map, switchMap, take, tap } from 'rxjs';\nimport { CmTimeoutModalComponent } from './cm-timeout-modal/cm-timeout-modal.component';\n\n@UntilDestroy()\n@Component({\n selector: 'cm-timeout',\n templateUrl: './cm-timeout.component.html',\n styleUrls: ['./cm-timeout.component.scss'],\n standalone: false\n})\nexport class CmTimeoutComponent implements OnInit {\n\tprivate dialogRef: MatDialogRef;\n\tprivate dialogSub: Subscription;\n\tprivate logoutSub: Subscription;\n\n\tconstructor(\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly dialog: MatDialog,\n\t\tprivate readonly timeoutService: CmTimeoutService\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis.timeoutService.expirationTime$.pipe(untilDestroyed(this)).subscribe(() => {\n\t\t\tthis.stopTimeout();\n\t\t});\n\n\t\tthis.auth.token$.pipe(untilDestroyed(this)).subscribe(token => {\n\t\t\tif (token) {\n\t\t\t\tthis.timeoutService.setTimeoutToStorage(token);\n\t\t\t\tthis.startTimeout();\n\t\t\t} else {\n\t\t\t\tthis.stopTimeout();\n\t\t\t\tthis.timeoutService.deleteExpiration();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate scheduleLogout(): void {\n\t\t// This prevents any dangling logout subscriptions\n\t\tif (this.logoutSub) {\n\t\t\tthis.logoutSub.unsubscribe();\n\t\t}\n\t\tthis.logoutSub = this.timeoutService.warnDuration$.subscribe(() => {\n\t\t\tthis.signOutActions();\n\t\t});\n\t}\n\n\tprivate stopTimeout(): void {\n\t\tif (this.dialogRef) {\n\t\t\tthis.dialogRef.close(null);\n\t\t}\n\t\tif (this.logoutSub) {\n\t\t\tthis.logoutSub.unsubscribe();\n\t\t}\n\t}\n\n\tprivate startTimeout(): void {\n\t\tif (this.dialogSub) {\n\t\t\tthis.dialogSub.unsubscribe();\n\t\t}\n\t\tconst validateAuth$ = this.auth.validateToken$().pipe(take(1));\n\t\tconst warnDialogRef$ = this.timeoutService.atWarnTime$.pipe(\n\t\t\tmap(() => {\n\t\t\t\tthis.dialogRef = this.dialog.open(CmTimeoutModalComponent, {\n\t\t\t\t\tmaxWidth: '480px',\n\t\t\t\t\twidth: '80%',\n\t\t\t\t\tdisableClose: true,\n\t\t\t\t});\n\t\t\t\treturn this.dialogRef;\n\t\t\t}),\n\t\t\ttap(() => this.scheduleLogout()),\n\t\t\tswitchMap(dialogRef => dialogRef.afterClosed())\n\t\t);\n\n\t\tthis.dialogSub = warnDialogRef$.subscribe(closeResult => {\n\t\t\tif (closeResult) {\n\t\t\t\tvalidateAuth$.subscribe(() => {\n\t\t\t\t\tthis.timeoutService.resetExpiration();\n\t\t\t\t});\n\t\t\t} else if (closeResult === false) {\n\t\t\t\tthis.signOutActions();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate signOutActions(): void {\n\t\tthis.stopTimeout();\n\t\tthis.auth.logout$();\n\t\tthis.timeoutService.deleteExpiration();\n\t}\n\n\t/** Diagnostic code BEGIN **/\n\t/* Enable displaying the remaining time in the template\n\t- You will also have to use ChangeDetectorRef.detectChanges() to display this in the template\n\t- To cause faster timeouts you can directly change the timer value in the timeout service\n\n\tthis.remainingTime$ = this.timeoutService.remainingTime$;\n\n\t\tprivate getRemainingTime() {\n\t\tconst intervalWithReset$ = this.expirationTime$.pipe(switchMap(() => interval(1000)));\n\t\treturn combineLatest([this.expirationTime$, intervalWithReset$]).pipe(\n\t\t\tmap(([warnTimeMS, intervalS]) => {\n\t\t\t\treturn warnTimeMS - intervalS * 1000;\n\t\t\t})\n\t\t);\n\t}\n\n\t*/\n\t/** Diagnostic code END **/\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n\tAfterViewInit,\r\n\tDirective,\r\n\tElementRef,\r\n\tInput,\r\n\tOnDestroy,\r\n\tRenderer2,\r\n\tTemplateRef,\r\n\tViewContainerRef,\r\n} from '@angular/core';\r\nimport { Unsubscribable } from '@ats/utility';\r\nimport { merge } from 'rxjs';\r\nimport { take, takeUntil } from 'rxjs/operators';\r\nimport { CmContextOverlayComponent } from '../components/cm-context-overlay/context-overlay.component';\r\n\r\n@Directive({\n selector: '[cmOverlayTriggerFor]',\n standalone: false\n})\r\nexport class CmContextOverlayDirective extends Unsubscribable implements AfterViewInit, OnDestroy {\r\n\t// ts-lint:ignore-next-line\r\n\t@Input('cmOverlayTriggerFor') component: CmContextOverlayComponent;\r\n\t@Input() cmOverlayTemplate: TemplateRef;\r\n\t@Input() cmOverlayContext: any;\r\n\t@Input() cmOverlayTitleTemplate: TemplateRef;\r\n\t@Input() cmOverlayTitleContext: any;\r\n\tprivate overlayRef: OverlayRef;\r\n\tprivate portal: TemplatePortal;\r\n\r\n\tconstructor(\r\n\t\tprivate el: ElementRef,\r\n\t\tprivate overlay: Overlay,\r\n\t\tprivate viewRef: ViewContainerRef,\r\n\t\tprivate renderer: Renderer2\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.renderer.listen(this.el.nativeElement, 'click', () => this.toggleOverlay());\r\n\t}\r\n\r\n\tprivate toggleOverlay() {\r\n\t\tif (!this.overlayRef) this.createOverlay();\r\n\r\n\t\tif (this.overlayRef.hasAttached()) {\r\n\t\t\tthis.overlayRef.detach();\r\n\t\t} else {\r\n\t\t\tif (this.cmOverlayContext) this.component.context = this.cmOverlayContext;\r\n\t\t\tif (this.cmOverlayTemplate) this.component.contentTpl = this.cmOverlayTemplate;\r\n\t\t\tif (this.cmOverlayTitleContext) this.component.titleContext = this.cmOverlayTitleContext;\r\n\t\t\tif (this.cmOverlayTitleTemplate) this.component.titleTpl = this.cmOverlayTitleTemplate;\r\n\t\t\tthis.portal = new TemplatePortal(this.component.template, this.viewRef);\r\n\t\t\tthis.overlayRef.attach(this.portal);\r\n\r\n\t\t\tmerge(this.component.close$, this.overlayRef.backdropClick())\r\n\t\t\t\t.pipe(take(1))\r\n\t\t\t\t.subscribe(() => this.overlayRef.detach());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate createOverlay() {\r\n\t\tthis.overlayRef = this.overlay.create({\r\n\t\t\tbackdropClass: 'bg-transparent',\r\n\t\t\thasBackdrop: true,\r\n\t\t\tpositionStrategy: this.overlay\r\n\t\t\t\t.position()\r\n\t\t\t\t.flexibleConnectedTo(this.el)\r\n\t\t\t\t.withFlexibleDimensions(false)\r\n\t\t\t\t.withPositions([\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toriginX: 'start',\r\n\t\t\t\t\t\toriginY: 'bottom',\r\n\t\t\t\t\t\toverlayX: 'start',\r\n\t\t\t\t\t\toverlayY: 'top',\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toriginX: 'start',\r\n\t\t\t\t\t\toriginY: 'top',\r\n\t\t\t\t\t\toverlayX: 'start',\r\n\t\t\t\t\t\toverlayY: 'bottom',\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\toriginX: 'start',\r\n\t\t\t\t\t\t\toriginY: 'top',\r\n\t\t\t\t\t\t\toverlayX: 'end',\r\n\t\t\t\t\t\t\toverlayY: 'center',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t]),\r\n\t\t\t\tscrollStrategy: this.overlay.scrollStrategies.block(),\r\n\t\t});\r\n\t}\r\n}\r\n","import { Directive, Host, HostBinding } from '@angular/core';\r\nimport { RouterLinkActive } from '@angular/router';\r\n\r\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[routerLinkActive]',\n standalone: false\n})\r\nexport class CmCurrentLinkDirective {\r\n\tconstructor(@Host() private readonly rla: RouterLinkActive) {}\r\n\r\n\t@HostBinding('attr.aria-current') get ariaCurrent() {\r\n\t\treturn this.rla.isActive ? 'page' : null;\r\n\t}\r\n}\r\n","import { Directive, HostBinding, Input } from '@angular/core';\r\n\r\n@Directive({\n selector: '[cmDataLabel]',\n standalone: false\n})\r\nexport class CmDataLabelDirective {\r\n\t@HostBinding('attr.data-label') @Input() cmDataLabel: string;\r\n\r\n\tconstructor() {}\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\nimport { CmAuthService, HiddenFormPost } from '@ats/cm/core';\n\n@Directive({\n selector: '[cmFileDownload]',\n standalone: false\n})\nexport class CmFileDownloadDirective extends HiddenFormPost {\n\t// eslint-disable-next-line\n\t@Input('cmFileDownload') path: string;\n\t@Input() targetWindow: '_blank' | '_self' | '_parent' | '_top' = '_self';\n\n\tconstructor(el: ElementRef, auth: CmAuthService, renderer: Renderer2) {\n\t\tsuper(el, auth, renderer);\n\t}\n}\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\n selector: '[innerHTML], [innerHtml]',\n standalone: false\n})\r\nexport class CmInnerHtmlSpacingDirective {\r\n\t@HostBinding('class.cm-localized-content')\r\n\telementClass = true;\r\n\r\n\tconstructor() {}\r\n}\r\n","import { AfterViewInit, Directive, HostBinding, Input } from '@angular/core';\r\nimport { CmSettingsService } from '@ats/cm/core';\r\nimport { delay, take } from 'rxjs/operators';\r\n\r\nconst INTERNAL_HOSTS = ['certmetricslocal.com', 'certmetrics.com'];\r\n\r\n@Directive({\n selector: '[href][cmInternalize]',\n standalone: false\n})\r\nexport class CmInternalizeLinkDirective implements AfterViewInit {\r\n\t@Input()\r\n\t@HostBinding('href')\r\n\thref?: string;\r\n\r\n\tconstructor(private settings: CmSettingsService) {}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tif (INTERNAL_HOSTS.some(host => (this.href || '').includes(host))) {\r\n\t\t\tthis.parseRelativePath();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate parseRelativePath(): void {\r\n\t\tthis.settings.culture$.pipe(take(1), delay(1)).subscribe(culture => {\r\n\t\t\tconst [basePath, remainingPath] = this.href.split(`${this.settings.client}/`);\r\n\t\t\tconst [linkCulture, ...remainder] = (remainingPath || '').split('/');\r\n\t\t\tif (culture.code === linkCulture) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.href = `${basePath}${this.settings.client}/${culture.code}/${(remainder || []).join('/')}`;\r\n\t\t});\r\n\t}\r\n}\r\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\n selector: 'button[cm-link-button], a[cm-link-button]',\n standalone: false\n})\r\nexport class CmLinkButtonDirective {\r\n\t@HostBinding('class.cm-link-button')\r\n\telementClass = true;\r\n\r\n\tconstructor() {}\r\n}\r\n","import { AriaDescriber } from '@angular/cdk/a11y';\r\nimport { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\r\nimport { CmLocalizePipe, CmSettingsService } from '@ats/cm/core';\r\n\r\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'a, [cmFileDownload], [cmSSO]',\n standalone: false\n})\r\nexport class CmLinkDescriptionDirective implements AfterViewInit {\r\n\t@Input() targetWindow: string;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly elementRef: ElementRef,\r\n\t\tprivate readonly localize: CmLocalizePipe,\r\n\t\tprivate readonly settingsService: CmSettingsService,\r\n\t\tprivate readonly ariaDescriber: AriaDescriber\r\n\t) {}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tconst targetValue: string = this.elementRef.nativeElement.getAttribute('target') || this.targetWindow;\r\n\t\tswitch (targetValue) {\r\n\t\t\tcase '_blank':\r\n\t\t\t\tthis.ariaDescriber.describe(\r\n\t\t\t\t\tthis.elementRef.nativeElement,\r\n\t\t\t\t\tthis.localize.transform(\r\n\t\t\t\t\t\t'opens in new tab',\r\n\t\t\t\t\t\t`${this.settingsService.portalCoreFeature}/System.Global.Button.OpensInNewTab`\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.ariaDescriber.describe(\r\n\t\t\t\t\tthis.elementRef.nativeElement,\r\n\t\t\t\t\tthis.localize.transform(\r\n\t\t\t\t\t\t'opens in same tab',\r\n\t\t\t\t\t\t`${this.settingsService.portalCoreFeature}/System.Global.Button.OpensInSameTab`\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n","import {\r\n\tChangeDetectorRef,\r\n\tDirective,\r\n\tElementRef,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tRenderer2,\r\n\tSimpleChanges,\r\n} from '@angular/core';\r\nimport { CmLocalizationService, CmSettingsService, PortalCoreFeature, PublicLocalization } from '@ats/cm/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, switchMap, take, withLatestFrom } from 'rxjs/operators';\r\n\r\n/** @deprecated */\r\n@UntilDestroy()\r\n@Directive({\n selector: '[cmLocalize]',\n providers: [],\n standalone: false\n})\r\nexport class CmLocalizeDirective implements OnInit, OnDestroy, OnChanges {\r\n\t@Input() cmLocalize: string;\r\n\t@Input() default: string;\r\n\t@Input() htmlAllowed = false;\r\n\t@Input() locReadonly = false;\r\n\tlocalization: PublicLocalization;\r\n\tel: any;\r\n\tlocalizedValue: string = '';\r\n\tclickListenerFn: () => void;\r\n\tkeyboardListenerFn: () => void;\r\n\tprivate keyChangesSubj$ = new BehaviorSubject('');\r\n\tprivate keyChanges$: Observable = this.keyChangesSubj$.pipe(distinctUntilChanged());\r\n\tprivate readonly ariaDefaultText: string = 'Update localization value for:';\r\n\treadonly locFeature: PortalCoreFeature;\r\n\r\n\tconstructor(\r\n\t\tprivate localizationService: CmLocalizationService,\r\n\t\tprivate element: ElementRef,\r\n\t\tprivate renderer: Renderer2,\r\n\t\tprivate cd: ChangeDetectorRef,\r\n\t\tprivate settings: CmSettingsService\r\n\t) {\r\n\t\tthis.locFeature = this.settings.portalCoreFeature;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.updateHtmlClass();\r\n\r\n\t\tthis.keyChanges$\r\n\t\t\t.pipe(\r\n\t\t\t\tuntilDestroyed(this),\r\n\t\t\t\tswitchMap(key =>\r\n\t\t\t\t\tthis.localizationService\r\n\t\t\t\t\t\t.findLocalization$(key)\r\n\t\t\t\t\t\t.pipe(withLatestFrom(this.localizationService.isLocalizing$))\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t\t.subscribe(([localization, isLocalizing]) => this.localize(localization, isLocalizing));\r\n\r\n\t\tthis.localizationService.isLocalizing$\r\n\t\t\t.pipe(untilDestroyed(this))\r\n\t\t\t.subscribe((showing: boolean) => this.toggleInlineLocalization(showing));\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif ((((changes || {}).htmlAllowed || {}).currentValue || []).length || 0 > 0) {\r\n\t\t\tthis.updateHtmlClass();\r\n\t\t}\r\n\r\n\t\tif (changes.cmLocalize && changes.cmLocalize.currentValue && changes.cmLocalize.currentValue.length > 0) {\r\n\t\t\tthis.keyChangesSubj$.next(changes.cmLocalize.currentValue);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateHtmlClass(): void {\r\n\t\tif (this.htmlAllowed) {\r\n\t\t\tthis.renderer.addClass(this.element.nativeElement, 'cm-localized-content');\r\n\t\t} else {\r\n\t\t\tthis.renderer.removeClass(this.element.nativeElement, 'cm-localized-content');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async localize(localization: PublicLocalization, isLocalizing: boolean): Promise {\r\n\t\tthis.localization = localization;\r\n\t\tlet localizedValue = '';\r\n\r\n\t\t// Localization found and has a value\r\n\t\tif ((this.localization || {}).value || (this.localization || {}).value?.trim() === '') {\r\n\t\t\tlocalizedValue = this.localization.value;\r\n\t\t\t// No localization, but we have a default value\r\n\t\t} else if ((this.localization || {}).defaultValue) {\r\n\t\t\tlocalizedValue = this.localization.defaultValue;\r\n\t\t} else if (this.default) {\r\n\t\t\tlocalizedValue = this.default;\r\n\t\t\t// If this.el is undefined, it is our first time through\r\n\t\t\t// so get the native element text (or HTML)\r\n\t\t} else if (!this.el && this.element) {\r\n\t\t\tlocalizedValue = this.htmlAllowed\r\n\t\t\t\t? this.element.nativeElement.innerHTML\r\n\t\t\t\t: this.element.nativeElement.innerText;\r\n\t\t}\r\n\r\n\t\tthis.togglePathStyle();\r\n\r\n\t\t// No default value, so use the default localization for the specific portal\r\n\t\tif (!localizedValue && localizedValue !== '' && isLocalizing) {\r\n\t\t\tconst defaultLocalization = this.localizationService.findLocalization(\r\n\t\t\t\t`${this.locFeature}/System.Global.Content.NoLocalization`\r\n\t\t\t);\r\n\t\t\tif (defaultLocalization) {\r\n\t\t\t\tlocalizedValue = defaultLocalization.value;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.localizedValue = localizedValue;\r\n\t\tif (this.el) {\r\n\t\t\tthis.renderer.setProperty(this.el, this.htmlAllowed ? 'innerHTML' : 'innerText', this.localizedValue);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate toggleInlineLocalization(showing: boolean): void {\r\n\t\tif (!this.el) {\r\n\t\t\tthis.renderContainer();\r\n\t\t}\r\n\t\tif (this.locReadonly) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (showing) {\r\n\t\t\tthis.showInlineLocalization();\r\n\t\t} else {\r\n\t\t\tthis.hideInlineLocalization();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate renderContainer(): void {\r\n\t\tthis.el = this.renderer.createElement('span');\r\n\t\tthis.renderer.setProperty(this.el, this.htmlAllowed ? 'innerHTML' : 'innerText', this.localizedValue);\r\n\t\tthis.togglePathStyle();\r\n\t\tthis.renderer.setProperty(this.element.nativeElement, 'innerHTML', '');\r\n\r\n\t\tthis.renderer.appendChild(this.element.nativeElement, this.el);\r\n\t}\r\n\r\n\tprivate togglePathStyle() {\r\n\t\tif (!this.el) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.renderer.removeStyle(this.el, 'text-transform');\r\n\t\tthis.renderer.removeStyle(this.el, 'letter-spacing');\r\n\t}\r\n\r\n\tprivate showInlineLocalization(): void {\r\n\t\tthis.localizationService\r\n\t\t\t.findLocalization$(`${this.locFeature}/System.LocalizeDirective.Button.LocalizeAria`)\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe(localization => {\r\n\t\t\t\tconst ariaLocalizedText: string = localization?.value || this.ariaDefaultText;\r\n\r\n\t\t\t\tthis.renderer.setAttribute(this.el, 'tabindex', '0');\r\n\t\t\t\tthis.renderer.setAttribute(this.el, 'role', 'button');\r\n\t\t\t\tthis.renderer.setAttribute(this.el, 'aria-label', `${ariaLocalizedText} ${this.localizedValue}`);\r\n\t\t\t\tthis.renderer.addClass(this.el, 'cm-localize-inline');\r\n\t\t\t\tthis.renderer.addClass(this.el, `cm-localize-inline--${this.getInlineBorderColor()}`);\r\n\r\n\t\t\t\tif (this.localization) {\r\n\t\t\t\t\tthis.clickListenerFn = this.clickListener();\r\n\t\t\t\t\tthis.keyboardListenerFn = this.keyboardListener();\r\n\t\t\t\t}\r\n\t\t\t\tthis.cd.detectChanges();\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate hideInlineLocalization(): void {\r\n\t\tthis.renderer.removeAttribute(this.el, 'tabindex');\r\n\t\tthis.renderer.removeAttribute(this.el, 'role');\r\n\t\tthis.renderer.removeAttribute(this.el, 'aria-label');\r\n\t\tthis.renderer.removeClass(this.el, 'cm-localize-inline');\r\n\t\tthis.renderer.removeClass(this.el, `cm-localize-inline--${this.getInlineBorderColor()}`);\r\n\r\n\t\tif (this.clickListenerFn) {\r\n\t\t\tthis.clickListenerFn();\r\n\t\t\tthis.keyboardListenerFn();\r\n\t\t}\r\n\t}\r\n\r\n\topenLocalizationDialog(): void {\r\n\t\tthis.localizationService.triggerLocalization({ ...this.localization, htmlAllowed: this.htmlAllowed });\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tif (this.clickListenerFn) {\r\n\t\t\t// Remove the listener for the dialog popup.\r\n\t\t\tthis.clickListenerFn();\r\n\t\t\tthis.keyboardListenerFn();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate clickListener(): () => void {\r\n\t\treturn this.renderer.listen(this.el, 'click', event => {\r\n\t\t\tif (event.altKey) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tevent.preventDefault();\r\n\t\t\tthis.openLocalizationDialog();\r\n\t\t\treturn false;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate keyboardListener(): () => void {\r\n\t\treturn this.renderer.listen(this.el, 'keydown', (event: KeyboardEvent) => {\r\n\t\t\tif (event.key === ' ' || event.key === 'Enter') {\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tthis.openLocalizationDialog();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (event.key === 'Escape') {\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tthis.localizationService.toggleLocalization();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getInlineBorderColor(): string {\r\n\t\t// These strings must match the classes in the _cm-localize.scss file\r\n\t\treturn !this.localization ? 'red' : this.htmlAllowed ? 'orange' : 'green';\r\n\t}\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroupDirective } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CmFormErrorService } from '@ats/cm/core';\r\n\r\n// eslint-disable-next-line @angular-eslint/directive-selector\r\n@Directive({\n selector: 'form[formGroup]',\n standalone: false\n})\r\nexport class CmLogFormDirective implements OnInit, OnDestroy {\r\n\t@Input('cmFormName')\r\n\tname: string = null;\r\n\r\n\t@Input('cmFormIgnoreLog')\r\n\tignore: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate fg: FormGroupDirective,\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate formErrorService: CmFormErrorService\r\n\t) {}\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.name) {\r\n\t\t\tthis.name = this.route.snapshot.url.join('/');\r\n\t\t}\r\n\t\tif (!this.ignore) {\r\n\t\t\tthis.formErrorService.registerFormForLogging(this.name, this.fg);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (!this.ignore) {\r\n\t\t\tthis.formErrorService.unregisterFormFromLogging(this.name);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Directive, HostBinding, Input } from '@angular/core';\r\n\r\n@Directive({\n selector: '[cmAsterisk]',\n standalone: false\n})\r\nexport class CmMarkAsteriskDirective {\r\n\t@Input() cmAsterisk: boolean | '' = true;\r\n\t@HostBinding('class')\r\n\telementClass = '';\r\n\tconstructor() {}\r\n\tngOnInit(): void {\r\n\t\tif (this.cmAsterisk || this.cmAsterisk === '') {\r\n\t\t\tthis.elementClass = 'cm-asterisk';\r\n\t\t}\r\n\t}\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport { CmAuthService, CmSettingsService, HiddenFormPost } from '@ats/cm/core';\n\nexport interface cmSSOOptions {\n\tfullPath: boolean;\n}\n\n@Directive({\n selector: '[cmSSO]',\n standalone: false\n})\nexport class CmSSODirective extends HiddenFormPost implements OnInit {\n\t// eslint-disable-next-line\n\t@Input('cmSSO') path: string;\n\t@Input() targetWindow: '_blank' | '_self' | '_parent' | '_top' = '_blank';\n\t@Input() cmSSOOptions: cmSSOOptions = {\n\t\tfullPath: false,\n\t};\n\n\tconstructor(el: ElementRef, auth: CmAuthService, renderer: Renderer2, private settings: CmSettingsService) {\n\t\tsuper(el, auth, renderer);\n\t}\n\n\tngOnInit() {\n\t\tthis.basePath = this.cmSSOOptions.fullPath ? null : this.settings.api;\n\t}\n}\n","import { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { Directive, HostListener } from '@angular/core';\r\nimport { MatStepper } from '@angular/material/stepper';\r\n\r\n@Directive({\n selector: '[cmVerticalScroller]',\n standalone: false\n})\r\nexport class CmVerticalStepperScrollerDirective {\r\n\tconstructor(private stepper: MatStepper) {}\r\n\r\n\t@HostListener('selectionChange', ['$event'])\r\n\tselectionChanged(selection: StepperSelectionEvent) {\r\n\t\tconst stepId = this.stepper._getStepLabelId(selection.selectedIndex - 1);\r\n\t\tconst stepElement = document.getElementById(stepId);\r\n\t\tif (stepElement) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tstepElement.scrollIntoView(true);\r\n\t\t\t}, 300);\r\n\t\t}\r\n\t}\r\n}\r\n","export enum CmUiBugType {\r\n\tINFO = 'info',\r\n\tWARN = 'warning',\r\n\tSUCCESS = 'check',\r\n\tHELP = 'help',\r\n}\r\n","import { HubFeature, HubPermission } from '@ats/api/cm';\r\nimport { Guard } from '@ats/cm/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nconst fragments: any = {};\r\n\r\nfragments.itemNode = (guard: Guard) => gql`\r\n\t\tfragment ItemNode on CertLogicItemResponse {\r\n\t\t\tid\r\n\t\t\ttype\r\n\t\t\tlabel\r\n\t\t\texternalId\r\n\t\t\t${\r\n\t\t\t\tguard.reset().everyFeature([HubFeature.Exam]).all\r\n\t\t\t\t\t? `\r\n\t\t\texamCatalog {\r\n\t\t\t\tid\r\n\t\t\t\texternalId\r\n\t\t\t\tname\r\n\t\t\t\tnameAbbr\r\n\t\t\t\t${guard.reset().everyFeature([HubFeature.ExamSchedulingUrl]).all ? 'schedulingUrl' : ''}\r\n\t\t\t}\r\n\t\t\t`\r\n\t\t\t\t\t: ''\r\n\t\t\t}\r\n\t\t\t${\r\n\t\t\t\tguard\r\n\t\t\t\t\t.reset()\r\n\t\t\t\t\t.someFeatures([\r\n\t\t\t\t\t\tHubFeature.CredentialAchievements,\r\n\t\t\t\t\t\tHubFeature.OtherRequirement,\r\n\t\t\t\t\t\tHubFeature.CredentialAgreement,\r\n\t\t\t\t\t\tHubFeature.CredentialContinuingEducation,\r\n\t\t\t\t\t]).all\r\n\t\t\t\t\t? `\r\n\t\t\tcertRequirementCatalog {\r\n\t\t\t\tid\r\n\t\t\t\texternalId\r\n\t\t\t\tname\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t\t`\r\n\t\t\t\t\t: ''\r\n\t\t\t}\r\n\t\t\tcertCatalog {\r\n\t\t\t\tid\r\n\t\t\t\tname\r\n\t\t\t\tnameAbbr\r\n\t\t\t}\r\n\t\t\tnumRequired\r\n\t\t\tnumChildren\r\n\t\t\tnumComplete\r\n\t\t\tisComplete\r\n\t\t\tmaxPoints\r\n\t\t\tpointsPerItem\r\n\t\t\tearnedPoints\r\n\t\t\tstartDate\r\n\t\t\tendDate\r\n\t\t\t${\r\n\t\t\t\tguard.reset().everyPermission([HubPermission.CandidateCredentialDetailsView]).all\r\n\t\t\t\t\t? `\r\n\t\t\tusedItemList {\r\n\t\t\t\tid\r\n\t\t\t\tcreated\r\n\t\t\t\tpoints\r\n\t\t\t\t${\r\n\t\t\t\t\tguard.reset().everyFeature([HubFeature.Exam]).all\r\n\t\t\t\t\t\t? `\r\n\t\t\t\texam {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tdateTime\r\n\t\t\t\t\texpireDate\r\n\t\t\t\t\tcatalog {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\tname\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t`\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\t\t\t\tcert {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tactiveDate\r\n\t\t\t\t\tinactiveDate\r\n\t\t\t\t\tcertCatalog {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\tname\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t${\r\n\t\t\t\t\tguard\r\n\t\t\t\t\t\t.reset()\r\n\t\t\t\t\t\t.someFeatures([\r\n\t\t\t\t\t\t\tHubFeature.CredentialAchievements,\r\n\t\t\t\t\t\t\tHubFeature.OtherRequirement,\r\n\t\t\t\t\t\t\tHubFeature.CredentialAgreement,\r\n\t\t\t\t\t\t\tHubFeature.CredentialContinuingEducation,\r\n\t\t\t\t\t\t])\r\n\t\t\t\t\t\t.somePermissions([\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsMiscellaneousView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateCredentialAgreementsView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsExternalCertView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsContinuingEducationView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsProgramFeeView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsEnrollmentView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsTrainingView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsLabView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsExternalExamView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsParticipationView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateCredentialAchievementsView,\r\n\t\t\t\t\t\t\tHubPermission.CandidateRequirementsAdditionalAgreementView,\r\n\t\t\t\t\t\t]).all\r\n\t\t\t\t\t\t? `\r\n\t\t\t\tcertRequirement {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tactiveDate\r\n\t\t\t\t\texpireDate\r\n\t\t\t\t\tcertRequirementCatalog {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\tname\r\n\t\t\t\t\t}\r\n\t\t\t\t\t${guard.reset().everyFeature([HubFeature.CredentialContinuingEducation]).all ? 'points' : ''}\r\n\t\t\t\t}\r\n\t\t\t\t\t`\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t`\r\n\t\t\t\t\t: ''\r\n\t\t\t}\r\n\t\t}\r\n\t`;\r\n\r\nfragments.itemTree = (guard: Guard) => gql`\r\n\tfragment ItemTree on CertLogicItemResponse {\r\n\t\t...ItemNode\r\n\t\tchildren {\r\n\t\t\t...ItemNode\r\n\t\t\tchildren {\r\n\t\t\t\t...ItemNode\r\n\t\t\t\tchildren {\r\n\t\t\t\t\t...ItemNode\r\n\t\t\t\t\tchildren {\r\n\t\t\t\t\t\t...ItemNode\r\n\t\t\t\t\t\tchildren {\r\n\t\t\t\t\t\t\t...ItemNode\r\n\t\t\t\t\t\t\tchildren {\r\n\t\t\t\t\t\t\t\t...ItemNode\r\n\t\t\t\t\t\t\t\tchildren {\r\n\t\t\t\t\t\t\t\t\t...ItemNode\r\n\t\t\t\t\t\t\t\t\tchildren {\r\n\t\t\t\t\t\t\t\t\t\t...ItemNode\r\n\t\t\t\t\t\t\t\t\t\tchildren {\r\n\t\t\t\t\t\t\t\t\t\t\t...ItemNode\r\n\t\t\t\t\t\t\t\t\t\t\tchildren {\r\n\t\t\t\t\t\t\t\t\t\t\t\t...ItemNode\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t${fragments.itemNode(guard)}\r\n`;\r\n\r\nexport const CertLogicFragments = fragments;\r\n","export enum CmImageNotFound {\r\n\tImageNotFound = 'Image Not Found',\r\n}\r\n","export const CmModalSettings = {\r\n\tLarge: {\r\n\t\twidth: '80vw',\r\n\t},\r\n\tMedium: {\r\n\t\twidth: '80vw',\r\n\t\tmaxWidth: 960,\r\n\t},\r\n\tSmall: {\r\n\t\twidth: '80vw',\r\n\t\tmaxWidth: 480,\r\n\t},\r\n};\r\n","export interface CMOption {\r\n\tdisplay: string;\r\n\tvalue: T;\r\n}\r\nexport const isCMOption = (value: any): value is CMOption =>\r\n\tvalue &&\r\n\tObject.prototype.hasOwnProperty.call(value, 'value') &&\r\n\tObject.prototype.hasOwnProperty.call(value, 'display');\r\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { Pagination } from './cm-pagination.interface';\r\n\r\nexport abstract class CmPager {\r\n\tprivate paginationSubj: BehaviorSubject;\r\n\tpagination$: Observable;\r\n\r\n\tprivate pageSubj: Subject<'prev' | 'next'> = new Subject<'prev' | 'next'>();\r\n\tprivate page$: Observable<'prev' | 'next'> = this.pageSubj.asObservable();\r\n\r\n\tconstructor() {}\r\n\r\n\tpageData$(data$: Observable, take: number = 3, start: number = 0): Observable {\r\n\t\tthis.paginationSubj = new BehaviorSubject({ start, take });\r\n\r\n\t\tthis.pagination$ = this.page$.pipe(\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\tstartWith(null),\r\n\t\t\tswitchMap(dir => this.paginationSubj.asObservable())\r\n\t\t);\r\n\r\n\t\treturn this.pagination$.pipe(\r\n\t\t\tswitchMap(paging => data$.pipe(map(data => data.slice(paging.start, paging.start + paging.take))))\r\n\t\t) as Observable;\r\n\t}\r\n\r\n\tpageNext() {\r\n\t\tthis.page('next');\r\n\t}\r\n\r\n\tpagePrev() {\r\n\t\tthis.page('prev');\r\n\t}\r\n\r\n\tprivate page(dir: 'next' | 'prev') {\r\n\t\tconst currentPaging = this.paginationSubj.getValue();\r\n\t\tif (dir === 'next') {\r\n\t\t\tthis.paginationSubj.next({\r\n\t\t\t\t...currentPaging,\r\n\t\t\t\tstart: currentPaging.take + currentPaging.start,\r\n\t\t\t});\r\n\t\t} else if (dir === 'prev') {\r\n\t\t\tthis.paginationSubj.next({\r\n\t\t\t\t...currentPaging,\r\n\t\t\t\tstart: currentPaging.start - currentPaging.take > -1 ? currentPaging.start - currentPaging.take : 0,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","export enum CmTableTools {\r\n\tFILTER = 'filter-bar',\r\n\tTOGGLE_FILTER = 'filter-toggle-all-button',\r\n\tEMPTY_GROUPS = 'empty-groups',\r\n\tTOGGLE_GROUPS = 'empty-groups',\r\n\tZOOM = 'zoom',\r\n\tFULLSCREEN = 'fullscreen',\r\n\tDOWNLOAD = 'download',\r\n\tNONE = 'none',\r\n\tFILTER_ONLY = 'filter-only',\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n// TODO: Make a task to use the to-cm-date function\r\n@Pipe({\n name: 'cmDate',\n standalone: false\n})\r\nexport class CmDatePipe implements PipeTransform {\r\n\tconstructor() {}\r\n\r\n\ttransform(value: any, format?: string, timezone?: string): string {\r\n\t\tconst dateString = Date.parse(value);\r\n\t\tif (!dateString) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tif (!format) {\r\n\t\t\tformat = 'yyyy-MM-dd';\r\n\t\t}\r\n\t\treturn formatDate(dateString, format, 'en', timezone ? timezone : undefined);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CmRoutingService } from '@cm/core/routing';\n\n@Pipe({\n name: 'cmLinkFromRoot',\n standalone: false\n})\nexport class CmLinkFromRootPipe implements PipeTransform {\n\tconstructor(private readonly cmRouting: CmRoutingService) {}\n\n\ttransform(path: string[] | string): string | string[] {\n\t\tif (typeof path === 'string') {\n\t\t\tconst base = this.cmRouting.routeWithContext([]);\n\t\t\treturn '/' + base.join('/') + '/' + path;\n\t\t} else {\n\t\t\treturn ['/', ...this.cmRouting.routeWithContext(path)];\n\t\t}\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CmLocalizationService } from '@ats/cm/core';\r\nimport { AtsSplitPascalPipe } from '@ats/utility';\r\n\r\n@Pipe({\n name: 'cmLocalizeEnum',\n standalone: false\n})\r\nexport class CmLocalizeEnumPipe implements PipeTransform {\r\n\tconstructor(private localizationService: CmLocalizationService, private splitPascalPipe: AtsSplitPascalPipe) {}\r\n\r\n\ttransform(value: string, key: string): string {\r\n\t\tif (!key || !value) return '';\r\n\r\n\t\tconst loc = this.localizationService.findLocalization(`System.Enum.${key}.${value}`, false);\r\n\r\n\t\treturn (loc || {}).value || this.splitPascalPipe.transform(value);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { CmSettingsService } from '@ats/cm/core';\r\nimport { Unsubscribable } from '@ats/utility';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\n\r\nconst URLS_TO_IGNORE: string[] = ['/not-found', '/session-expired'];\r\nconst FALLBACK_URL: string[] = [];\r\nconst MAX_PAGE_HISTORY = 10;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CmPageHistoryService extends Unsubscribable {\r\n\treadonly hidePageBack$: Observable;\r\n\tpageHistory: string[] = [];\r\n\tsubscribed: boolean = false;\r\n\r\n\tprivate readonly hidePageBack = new BehaviorSubject(false);\r\n\r\n\tconstructor(private router: Router, private settings: CmSettingsService) {\r\n\t\tsuper();\r\n\t\tthis.hidePageBack$ = this.hidePageBack.asObservable();\r\n\t\tthis.initialize();\r\n\t}\r\n\r\n\tinitialize() {\r\n\t\tif (!this.subscribed) {\r\n\t\t\tthis.router.events\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\t\tfilter(event => event instanceof NavigationEnd),\r\n\t\t\t\t\ttakeUntil(this.unsub)\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe((event: NavigationEnd) => {\r\n\t\t\t\t\tconst url = URLS_TO_IGNORE.some(path => event.urlAfterRedirects.endsWith(path))\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: event.urlAfterRedirects;\r\n\t\t\t\t\tif (url) {\r\n\t\t\t\t\t\tthis.addItemToHistory(event.urlAfterRedirects);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\tthis.subscribed = true;\r\n\t}\r\n\r\n\treportBadURL(url: string) {\r\n\t\tthis.pageHistory = this.pageHistory.filter(path => path !== url);\r\n\t}\r\n\r\n\tback(): void {\r\n\t\tif (this.pageHistory.length === 0) {\r\n\t\t\tthis.goToFallbackUrl();\r\n\t\t} else {\r\n\t\t\tthis.router.navigateByUrl(this.pageHistory.pop());\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\tprivate goToFallbackUrl(): void {\r\n\t\tthis.router.navigate(this.settings.route(FALLBACK_URL));\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {string} item The url string\r\n\t * @returns {void}\r\n\t */\r\n\tprivate addItemToHistory(item: string): void {\r\n\t\tif (this.pageHistory.length >= MAX_PAGE_HISTORY) {\r\n\t\t\tthis.pageHistory.shift();\r\n\t\t\tthis.pageHistory.push(item);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageHistory.push(item);\r\n\t\treturn;\r\n\t}\r\n}\r\n","export enum CmNumericValidatorVariation {\r\n\tPositive = 'Positive',\r\n\tPositiveOrZero = 'PositiveOrZero',\r\n\tNegative = 'Negative',\r\n\tNegativeOrZero = 'NegativeOrZero',\r\n\tInteger = 'Integer'\r\n}\r\n","import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\r\n\r\n/** @deprecated Use emailFormatValidator in combination with Angualr's email validator */\r\nexport function affiliationEmailValidator(formatStr?: string): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tif (!control.value) return null;\r\n\t\tlet passes = true;\r\n\t\tconst domain = control.value.includes('@') ? '@' + control.value.split('@')[1] : null;\r\n\r\n\t\t// Make sure it is a valid email\r\n\t\tconst validEmailErr = Validators.email(control);\r\n\r\n\t\tif (!formatStr || validEmailErr) {\r\n\t\t\t// If no format str provided (or it is null)\r\n\t\t\t// We only need to check the validity of the email\r\n\t\t\treturn validEmailErr ? { affEmail: true } : null;\r\n\t\t}\r\n\r\n\t\tif (passes) {\r\n\t\t\tconst blacklist = formatStr.charAt(0) === '!';\r\n\t\t\t// Split apart the formats and see if we are blacklisting or whitelisting\r\n\t\t\tconst formats = formatStr.split('|');\r\n\r\n\t\t\tif (formats[0].charAt(0) === '!') {\r\n\t\t\t\tformats[0] = formats[0].substring(1);\r\n\t\t\t}\r\n\r\n\t\t\t// Search for a format that ends with inputed email\r\n\t\t\tconst results = formats.find(format => domain?.toLowerCase()?.endsWith(format.toLowerCase()));\r\n\r\n\t\t\t// Passes if\r\n\t\t\t// \t\tIt is blacklisted and we did not find a match\r\n\t\t\t//\t\tOR\r\n\t\t\t//\t\tIt is whitelisted and we did find a match\r\n\t\t\tpasses = blacklist ? !results : !!results;\r\n\t\t}\r\n\r\n\t\treturn !passes ? { affEmail: true } : null;\r\n\t};\r\n}\r\n","import { UntypedFormArray, ValidatorFn } from '@angular/forms';\r\n\r\nexport function arrayNoMatchValidator(prop?: string): ValidatorFn {\r\n\treturn (arr: UntypedFormArray) => {\r\n\t\tconst valMap = prop ? arr.value.map(val => val[prop]) : arr.value.map(val => val);\r\n\t\treturn valMap.some(x => valMap.indexOf(x) !== valMap.lastIndexOf(x)) ? { arrayNoMatch: true } : null;\r\n\t};\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\nexport function combinedStringsLengthValidator(str1: string, str2: string, targetLength = 1): ValidatorFn {\r\n\treturn (group: UntypedFormGroup) => {\r\n\t\tconst controls = group.controls;\r\n\t\tconst string1 = controls[str1]?.value;\r\n\t\tconst string2 = controls[str2]?.value;\r\n\t\tif (!string1 && !string2) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\tif ((string1 || '').length + (string2 || '').length < targetLength) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcombinedStringsInvalid: true,\r\n\t\t\t\t};\r\n\t\t\t} else return null;\r\n\t\t}\r\n\t};\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\ntype DateComparitor = (prevDate: Date, currDate: Date) => boolean;\r\ninterface DateConfig {\r\n\tfields: string[];\r\n\tdateComparitor?: DateComparitor;\r\n\terrorKey?: string;\r\n}\r\n\r\nconst DATE_ERROR_KEY_DEFAULT = 'dateComparison';\r\nconst DATE_COMPARITOR_DEFAULT: DateComparitor = (prevDate: Date, currentDate: Date) => prevDate < currentDate;\r\n\r\nexport function dateComparitorValidator(dateConfig: DateConfig): ValidatorFn;\r\nexport function dateComparitorValidator(...fields: string[]): ValidatorFn;\r\nexport function dateComparitorValidator(...dateConfigOrFields: string[] | DateConfig[]): ValidatorFn {\r\n\tlet dates: string[];\r\n\tlet dateErrorKey: string;\r\n\tlet dateComparitor: DateComparitor;\r\n\tif (typeof dateConfigOrFields[0] === 'object') {\r\n\t\tconst dateConfig: DateConfig = dateConfigOrFields[0];\r\n\t\tdates = dateConfig.fields;\r\n\t\tdateErrorKey = dateConfig.errorKey || DATE_ERROR_KEY_DEFAULT;\r\n\t\tdateComparitor = dateConfig.dateComparitor || DATE_COMPARITOR_DEFAULT;\r\n\t} else {\r\n\t\tdates = dateConfigOrFields as string[];\r\n\t\tdateErrorKey = DATE_ERROR_KEY_DEFAULT;\r\n\t\tdateComparitor = DATE_COMPARITOR_DEFAULT;\r\n\t}\r\n\treturn (group: UntypedFormGroup) => {\r\n\t\tif (!group || !dates || !dates.length) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst values = dates\r\n\t\t\t.filter(dateCtrl => !!group.get(dateCtrl) && !!group.get(dateCtrl).value)\r\n\t\t\t.map(dateCtrl => group.get(dateCtrl).value);\r\n\t\tif (!values.length) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst valid = values.slice().reduce((validSoFar, value, idx, arr) => {\r\n\t\t\tif (!validSoFar) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (idx === 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tconst currentDate = new Date(value);\r\n\t\t\tconst prevDate = new Date(arr[idx - 1]);\r\n\t\t\treturn dateComparitor(prevDate, currentDate);\r\n\t\t}, true);\r\n\r\n\t\treturn valid ? null : { [dateErrorKey]: true };\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\n/**\r\n *\r\n * @param {string} format The format to check the domain against.\r\n * Prefix with ! to blacklist\r\n * Separate multiple domains with |\r\n * @returns {Object|null} error Null if the format is valid\r\n * @returns {boolean} error.invalidFormat True if the format is invalid\r\n */\r\nexport function emailFormatValidator(format: string): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst err = { invalidFormat: true };\r\n\r\n\t\tif (!control.value || !control.value.includes('@')) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t// If there is a ! in front, we are blacklisting\r\n\t\tconst isBlacklist = format.charAt(0) === '!';\r\n\r\n\t\tconst formatHaystack = format.split('|');\r\n\t\tconst currentDomain = control.value.split('@')[1].toLowerCase();\r\n\t\tconst isInHaystack = formatHaystack.find(str => str.toLowerCase().endsWith(`@${currentDomain}`));\r\n\r\n\t\tif (isBlacklist) {\r\n\t\t\treturn isInHaystack ? err : null;\r\n\t\t}\r\n\r\n\t\t// Error if it is whitelisted and we did not find it\r\n\t\treturn isInHaystack ? null : err;\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function factorPoints(pointsMax: number, factor: number): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tif (!control.value || !pointsMax) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst pointsTimesFactor = Math.floor(+control.value * (factor || 1));\r\n\t\tconst lessThanMax = pointsTimesFactor <= pointsMax;\r\n\r\n\t\tif (lessThanMax) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn { pointsMax: true };\r\n\t\t}\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function singleFileExtensionValidator(extension: string | string[]): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst fileName = control.value;\r\n\t\tif (!fileName) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (typeof extension === 'string') {\r\n\t\t\textension = [extension];\r\n\t\t}\r\n\t\textension = extension.map(ext => (ext.charAt(0) === '.' ? ext.substring(1) : ext));\r\n\r\n\t\tconst fileExtension = fileName.split('.').pop();\r\n\t\tif (!fileExtension) {\r\n\t\t\treturn { fileExtension: true };\r\n\t\t}\r\n\r\n\t\tconst extensionIsAllowed = extension.findIndex(extension => extension === fileExtension) >= 0;\r\n\r\n\t\treturn extensionIsAllowed ? null : { fileExtension: true };\r\n\t};\r\n}\r\n","import { AbstractControl } from '@angular/forms';\r\n\r\nexport function getFilesFromControl(control: AbstractControl): File[] {\r\n\tconst files: File[] = control.value;\r\n\r\n\tif (!(files || []).length || !files.every((file) => file instanceof File)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn files;\r\n}\r\n","export function getFileSize(size: number | string): number {\r\n\treturn parseFloat((parseFloat(size.toString()) / (1024 * 1024)).toFixed(3));\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { getFilesFromControl } from './files-from-control.function';\r\nimport { getFileSize } from './get-file-size.function';\r\n\r\nexport function fileSizeTotalValidator(numberOfMegabytes: number): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst files = getFilesFromControl(control);\r\n\r\n\t\tif (!files) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn getFileSize(files.reduce((total, file) => total + file.size, 0)) > numberOfMegabytes\r\n\t\t\t? { fileSize: true }\r\n\t\t\t: null;\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { getFilesFromControl } from './files-from-control.function';\r\nimport { getFileSize } from './get-file-size.function';\r\n\r\nexport function fileSizeValidator(numberOfMegabytes: number): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst files = getFilesFromControl(control);\r\n\r\n\t\tif (!files) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn files.map(file => getFileSize(file.size || 0)).some(fileSize => fileSize > numberOfMegabytes)\r\n\t\t\t? { fileSize: true }\r\n\t\t\t: null;\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { AtsFileTypes } from '@ats/utility';\r\nimport { getFilesFromControl } from './files-from-control.function';\r\n\r\nexport function fileTypeValidator(acceptedTypes: AtsFileTypes[]): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst files = getFilesFromControl(control);\r\n\r\n\t\tif (!files) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst retVal = files\r\n\t\t\t.map(file => file.type)\r\n\t\t\t.every(fileType => acceptedTypes.some(acceptedType => fileType === acceptedType))\r\n\t\t\t? null\r\n\t\t\t: { fileType: true };\r\n\r\n\t\treturn retVal;\r\n\t};\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\nexport function allOrNone(fieldNames: string[], instanceName?: string): ValidatorFn {\r\n\tif (!fieldNames) throw new Error('Fields not supplied for validation');\r\n\r\n\treturn (group: UntypedFormGroup): any => {\r\n\t\tconst fields = fieldNames.map(name => group.get(name));\r\n\r\n\t\tif (\r\n\t\t\t!(\r\n\t\t\t\tfields.every(field => !field.value && field.value !== 0) ||\r\n\t\t\t\tfields.every(field => field.value || field.value === 0)\r\n\t\t\t)\r\n\t\t)\r\n\t\t\treturn instanceName ? { [instanceName]: true } : { allOrNone: true };\r\n\r\n\t\treturn null;\r\n\t};\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\nexport function atLeastOne(fieldNames: string[]): ValidatorFn {\r\n\tif (!fieldNames) throw new Error('Fields not supplied for validation');\r\n\r\n\treturn (group: UntypedFormGroup): any => {\r\n\t\tconst fields = fieldNames.map(name => group.get(name));\r\n\r\n\t\treturn !fields.some(field => field.value || field.value === 0) ? { atLeastOne: true } : null;\r\n\t};\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\nimport { AtsUtility } from '@ats/utility';\n\nexport function numericOrder(fieldNames: string[], instanceName?: string): ValidatorFn {\n\tif (!fieldNames) throw new Error('Fields not supplied for validation');\n\n\treturn (group: UntypedFormGroup): any => {\n\t\tconst retVal: any = fieldNames.reduce((retVal: any, field, idx, arr): any => {\n\t\t\tconst value = group.get(field)?.value;\n\n\t\t\t// If any of the values are not set, then we aren't ready to validate\n\t\t\tif (!AtsUtility.isTruthyOrZero(value) || isNaN(+value)) return { incomplete: true };\n\n\t\t\t// Already found an error, so no need to keep checking\n\t\t\tif (idx > 0 && retVal?.numericOrder) return retVal;\n\n\t\t\tconst previous = idx > 0 ? +group.get(arr[idx - 1])?.value : null;\n\n\t\t\tif (AtsUtility.isTruthyOrZero(previous) && !isNaN(previous) && previous <= +value)\n\t\t\t\treturn instanceName ? { [instanceName]: true } : { numericOrder: true };\n\n\t\t\treturn null;\n\t\t}, null);\n\t\treturn retVal?.incomplete ? null : retVal;\n\t};\n}\n","import { AbstractControl, AsyncValidatorFn } from '@angular/forms';\r\nexport function imageRatioValidator(ratio: number = 1): AsyncValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\treturn new Promise(resolve => {\r\n\t\t\tif (!control.value) {\r\n\t\t\t\tresolve(null);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst files = control.value;\r\n\t\t\tif (!(files instanceof FileList) || files.length === 0) {\r\n\t\t\t\tresolve(null);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst fileRatiosPassed = [];\r\n\t\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\t\tfileRatiosPassed.push(getFileRatio(files[i], ratio));\r\n\t\t\t}\r\n\t\t\tPromise.all(fileRatiosPassed).then(results => {\r\n\t\t\t\tconst err = results.every(passed => passed) ? null : { imageRatio: true };\r\n\t\t\t\tresolve(err);\r\n\t\t\t\treturn;\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n}\r\n\r\nfunction getFileRatio(file: File, ratio: number): Promise {\r\n\treturn new Promise(resolve => {\r\n\t\tconst reader = new FileReader();\r\n\t\treader.onloadend = () => {\r\n\t\t\tconst img = new Image();\r\n\t\t\timg.onload = () => {\r\n\t\t\t\tconst actualRatio =\r\n\t\t\t\t\timg.naturalHeight > img.naturalWidth\r\n\t\t\t\t\t\t? img.naturalWidth / img.naturalHeight\r\n\t\t\t\t\t\t: img.naturalHeight / img.naturalWidth;\r\n\t\t\t\tresolve(ratio === actualRatio);\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\t\t\timg.src = reader.result as string;\r\n\t\t};\r\n\t\treader.readAsDataURL(file as Blob);\r\n\t});\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\nexport function lessThanOrEqualToValidator(lessThanOrEqualToField: string, checkAgainstField: string): ValidatorFn {\r\n\treturn (group: UntypedFormGroup) => {\r\n\t\tconst lessThanField: any = group.get(lessThanOrEqualToField)?.value;\r\n\t\tconst checkField: any = group.get(checkAgainstField)?.value;\r\n\r\n\t\tif (!lessThanField && !checkField) return null;\r\n\t\tif (isNaN(lessThanField) && !Array.isArray(lessThanField)) return null;\r\n\t\tif (isNaN(checkField) && !Array.isArray(checkField)) return null;\r\n\r\n\t\tconst lessThanValue: number = Array.isArray(lessThanField) ? lessThanField?.length : +lessThanField;\r\n\t\tconst checkValue: number = Array.isArray(checkField) ? checkField?.length : +checkField;\r\n\r\n\t\treturn lessThanValue <= checkValue ? null : { lessThanOrEqualTo: true };\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { CmNumericValidatorVariation } from './numeric-validator-variants.enum';\r\n\r\n\r\nexport function numericValidator(variant?: CmNumericValidatorVariation): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst value = control.value?.toString();\r\n\t\tif (!value)\r\n\t\t\treturn null;\r\n\r\n\t\tconst numeric = +value;\r\n\r\n\t\tif (isNaN(numeric))\r\n\t\t\treturn { numeric: true };\r\n\r\n\t\tswitch(variant) {\r\n\t\t\tcase CmNumericValidatorVariation.Integer:\r\n\t\t\t\treturn Number.isInteger(numeric) ? null : { numeric: true };\r\n\t\t\tcase CmNumericValidatorVariation.Positive:\r\n\t\t\t\treturn numeric > 0 ? null : { numeric: true };\r\n\t\t\tcase CmNumericValidatorVariation.PositiveOrZero:\r\n\t\t\t\treturn numeric >= 0 ? null : { numeric: true };\r\n\t\t\tcase CmNumericValidatorVariation.Negative:\r\n\t\t\t\treturn numeric < 0 ? null : { numeric: true };\r\n\t\t\tcase CmNumericValidatorVariation.NegativeOrZero:\r\n\t\t\t\treturn numeric <= 0 ? null : { numeric: true };\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\n// Checks if passwords match\r\nexport function passwordMatchValidator(password: string, passwordConfirmation: string): ValidatorFn {\r\n\treturn (group: UntypedFormGroup) => {\r\n\t\tif (!group.get(password).value || !group.get(passwordConfirmation).value) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn group.get(password).value !== group.get(passwordConfirmation).value ? { passwordMatch: true } : null;\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function stringExclusionValidator(...args: string[]): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst password: string = control.value?.toLowerCase();\r\n\t\tlet passes = true;\r\n\r\n\t\targs.forEach(val => {\r\n\t\t\tif (!passes || !val) return;\r\n\t\t\tpasses = val.length > 2 && !password?.includes(val.replace(/ +/g, ' ').trim().toLowerCase());\r\n\t\t});\r\n\r\n\t\treturn !passes ? { stringExclusion: true } : null;\r\n\t};\r\n}\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\nexport function stringExclusionFormValidator(fieldToCheck: string, exclusionFields: string[]): ValidatorFn {\r\n\treturn (group: UntypedFormGroup) => {\r\n\t\tlet passes: boolean = true;\r\n\t\tconst field: string = group.get(fieldToCheck).value;\r\n\r\n\t\texclusionFields.forEach(val => {\r\n\t\t\tif (!passes || !val) return;\r\n\r\n\t\t\tconst exclusionVal: string = group.get(val).value;\r\n\r\n\t\t\tpasses =\r\n\t\t\t\texclusionVal?.length > 2\r\n\t\t\t\t\t? !field.includes(exclusionVal?.replace(/ +/g, ' ').trim().toLowerCase())\r\n\t\t\t\t\t: true;\r\n\t\t});\r\n\r\n\t\treturn !passes ? { exclusionMatch: true } : null;\r\n\t};\r\n}\r\n","import { UntypedFormControl, ValidatorFn } from '@angular/forms';\n\nexport function uniqueInValidator(values: string[]): ValidatorFn {\n\treturn (control: UntypedFormControl) => {\n\t\treturn !control || !values || values.includes(control.value) ? { uniqueIn: true } : null;\n\t};\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function vuePostalCodeValidator(country: 'USA' | 'CAN'): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\t// ==== Regex Rules ======\r\n\t\t// Must be 5 numbers.\r\n\t\tconst usaStandardPostalCode = /^([0-9]{5})$/;\r\n\t\t// ==== Regex Rules ======\r\n\t\t// Must be 9 numbers. The dash must be between the first 5 and last four numbers.\r\n\t\tconst usaExtendedPostalCode = /^([0-9]{5})([-]{1})([0-9]{4})$/;\r\n\t\t// ==== Regex Rules ======\r\n\t\t// Must follow the following format: letter/number/letter/number/letter/number\r\n\t\t// The letters are case insensitive.\r\n\t\tconst canPostalCode = /^([a-zA-Z]{1})([0-9]{1})([a-zA-Z]{1})([0-9]{1})([a-zA-Z]{1})([0-9]{1})$/;\r\n\r\n\t\tif (country === 'USA') {\r\n\t\t\treturn !control.value ||\r\n\t\t\t\tusaStandardPostalCode.test(control.value) ||\r\n\t\t\t\tusaExtendedPostalCode.test(control.value)\r\n\t\t\t\t? null\r\n\t\t\t\t: { vueUsaPostalCode: true };\r\n\t\t} else {\r\n\t\t\treturn !control.value || canPostalCode.test(control.value) ? null : { vueCanadaPostalCode: true };\r\n\t\t}\r\n\t};\r\n}\r\n","import { affiliationEmailValidator } from './affiliation-email.validator';\r\nimport { arrayNoMatchValidator } from './array-no-match.validator';\r\nimport { combinedStringsLengthValidator } from './combined-strings-length.validator';\r\nimport { dateComparitorValidator } from './date-comparitor.validator';\r\nimport { emailFormatValidator } from './email-format.validator';\r\nimport { factorPoints } from './factor-points.validator';\r\nimport { singleFileExtensionValidator } from './files/file-extension.validator';\r\nimport { fileSizeTotalValidator } from './files/file-size-total.validator';\r\nimport { fileSizeValidator } from './files/file-size.validator';\r\nimport { fileTypeValidator } from './files/file-type.validator';\r\nimport { allOrNone } from './form/all-or-none.validator';\r\nimport { atLeastOne } from './form/at-least-one.validator';\r\nimport { numericOrder } from './form/numeric-order.validator';\r\nimport { imageRatioValidator } from './image-ratio.validator';\r\nimport { lessThanOrEqualToValidator } from './less-than-equal-to.validator';\r\nimport { mixedCharactersValidator } from './mixed-characters.validator';\r\nimport { numericValidator } from './numeric.validator';\r\nimport { passwordMatchValidator } from './password-match.validator';\r\nimport { stringExclusionValidator } from './password-name-and-login-exclusions.validator';\r\nimport { stringExclusionFormValidator } from './password-name-and-login-form-exclusions.validator';\r\nimport { singleByteValidator } from './single-byte.validator';\r\nimport { spacesOnly } from './spaces-only.validator';\r\nimport { tripleSequentialCharactersValidator } from './triple-sequential-characters.validator';\r\nimport { uniqueInValidator } from './unique-from.validator';\r\nimport { urlValidator } from './url.validator';\r\nimport { vuePostalCodeValidator, vueUsaCanadaPhoneFormatValidator, vueZerosPhoneFormatValidator } from './vue';\r\n\r\n// TODO:BLG Organize these into subfolders\r\n\r\nexport class CmValidators {\r\n\t// single field validators\r\n\tpublic static mixedCharacters = mixedCharactersValidator();\r\n\tpublic static stringExclusionValidator = stringExclusionValidator;\r\n\tpublic static factorPointsValidator = factorPoints;\r\n\tpublic static tripleSequentialCharacters = tripleSequentialCharactersValidator();\r\n\tpublic static spacesOnly = spacesOnly();\r\n\tpublic static emailFormat = emailFormatValidator;\r\n\t/** @deprecated Use emailFormat validator in combination with Angualr's email validator */\r\n\tpublic static affiliationEmailRequirements = affiliationEmailValidator;\r\n\tpublic static urlValidator = urlValidator();\r\n\tpublic static fileSizeValidator = fileSizeValidator;\r\n\tpublic static fileSizeTotalValidator = fileSizeTotalValidator;\r\n\tpublic static fileTypeValidator = fileTypeValidator;\r\n\tpublic static singleFileExtensionValidator = singleFileExtensionValidator;\r\n\tpublic static imageRatioValidator = imageRatioValidator;\r\n\tpublic static uniqueInValidator = uniqueInValidator;\r\n\tpublic static numeric = numericValidator;\r\n\tpublic static vuePostalCode = vuePostalCodeValidator;\r\n\tpublic static vueUsaPhoneFormat = vueUsaCanadaPhoneFormatValidator();\r\n\tpublic static vueZerosPhoneFormat = vueZerosPhoneFormatValidator();\r\n\tpublic static singleByte = singleByteValidator();\r\n\r\n\t// form array validators\r\n\tpublic static arrayNoMatchValidator = arrayNoMatchValidator;\r\n\t// form validators\r\n\tpublic static allOrNone = allOrNone;\r\n\tpublic static atLeastOne = atLeastOne;\r\n\tpublic static dateComparitor = dateComparitorValidator;\r\n\tpublic static lessThanOrEqualToValidator = lessThanOrEqualToValidator;\r\n\tpublic static numericOrder = numericOrder;\r\n\tpublic static passwordMatch = passwordMatchValidator;\r\n\tpublic static combinedStringsLengthValidator = combinedStringsLengthValidator;\r\n\tpublic static stringExclusionFormValidator = stringExclusionFormValidator;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\n// Cannot contain only letters\r\nexport function mixedCharactersValidator(): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst hasLetters = /([a-z]+)/i;\r\n\t\tconst nonLetters = /([^a-z]+)/i;\r\n\r\n\t\treturn (hasLetters.test(control.value) && nonLetters.test(control.value)) || control.value === ''\r\n\t\t\t? null\r\n\t\t\t: { mixedCharacters: true };\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\n// Cannot contain the login or name\r\nexport function tripleSequentialCharactersValidator(): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst passwordString: string = control.value;\r\n\t\tif (!passwordString) return null;\r\n\t\tlet containsTriples: boolean = false;\r\n\r\n\t\tfor (let i = 0; i < passwordString.length - 2; i++) {\r\n\t\t\tif (passwordString[i] === passwordString[i + 1] && passwordString[i] === passwordString[i + 2]) {\r\n\t\t\t\tcontainsTriples = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn containsTriples ? { tripleSequentialCharacters: true } : null;\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function spacesOnly(): ValidatorFn {\r\n\treturn (control: AbstractControl) => (control.value && control.value.trim() === '' ? { spacesOnly: true } : null);\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n\tconst regex = new RegExp('(https?://)([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\r\n\treturn (control: AbstractControl) => {\r\n\t\tif (!control.value) return null;\r\n\t\tconst validUrl = regex.test(control.value);\r\n\t\treturn validUrl ? null : { invalidUrl: true };\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\n// These two countries were decided based on the db where ic_phone_cc_prefix = 1\r\nexport function vueUsaCanadaPhoneFormatValidator(): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst lengthOfNumbers: number[] = (control.value || '').split('').filter(char => !isNaN(char) && char !== ' ');\r\n\r\n\t\treturn !control.value || lengthOfNumbers.length === 10 ? null : { vueUsaCanadaPhoneFormat: true };\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function vueZerosPhoneFormatValidator(): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst allNumbersAreZero = (control.value || '').split('').every(char => {\r\n\t\t\treturn isNaN(char) ? true : +char === 0;\r\n\t\t});\r\n\r\n\t\treturn !control.value || !allNumbersAreZero ? null : { vueZerosPhoneFormat: true };\r\n\t};\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function singleByteValidator(): ValidatorFn {\r\n\treturn (control: AbstractControl) => {\r\n\t\tconst value = control.value?.toString();\r\n\r\n\t\tif (!value) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn Array.from(value).every((_, idx) => value.charCodeAt(idx) < 255)\r\n\t\t\t? null\r\n\t\t\t: {\r\n\t\t\t\t\tnotSingleByte: true,\r\n\t\t\t };\r\n\t};\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Inject, Injectable, RendererFactory2 } from '@angular/core';\r\nimport { PortalType } from '@ats/api/cm';\r\nimport {\r\n\tBehaviorSubject,\r\n\tcatchError,\r\n\tdistinctUntilChanged,\r\n\tfilter,\r\n\tmap,\r\n\tObservable,\r\n\tof,\r\n\tshareReplay,\r\n\tswitchMap,\r\n\ttake,\r\n} from 'rxjs';\r\nimport {\r\n\tCLIENT_SERVICE_CONFIG,\r\n\tClientConfig,\r\n\tClientServiceConfig,\r\n\tClientTheme,\r\n\tDEFAULT_CLIENT_CONFIG,\r\n} from '../models';\r\n\r\nconst temporaryClientThemes: Map = new Map([]);\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ClientService {\r\n\tprivate readonly _client = new BehaviorSubject(null);\r\n\tprivate readonly _theme = new BehaviorSubject(null);\r\n\treadonly client$: Observable = this._client.asObservable().pipe(filter(Boolean));\r\n\treadonly theme$ = this._theme.asObservable();\r\n\treadonly config$: Observable;\r\n\tprivate readonly renderer = inject(RendererFactory2)?.createRenderer(null, null);\r\n\r\n\tconstructor(\r\n\t\t@Inject(CLIENT_SERVICE_CONFIG) private readonly config: ClientServiceConfig,\r\n\t\tprivate readonly http: HttpClient,\r\n\t\t@Inject(DOCUMENT) private doc: Document\r\n\t) {\r\n\t\tthis.config$ = this.fetchClientConfig$();\r\n\t}\r\n\r\n\tget clientSnapshot(): string | null {\r\n\t\treturn this._client.getValue();\r\n\t}\r\n\r\n\tinitialize$(client: string): Observable {\r\n\t\tif (this.config.portal === PortalType.InternalPortal) {\r\n\t\t\tclient = 'cmdemo';\r\n\t\t}\r\n\t\tthis.setClient(client);\r\n\t\tthis.setClientTheme(client);\r\n\t\treturn this.client$.pipe(map(Boolean), take(1));\r\n\t}\r\n\r\n\tprivate setClient(client: string) {\r\n\t\tthis._client.next(client);\r\n\t}\r\n\r\n\tprivate setClientTheme(client: string): void {\r\n\t\tclient = temporaryClientThemes.get(client) || client;\r\n\r\n\t\tthis.doc.body.classList.add('theme-default');\r\n\t\tif (client !== 'cmdemo') {\r\n\t\t\tconst link = this.renderer.createElement('link');\r\n\t\t\tthis.renderer.setAttribute(link, 'rel', 'stylesheet');\r\n\t\t\tthis.renderer.setAttribute(link, 'type', 'text/css');\r\n\t\t\tthis.renderer.setAttribute(link, 'href', `theme-${client}.css`);\r\n\t\t\tthis.doc.head.appendChild(link);\r\n\t\t\tthis.doc.body.classList.add(`theme-${client}`);\r\n\t\t}\r\n\r\n\t\tthis._theme.next({\r\n\t\t\tname: client,\r\n\t\t\tlogo: `/assets/client-assets/${client}/logo.png`,\r\n\t\t\tlogoKO: `/assets/client-assets/${client}/logo-knockout.png`,\r\n\t\t\tlogoEmail: `/assets/client-assets/${client}/logo-email.png`,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate fetchClientConfig$(): Observable {\r\n\t\treturn this.client$.pipe(\r\n\t\t\tfilter(client => !!client),\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\tswitchMap(client =>\r\n\t\t\t\tthis.http.get(\r\n\t\t\t\t\t`assets/client-assets/${client}/config.json`,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t'X-bypass-token': 'true',\r\n\t\t\t\t\t\t\t'ichabod-suppress-error-log': 'true',\r\n\t\t\t\t\t\t\t'ichabod-suppress-error': 'true',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\tcatchError(() => of(null)),\r\n\t\t\tmap(config => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...DEFAULT_CLIENT_CONFIG,\r\n\t\t\t\t\t...(config || {}),\r\n\t\t\t\t\t...(this.config.portal === PortalType.SponsorPortal\r\n\t\t\t\t\t\t? config?.sp || {}\r\n\t\t\t\t\t\t: config?.cp || {}),\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\tshareReplay(1)\r\n\t\t);\r\n\t}\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { PortalType } from '@ats/api/cm';\r\n\r\nexport interface ClientServiceConfig {\r\n\tportal: PortalType;\r\n}\r\n\r\nexport const CLIENT_SERVICE_CONFIG = new InjectionToken(\r\n\t'Client Service Configuration'\r\n);\r\n\r\nexport interface ClientConfig {\r\n\tpageSizeOptions: number[];\r\n\tpageSize: number;\r\n\tdisableEmailSignatureLogo: boolean;\r\n\tinitialViewState: 'table' | 'grid';\r\n\tcandidateSearch: {\r\n\t\toptions: string[];\r\n\t\tselected: string;\r\n\t};\r\n}\r\n\r\nexport const DEFAULT_CLIENT_CONFIG: ClientConfig = {\r\n\tpageSizeOptions: [25, 50, 100],\r\n\tpageSize: 25,\r\n\tdisableEmailSignatureLogo: false,\r\n\tinitialViewState: 'grid',\r\n\tcandidateSearch: {\r\n\t\toptions: [],\r\n\t\tselected: 'externalId',\r\n\t},\r\n};\r\n\r\nexport interface ClientTheme {\r\n\tname: string;\r\n\tlogo: string;\r\n\tlogoKO: string;\r\n\tlogoEmail: string;\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { ClientService } from '../services/client.service';\r\n\r\nexport const clientInitializer = (clientService: ClientService) => (): Observable => {\r\n\tlet [client] = window.location.pathname.split('/').filter(path => !!path);\r\n\r\n\treturn clientService.initialize$(client);\r\n};\r\n","import { InjectionToken } from '@angular/core';\r\nimport { PortalType } from '@ats/api/cm';\r\n\r\nexport interface CultureServiceConfig {\r\n\tapi: string;\r\n\tportal: PortalType;\r\n}\r\n\r\nexport const CULTURE_SERVICE_CONFIG = new InjectionToken(\r\n\t'Culture Service Configuration'\r\n);\r\n\r\nexport interface Culture {\r\n\tcode: string;\r\n\tlabel: string;\r\n\tnativeLabel: string;\r\n}\r\n\r\nexport interface ClientCultureAPIResponse {\r\n\t[key: string]: {\r\n\t\tlabel: string;\r\n\t\tnativeLabel: string;\r\n\t\tietfBcp47Name: string;\r\n\t\twindows3CharName: string;\r\n\t\tiso3CharName: string;\r\n\t};\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { CultureService } from '../services/culture.service';\r\n\r\nexport const cultureInitializer =\r\n\t(cultureService: CultureService, enableLanguageParam = false) =>\r\n\t(): Observable => {\r\n\t\tlet [_, cultureCode] = window.location.pathname.split('/').filter(path => !!path);\r\n\r\n\t\t// If the language parameter is enabled and set, that culture is loaded.\r\n\t\tif (enableLanguageParam) {\r\n\t\t\tconst url: URL = new URL(window.location.href);\r\n\t\t\tconst language = url.searchParams.get('language');\r\n\t\t\tcultureCode = language ? language : cultureCode;\r\n\t\t}\r\n\r\n\t\treturn cultureService.initialize$(cultureCode);\r\n\t};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { PortalType } from '@ats/api/cm';\r\nimport { ClientService } from '@cm/core/client';\r\nimport {\r\n\tBehaviorSubject,\r\n\tcatchError,\r\n\tdistinctUntilChanged,\r\n\tfilter,\r\n\tmap,\r\n\tObservable,\r\n\tof,\r\n\tshareReplay,\r\n\tswitchMap,\r\n\ttake,\r\n} from 'rxjs';\r\nimport { ClientCultureAPIResponse, Culture, CULTURE_SERVICE_CONFIG, CultureServiceConfig } from '../models';\r\n\r\nconst DEFAULT_CULTURE: Culture = {\r\n\tcode: 'en',\r\n\tlabel: 'English',\r\n\tnativeLabel: 'English',\r\n};\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CultureService {\r\n\tprivate readonly _culture = new BehaviorSubject(null);\r\n\treadonly culture$: Observable = this._culture.asObservable().pipe(filter(Boolean));\r\n\treadonly existingCultures$: Observable;\r\n\treadonly supportedCultures$: Observable;\r\n\tconstructor(\r\n\t\t@Inject(CULTURE_SERVICE_CONFIG) private readonly config: CultureServiceConfig,\r\n\t\tprivate readonly http: HttpClient,\r\n\t\tprivate readonly clientService: ClientService\r\n\t) {\r\n\t\tthis.existingCultures$ = this.fetchExistingCultures$().pipe(shareReplay(1));\r\n\t\tthis.supportedCultures$ = this.fetchSupportedCultures$().pipe(shareReplay(1));\r\n\t}\r\n\r\n\tget cultureSnapshot(): string | null {\r\n\t\treturn this._culture.getValue()?.code ?? null;\r\n\t}\r\n\r\n\tinitialize$(cultureCode: string): Observable {\r\n\t\tif (this.config.portal === PortalType.InternalPortal) {\r\n\t\t\tthis.setCulture(DEFAULT_CULTURE);\r\n\t\t\treturn of(true);\r\n\t\t}\r\n\r\n\t\treturn this.fetchSupportedCultures$().pipe(\r\n\t\t\tcatchError(() => of(false as false)),\r\n\t\t\tmap((cultures: Culture[] | false) => {\r\n\t\t\t\tthis.setCulture(\r\n\t\t\t\t\t(cultures || []).find(cltr => cltr.code === cultureCode) ||\r\n\t\t\t\t\t\t(cultures || []).find(cltr => cltr.code === 'en') ||\r\n\t\t\t\t\t\tDEFAULT_CULTURE\r\n\t\t\t\t);\r\n\t\t\t\treturn !!cultures;\r\n\t\t\t}),\r\n\t\t\ttake(1)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate setCulture(culture: Culture) {\r\n\t\tthis._culture.next(culture);\r\n\t}\r\n\r\n\t/* istanbul ignore next: private method */\r\n\tprivate fetchExistingCultures$(): Observable {\r\n\t\treturn this.clientService.client$.pipe(\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\tswitchMap(client =>\r\n\t\t\t\tthis.http.get(`${this.config.api}/${client}/client-cultures`)\r\n\t\t\t),\r\n\t\t\tmap(cultures =>\r\n\t\t\t\tObject.keys(cultures).map(code => ({\r\n\t\t\t\t\tcode,\r\n\t\t\t\t\tlabel: cultures[code].label,\r\n\t\t\t\t\tnativeLabel: cultures[code].nativeLabel,\r\n\t\t\t\t}))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t/* istanbul ignore next: private method */\r\n\tprivate fetchSupportedCultures$(): Observable {\r\n\t\treturn this.clientService.client$.pipe(\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\tswitchMap(client =>\r\n\t\t\t\tthis.http.get(`${this.config.api}/${client}/supported-cultures`)\r\n\t\t\t),\r\n\t\t\tmap(cultures =>\r\n\t\t\t\tObject.keys(cultures).map(code => ({\r\n\t\t\t\t\tcode,\r\n\t\t\t\t\tlabel: cultures[code].label,\r\n\t\t\t\t\tnativeLabel: cultures[code].nativeLabel,\r\n\t\t\t\t}))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","import { BadgeType, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Badge Type`;\r\n\r\nexport type CPBadgeTypeLocs = 'CPBadgeTypeEnumC' | 'CPBadgeTypeEnumE' | 'CPBadgeTypeEnumR';\r\n\r\nexport type SPBadgeTypeLocs = 'SPBadgeTypeEnumC' | 'SPBadgeTypeEnumE' | 'SPBadgeTypeEnumR';\r\n\r\nexport const cpBadgeTypeEnumLocs: LocDefs = {\r\n\tCPBadgeTypeEnumC: {\r\n\t\tdefaultValue: 'Credential',\r\n\t\tdisplayPath: `${dpRoot}|${BadgeType.C}`,\r\n\t\tdescription: `System value for '${BadgeType.C}' badge type`,\r\n\t\tlegacyName: 'Share.CertMetricsBadging/System.Enum.BadgeType.c',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPBadgeTypeEnumE: {\r\n\t\tdefaultValue: 'Exam',\r\n\t\tdisplayPath: `${dpRoot}|${BadgeType.E}`,\r\n\t\tdescription: `System value for '${BadgeType.E}' badge type`,\r\n\t\tlegacyName: 'Share.CertMetricsBadging/System.Enum.BadgeType.e',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPBadgeTypeEnumR: {\r\n\t\tdefaultValue: 'Other Requirement',\r\n\t\tdisplayPath: `${dpRoot}|${BadgeType.R}`,\r\n\t\tdescription: `System value for '${BadgeType.R}' badge type`,\r\n\t\tlegacyName: 'Share.CertMetricsBadging/System.Enum.BadgeType.r',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spBadgeTypeEnumLocs: LocDefs = {\r\n\tSPBadgeTypeEnumC: {\r\n\t\tdefaultValue: 'Credential',\r\n\t\tdisplayPath: `${dpRoot}|${BadgeType.C}`,\r\n\t\tdescription: `System value for '${BadgeType.C}' badge type`,\r\n\t\tlegacyName: 'Share.CertMetricsBadging/System.Enum.BadgeType.c',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPBadgeTypeEnumE: {\r\n\t\tdefaultValue: 'Exam',\r\n\t\tdisplayPath: `${dpRoot}|${BadgeType.E}`,\r\n\t\tdescription: `System value for '${BadgeType.E}' badge type`,\r\n\t\tlegacyName: 'Share.CertMetricsBadging/System.Enum.BadgeType.e',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPBadgeTypeEnumR: {\r\n\t\tdefaultValue: 'Other Requirement',\r\n\t\tdisplayPath: `${dpRoot}|${BadgeType.R}`,\r\n\t\tdescription: `System value for '${BadgeType.R}' badge type`,\r\n\t\tlegacyName: 'Share.CertMetricsBadging/System.Enum.BadgeType.r',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const BADGE_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpBadgeTypeEnumLocs,\r\n\t...spBadgeTypeEnumLocs,\r\n});\r\n\r\nexport type CPBadgeTypeEnumLocType = LocMap;\r\nexport type SPBadgeTypeEnumLocType = LocMap;\r\n\r\nexport const cpBadgeTypeKeys: { [key in BadgeType]: keyof CPBadgeTypeEnumLocType } = {\r\n\tc: BADGE_TYPE_ENUM_LOCS.CPBadgeTypeEnumC,\r\n\te: BADGE_TYPE_ENUM_LOCS.CPBadgeTypeEnumE,\r\n\tr: BADGE_TYPE_ENUM_LOCS.CPBadgeTypeEnumR,\r\n};\r\n\r\nexport const spBadgeTypeKeys: { [key in BadgeType]: keyof SPBadgeTypeEnumLocType } = {\r\n\tc: BADGE_TYPE_ENUM_LOCS.SPBadgeTypeEnumC,\r\n\te: BADGE_TYPE_ENUM_LOCS.SPBadgeTypeEnumE,\r\n\tr: BADGE_TYPE_ENUM_LOCS.SPBadgeTypeEnumR,\r\n};\r\n","import { BcatGrantType, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Benefit Catalog Grant Type`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPBcatGrantTypeLocs =\r\n\t| 'CPBcatGrantTypeEnumManual'\r\n\t| 'CPBcatGrantTypeEnumOncePerCcat'\r\n\t| 'CPBcatGrantTypeEnumOncePerCcatAchievedLogic'\r\n\t| 'CPBcatGrantTypeEnumOncePerCcatAchievement'\r\n\t| 'CPBcatGrantTypeEnumOncePerCcatList';\r\n\r\nexport type SPBcatGrantTypeLocs =\r\n\t| 'SPBcatGrantTypeEnumManual'\r\n\t| 'SPBcatGrantTypeEnumOncePerCcat'\r\n\t| 'SPBcatGrantTypeEnumOncePerCcatAchievedLogic'\r\n\t| 'SPBcatGrantTypeEnumOncePerCcatAchievement'\r\n\t| 'SPBcatGrantTypeEnumOncePerCcatList';\r\n\r\nexport const cpBcatGrantTypeEnumLocs: LocDefs = {\r\n\tCPBcatGrantTypeEnumManual: {\r\n\t\tdefaultValue: 'Manual',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.Manual}`,\r\n\t\tdescription: `System value for '${BcatGrantType.Manual}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.Manual',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatGrantTypeEnumOncePerCcat: {\r\n\t\tdefaultValue: 'Once per credential',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcat}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcat}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcat',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatGrantTypeEnumOncePerCcatAchievedLogic: {\r\n\t\tdefaultValue: 'Once Per Logic',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcatAchievedLogic}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcatAchievedLogic}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcatAchievedLogic',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatGrantTypeEnumOncePerCcatAchievement: {\r\n\t\tdefaultValue: 'Once per event',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcatAchievement}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcatAchievement}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcatAchievement',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatGrantTypeEnumOncePerCcatList: {\r\n\t\tdefaultValue: 'Once',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcatList}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcatList}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcatList',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spBcatGrantTypeEnumLocs: LocDefs = {\r\n\tSPBcatGrantTypeEnumManual: {\r\n\t\tdefaultValue: 'Manual',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.Manual}`,\r\n\t\tdescription: `System value for '${BcatGrantType.Manual}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.Manual',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatGrantTypeEnumOncePerCcat: {\r\n\t\tdefaultValue: 'Once per credential',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcat}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcat}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcat',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatGrantTypeEnumOncePerCcatAchievedLogic: {\r\n\t\tdefaultValue: 'Once Per Logic',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcatAchievedLogic}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcatAchievedLogic}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcatAchievedLogic',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatGrantTypeEnumOncePerCcatAchievement: {\r\n\t\tdefaultValue: 'Once per event',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcatAchievement}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcatAchievement}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcatAchievement',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatGrantTypeEnumOncePerCcatList: {\r\n\t\tdefaultValue: 'Once',\r\n\t\tdisplayPath: `${dpRoot}|${BcatGrantType.OncePerCcatList}`,\r\n\t\tdescription: `System value for '${BcatGrantType.OncePerCcatList}' Benefit Catalog grant type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatGrantType.OncePerCcatList',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const BCAT_GRANT_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpBcatGrantTypeEnumLocs,\r\n\t...spBcatGrantTypeEnumLocs,\r\n});\r\n\r\nexport type CPBcatGrantTypeEnumLocType = LocMap;\r\nexport type SPBcatGrantTypeEnumLocType = LocMap;\r\n\r\nexport const cpBcatGrantTypeKeys: { [key in BcatGrantType]: keyof CPBcatGrantTypeEnumLocType } = {\r\n\t[BcatGrantType.Manual]: BCAT_GRANT_TYPE_ENUM_LOCS.CPBcatGrantTypeEnumManual,\r\n\t[BcatGrantType.OncePerCcat]: BCAT_GRANT_TYPE_ENUM_LOCS.CPBcatGrantTypeEnumOncePerCcat,\r\n\t[BcatGrantType.OncePerCcatAchievedLogic]:\r\n\t\tBCAT_GRANT_TYPE_ENUM_LOCS.CPBcatGrantTypeEnumOncePerCcatAchievedLogic,\r\n\t[BcatGrantType.OncePerCcatAchievement]:\r\n\t\tBCAT_GRANT_TYPE_ENUM_LOCS.CPBcatGrantTypeEnumOncePerCcatAchievement,\r\n\t[BcatGrantType.OncePerCcatList]: BCAT_GRANT_TYPE_ENUM_LOCS.CPBcatGrantTypeEnumOncePerCcatList,\r\n};\r\n\r\nexport const spBcatGrantTypeKeys: { [key in BcatGrantType]: keyof SPBcatGrantTypeEnumLocType } = {\r\n\t[BcatGrantType.Manual]: BCAT_GRANT_TYPE_ENUM_LOCS.SPBcatGrantTypeEnumManual,\r\n\t[BcatGrantType.OncePerCcat]: BCAT_GRANT_TYPE_ENUM_LOCS.SPBcatGrantTypeEnumOncePerCcat,\r\n\t[BcatGrantType.OncePerCcatAchievedLogic]:\r\n\t\tBCAT_GRANT_TYPE_ENUM_LOCS.SPBcatGrantTypeEnumOncePerCcatAchievedLogic,\r\n\t[BcatGrantType.OncePerCcatAchievement]:\r\n\t\tBCAT_GRANT_TYPE_ENUM_LOCS.SPBcatGrantTypeEnumOncePerCcatAchievement,\r\n\t[BcatGrantType.OncePerCcatList]: BCAT_GRANT_TYPE_ENUM_LOCS.SPBcatGrantTypeEnumOncePerCcatList,\r\n};\r\n","import { BcatType, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Benefit Catalog Type|`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPBcatTypeLocs =\r\n\t| 'CPBcatTypeEnumDownload'\r\n\t| 'CPBcatTypeEnumLineup'\r\n\t| 'CPBcatTypeEnumStampedPdf'\r\n\t| 'CPBcatTypeEnumTokenGlobal'\r\n\t| 'CPBcatTypeEnumTokenUnique'\r\n\t| 'CPBcatTypeEnumUrl';\r\n\r\nexport type SPBcatTypeLocs =\r\n\t| 'SPBcatTypeEnumDownload'\r\n\t| 'SPBcatTypeEnumLineup'\r\n\t| 'SPBcatTypeEnumStampedPdf'\r\n\t| 'SPBcatTypeEnumTokenGlobal'\r\n\t| 'SPBcatTypeEnumTokenUnique'\r\n\t| 'SPBcatTypeEnumUrl';\r\n\r\nexport const cpBcatTypeEnumLocs: LocDefs = {\r\n\tCPBcatTypeEnumDownload: {\r\n\t\tdefaultValue: 'Download',\r\n\t\tdisplayPath: `${dpRoot}Download`,\r\n\t\tdescription: `System value for 'Download' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.Download',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatTypeEnumLineup: {\r\n\t\tdefaultValue: 'Lineup',\r\n\t\tdisplayPath: `${dpRoot}Lineup`,\r\n\t\tdescription: `System value for 'Lineup' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.Lineup',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatTypeEnumStampedPdf: {\r\n\t\tdefaultValue: 'Stamped PDF',\r\n\t\tdisplayPath: `${dpRoot}Stamped PDF`,\r\n\t\tdescription: `System value for 'Stamped PDF' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.StampedPDF',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatTypeEnumTokenGlobal: {\r\n\t\tdefaultValue: 'Global Token',\r\n\t\tdisplayPath: `${dpRoot}Global Token`,\r\n\t\tdescription: `System value for 'Global Token' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.TokenGlobal',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatTypeEnumTokenUnique: {\r\n\t\tdefaultValue: 'Individual Token',\r\n\t\tdisplayPath: `${dpRoot}Unique Token`,\r\n\t\tdescription: `System value for 'Unique Token' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.TokenUnique',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPBcatTypeEnumUrl: {\r\n\t\tdefaultValue: 'Link',\r\n\t\tdisplayPath: `${dpRoot}Url`,\r\n\t\tdescription: `System value for 'Url' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.Url',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spBcatTypeEnumLocs: LocDefs = {\r\n\tSPBcatTypeEnumDownload: {\r\n\t\tdefaultValue: 'Download',\r\n\t\tdisplayPath: `${dpRoot}Download`,\r\n\t\tdescription: `System value for 'Download' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.Download',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatTypeEnumLineup: {\r\n\t\tdefaultValue: 'Lineup',\r\n\t\tdisplayPath: `${dpRoot}Lineup`,\r\n\t\tdescription: `System value for 'Lineup' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.Lineup',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatTypeEnumStampedPdf: {\r\n\t\tdefaultValue: 'PDF',\r\n\t\tdisplayPath: `${dpRoot}Stamped PDF`,\r\n\t\tdescription: `System value for 'Stamped PDF' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.StampedPDF',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatTypeEnumTokenGlobal: {\r\n\t\tdefaultValue: 'Global Token',\r\n\t\tdisplayPath: `${dpRoot}Global `,\r\n\t\tdescription: `System value for 'Global ' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.TokenGlobal',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatTypeEnumTokenUnique: {\r\n\t\tdefaultValue: 'Individual Token',\r\n\t\tdisplayPath: `${dpRoot}Unique Token`,\r\n\t\tdescription: `System value for 'Unique Token' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.TokenUnique',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPBcatTypeEnumUrl: {\r\n\t\tdefaultValue: 'Link',\r\n\t\tdisplayPath: `${dpRoot}Url`,\r\n\t\tdescription: `System value for 'Url' Benefit Catalog type`,\r\n\t\tlegacyName: 'Benefit/System.Enum.BcatType.Url',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const BCAT_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpBcatTypeEnumLocs,\r\n\t...spBcatTypeEnumLocs,\r\n});\r\n\r\nexport type CPBcatTypeEnumLocType = LocMap;\r\nexport type SPBcatTypeEnumLocType = LocMap;\r\n\r\nexport const cpBcatTypeKeys: { [key in BcatType]: keyof CPBcatTypeEnumLocType } = {\r\n\t[BcatType.Download]: BCAT_TYPE_ENUM_LOCS.CPBcatTypeEnumDownload,\r\n\t[BcatType.Lineup]: BCAT_TYPE_ENUM_LOCS.CPBcatTypeEnumLineup,\r\n\t[BcatType.StampedPdf]: BCAT_TYPE_ENUM_LOCS.CPBcatTypeEnumStampedPdf,\r\n\t[BcatType.TokenGlobal]: BCAT_TYPE_ENUM_LOCS.CPBcatTypeEnumTokenGlobal,\r\n\t[BcatType.TokenUnique]: BCAT_TYPE_ENUM_LOCS.CPBcatTypeEnumTokenUnique,\r\n\t[BcatType.Url]: BCAT_TYPE_ENUM_LOCS.CPBcatTypeEnumUrl,\r\n};\r\n\r\nexport const spBcatTypeKeys: { [key in BcatType]: keyof SPBcatTypeEnumLocType } = {\r\n\t[BcatType.Download]: BCAT_TYPE_ENUM_LOCS.SPBcatTypeEnumDownload,\r\n\t[BcatType.Lineup]: BCAT_TYPE_ENUM_LOCS.SPBcatTypeEnumLineup,\r\n\t[BcatType.StampedPdf]: BCAT_TYPE_ENUM_LOCS.SPBcatTypeEnumStampedPdf,\r\n\t[BcatType.TokenGlobal]: BCAT_TYPE_ENUM_LOCS.SPBcatTypeEnumTokenGlobal,\r\n\t[BcatType.TokenUnique]: BCAT_TYPE_ENUM_LOCS.SPBcatTypeEnumTokenUnique,\r\n\t[BcatType.Url]: BCAT_TYPE_ENUM_LOCS.SPBcatTypeEnumUrl,\r\n};\r\n","import { BenefitStatus, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Benefit Status`;\r\n\r\nexport type CPBenefitStatusLocs =\r\n\t| 'CPBenefitStatusEnumActive'\r\n\t| 'CPBenefitStatusEnumUsed'\r\n\t| 'CPBenefitStatusEnumExpired';\r\n\r\nexport type SPBenefitStatusLocs =\r\n\t| 'SPBenefitStatusEnumActive'\r\n\t| 'SPBenefitStatusEnumUsed'\r\n\t| 'SPBenefitStatusEnumExpired';\r\n\r\nexport const cpBenefitStatusEnumLocs: LocDefs = {\r\n\tCPBenefitStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}|${BenefitStatus.Active}`,\r\n\t\tdescription: `System value for '${BenefitStatus.Active}' benefit status`,\r\n\t\tlegacyName: 'Credential/System.Enum.BenefitStatus.Active',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPBenefitStatusEnumUsed: {\r\n\t\tdefaultValue: 'Used',\r\n\t\tdisplayPath: `${dpRoot}|${BenefitStatus.Used}`,\r\n\t\tdescription: `System value for '${BenefitStatus.Used}' benefit status`,\r\n\t\tlegacyName: 'Credential/System.Enum.BenefitStatus.Used',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPBenefitStatusEnumExpired: {\r\n\t\tdefaultValue: 'Expired',\r\n\t\tdisplayPath: `${dpRoot}|${BenefitStatus.Expired}`,\r\n\t\tdescription: `System value for '${BenefitStatus.Expired}' benefit status`,\r\n\t\tlegacyName: 'Credential/System.Enum.BenefitStatus.Expired',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spBenefitStatusEnumLocs: LocDefs = {\r\n\tSPBenefitStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}|${BenefitStatus.Active}`,\r\n\t\tdescription: `System value for '${BenefitStatus.Active}' benefit status`,\r\n\t\tlegacyName: 'Credential/System.Enum.BenefitStatus.Active',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPBenefitStatusEnumUsed: {\r\n\t\tdefaultValue: 'Used',\r\n\t\tdisplayPath: `${dpRoot}|${BenefitStatus.Used}`,\r\n\t\tdescription: `System value for '${BenefitStatus.Used}' benefit status`,\r\n\t\tlegacyName: 'Credential/System.Enum.BenefitStatus.Used',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPBenefitStatusEnumExpired: {\r\n\t\tdefaultValue: 'Expired',\r\n\t\tdisplayPath: `${dpRoot}|${BenefitStatus.Expired}`,\r\n\t\tdescription: `System value for '${BenefitStatus.Expired}' benefit status`,\r\n\t\tlegacyName: 'Credential/System.Enum.BenefitStatus.Expired',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const BENEFIT_STATUS_ENUM_LOCS = MapLocKeys({\r\n\t...cpBenefitStatusEnumLocs,\r\n\t...spBenefitStatusEnumLocs,\r\n});\r\n\r\nexport type CPBenefitStatusEnumLocType = LocMap;\r\nexport type SPBenefitStatusEnumLocType = LocMap;\r\n\r\nexport const cpBenefitStatusKeys: { [key in BenefitStatus]: keyof CPBenefitStatusEnumLocType } = {\r\n\tActive: BENEFIT_STATUS_ENUM_LOCS.CPBenefitStatusEnumActive,\r\n\tUsed: BENEFIT_STATUS_ENUM_LOCS.CPBenefitStatusEnumUsed,\r\n\tExpired: BENEFIT_STATUS_ENUM_LOCS.CPBenefitStatusEnumExpired,\r\n};\r\n\r\nexport const spBenefitStatusKeys: { [key in BenefitStatus]: keyof SPBenefitStatusEnumLocType } = {\r\n\tActive: BENEFIT_STATUS_ENUM_LOCS.SPBenefitStatusEnumActive,\r\n\tUsed: BENEFIT_STATUS_ENUM_LOCS.SPBenefitStatusEnumUsed,\r\n\tExpired: BENEFIT_STATUS_ENUM_LOCS.SPBenefitStatusEnumExpired,\r\n};\r\n","import { HubFeature, WuserCandRestrictType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Web User Candidate Restriction Type`;\r\n\r\nexport type CPWuserCandRestrictTypeLocs =\r\n\t| 'CPWuserCandRestrictTypeEnumFiltered'\r\n\t| 'CPWuserCandRestrictTypeEnumRestricted'\r\n\t| 'CPWuserCandRestrictTypeEnumUnrestricted';\r\n\r\nexport type SPWuserCandRestrictTypeLocs =\r\n\t| 'SPWuserCandRestrictTypeEnumFiltered'\r\n\t| 'SPWuserCandRestrictTypeEnumRestricted'\r\n\t| 'SPWuserCandRestrictTypeEnumUnrestricted';\r\n\r\nexport const cpWuserCandRestrictTypeEnumLocs: LocDefs = {\r\n\tCPWuserCandRestrictTypeEnumFiltered: {\r\n\t\tdefaultValue: 'Filtered',\r\n\t\tdisplayPath: `${dpRoot}|${WuserCandRestrictType.Filtered}`,\r\n\t\tdescription: `System value for '${WuserCandRestrictType.Filtered}' web user candidate restriction type`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPWuserCandRestrictTypeEnumRestricted: {\r\n\t\tdefaultValue: 'Restricted',\r\n\t\tdisplayPath: `${dpRoot}|${WuserCandRestrictType.Restricted}`,\r\n\t\tdescription: `System value for '${WuserCandRestrictType.Restricted}' web user candidate restriction type`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPWuserCandRestrictTypeEnumUnrestricted: {\r\n\t\tdefaultValue: 'Unrestricted',\r\n\t\tdisplayPath: `${dpRoot}|${WuserCandRestrictType.Unrestricted}`,\r\n\t\tdescription: `System value for '${WuserCandRestrictType.Unrestricted}' web user candidate restriction type`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spWuserCandRestrictTypeEnumLocs: LocDefs = {\r\n\tSPWuserCandRestrictTypeEnumFiltered: {\r\n\t\tdefaultValue: 'Filtered',\r\n\t\tdisplayPath: `${dpRoot}|${WuserCandRestrictType.Filtered}`,\r\n\t\tdescription: `System value for '${WuserCandRestrictType.Filtered}' web user candidate restriction type`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPWuserCandRestrictTypeEnumRestricted: {\r\n\t\tdefaultValue: 'Restricted',\r\n\t\tdisplayPath: `${dpRoot}|${WuserCandRestrictType.Restricted}`,\r\n\t\tdescription: `System value for '${WuserCandRestrictType.Restricted}' web user candidate restriction type`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPWuserCandRestrictTypeEnumUnrestricted: {\r\n\t\tdefaultValue: 'Unrestricted',\r\n\t\tdisplayPath: `${dpRoot}|${WuserCandRestrictType.Unrestricted}`,\r\n\t\tdescription: `System value for '${WuserCandRestrictType.Unrestricted}' web user candidate restriction type`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS = MapLocKeys<\r\n\tCPWuserCandRestrictTypeLocs | SPWuserCandRestrictTypeLocs\r\n>({\r\n\t...cpWuserCandRestrictTypeEnumLocs,\r\n\t...spWuserCandRestrictTypeEnumLocs,\r\n});\r\n\r\nexport type CPWuserCandRestrictTypeEnumLocType = LocMap;\r\nexport type SPWuserCandRestrictTypeEnumLocType = LocMap;\r\n\r\nexport const cpWuserCandRestrictTypeKeys: {\r\n\t[key in WuserCandRestrictType]: keyof CPWuserCandRestrictTypeEnumLocType;\r\n} = {\r\n\tFiltered: WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS.CPWuserCandRestrictTypeEnumFiltered,\r\n\tRestricted: WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS.CPWuserCandRestrictTypeEnumRestricted,\r\n\tUnrestricted: WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS.CPWuserCandRestrictTypeEnumUnrestricted,\r\n};\r\n\r\nexport const spWuserCandRestrictTypeKeys: {\r\n\t[key in WuserCandRestrictType]: keyof SPWuserCandRestrictTypeEnumLocType;\r\n} = {\r\n\tFiltered: WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS.SPWuserCandRestrictTypeEnumFiltered,\r\n\tRestricted: WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS.SPWuserCandRestrictTypeEnumRestricted,\r\n\tUnrestricted: WUSER_CAND_RESTRICT_TYPE_ENUM_LOCS.SPWuserCandRestrictTypeEnumUnrestricted,\r\n};\r\n","import { CateidType, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Catalog External ID Type|`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.Core,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPCateidTypeLocs =\r\n\t| 'CPCateidTypeEnumCcat'\r\n\t| 'CPCateidTypeEnumCrcat'\r\n\t| 'CPCateidTypeEnumExcat'\r\n\t| 'CPCateidTypeEnumExcatDataProvider';\r\n\r\nexport type SPCateidTypeLocs =\r\n\t| 'SPCateidTypeEnumCcat'\r\n\t| 'SPCateidTypeEnumCrcat'\r\n\t| 'SPCateidTypeEnumExcat'\r\n\t| 'SPCateidTypeEnumExcatDataProvider';\r\n\r\nexport const cpCateidTypeEnumLocs: LocDefs = {\r\n\tCPCateidTypeEnumCcat: {\r\n\t\tdefaultValue: 'Credential Catalog',\r\n\t\tdisplayPath: `${dpRoot}Credential Catalog`,\r\n\t\tdescription: `System value for 'Credential Catalog' External ID type`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCateidTypeEnumCrcat: {\r\n\t\tdefaultValue: 'Other Requirement Catalog',\r\n\t\tdisplayPath: `${dpRoot}Other Requirement Catalog`,\r\n\t\tdescription: `System value for 'Certification Requirement Catalog' External ID type`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCateidTypeEnumExcat: {\r\n\t\tdefaultValue: 'Exam Catalog',\r\n\t\tdisplayPath: `${dpRoot}Excat`,\r\n\t\tdescription: `System value for 'Exam Catalog' External ID type`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCateidTypeEnumExcatDataProvider: {\r\n\t\tdefaultValue: 'External Data',\r\n\t\tdisplayPath: `${dpRoot}External Catalog Data Provider`,\r\n\t\tdescription: `System value for 'External Catalog Data Provider' External ID type`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spCateidTypeEnumLocs: LocDefs = {\r\n\tSPCateidTypeEnumCcat: {\r\n\t\tdefaultValue: 'Credential Catalog',\r\n\t\tdisplayPath: `${dpRoot}Ccat`,\r\n\t\tdescription: `System value for 'Credential Catalog' External ID type`,\r\n\t\tlegacyName: 'Core/System.Enum.CateidType.Ccat',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCateidTypeEnumCrcat: {\r\n\t\tdefaultValue: 'Other Requirement Catalog',\r\n\t\tdisplayPath: `${dpRoot}Crcat`,\r\n\t\tdescription: `System value for 'Other Requirement Catalog' External ID type`,\r\n\t\tlegacyName: 'Core/System.Enum.CateidType.Crcat',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCateidTypeEnumExcat: {\r\n\t\tdefaultValue: 'Exam Catalog',\r\n\t\tdisplayPath: `${dpRoot}Excat`,\r\n\t\tdescription: `System value for 'Exam Catalog' External ID type`,\r\n\t\tlegacyName: 'Core/System.Enum.CateidType.Excat',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCateidTypeEnumExcatDataProvider: {\r\n\t\tdefaultValue: 'External Data',\r\n\t\tdisplayPath: `${dpRoot}External Catalog Data Provider`,\r\n\t\tdescription: `System value for 'External Catalog Data Provider' External ID type`,\r\n\t\tlegacyName: 'Core/System.Enum.CateidType.ExcatDataProvider',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const CATEID_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpCateidTypeEnumLocs,\r\n\t...spCateidTypeEnumLocs,\r\n});\r\n\r\nexport type CPCateidTypeEnumLocType = LocMap;\r\nexport type SPCateidTypeEnumLocType = LocMap;\r\n\r\nexport const cpCateidTypeKeys: { [key in CateidType]: keyof CPCateidTypeEnumLocType } = {\r\n\t[CateidType.Ccat]: CATEID_TYPE_ENUM_LOCS.CPCateidTypeEnumCcat,\r\n\t[CateidType.Crcat]: CATEID_TYPE_ENUM_LOCS.CPCateidTypeEnumCrcat,\r\n\t[CateidType.Excat]: CATEID_TYPE_ENUM_LOCS.CPCateidTypeEnumExcat,\r\n\t[CateidType.ExcatDataProvider]: CATEID_TYPE_ENUM_LOCS.CPCateidTypeEnumExcatDataProvider,\r\n};\r\n\r\nexport const spCateidTypeKeys: { [key in CateidType]: keyof SPCateidTypeEnumLocType } = {\r\n\t[CateidType.Ccat]: CATEID_TYPE_ENUM_LOCS.SPCateidTypeEnumCcat,\r\n\t[CateidType.Crcat]: CATEID_TYPE_ENUM_LOCS.SPCateidTypeEnumCrcat,\r\n\t[CateidType.Excat]: CATEID_TYPE_ENUM_LOCS.SPCateidTypeEnumExcat,\r\n\t[CateidType.ExcatDataProvider]: CATEID_TYPE_ENUM_LOCS.SPCateidTypeEnumExcatDataProvider,\r\n};\r\n","import { CcatExtensionType, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|CcatExtensionType|`;\r\n\r\ntype SharedKeys = Pick;\r\n\r\nconst sharedLocData: Pick = {\r\n\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\thtmlAllowed: false,\r\n\tshared: true,\r\n\tfeature: HubFeature.Credential,\r\n};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPCcatExtensionTypeLocs = `CPCcatExtensionType${CcatExtensionType}`;\r\n\r\nexport type SPCcatExtensionTypeLocs = `SPCcatExtensionType${CcatExtensionType}`;\r\n\r\nexport const cpCcatExtensionTypeEnumLocs: LocDefs = {\r\n\tCPCcatExtensionTypeExtendFromInactiveDate: {\r\n\t\tdefaultValue: 'Extend From Inactive Date',\r\n\t\tdisplayPath: `${dpRoot}${CcatExtensionType.ExtendFromInactiveDate}`,\r\n\t\tdescription: `System value for '${CcatExtensionType.ExtendFromInactiveDate}' CCAT extension type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatExtensionType.ExtendFromInactiveDate',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCcatExtensionTypeIncludeSuspendedTime: {\r\n\t\tdefaultValue: 'Include Suspended Time',\r\n\t\tdisplayPath: `${dpRoot}${CcatExtensionType.IncludeSuspendedTime}`,\r\n\t\tdescription: `System value for '${CcatExtensionType.IncludeSuspendedTime}' CCAT extension type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatExtensionType.IncludeSuspendedTime',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCcatExtensionTypeNormal: {\r\n\t\tdefaultValue: 'Extend from achievement date',\r\n\t\tdisplayPath: `${dpRoot}${CcatExtensionType.Normal}`,\r\n\t\tdescription: `System value for '${CcatExtensionType.Normal}' CCAT extension type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatExtensionType.Normal',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spCcatExtensionTypeEnumLocs: LocDefs = {\r\n\tSPCcatExtensionTypeExtendFromInactiveDate: {\r\n\t\tdefaultValue: 'Extend From Inactive Date',\r\n\t\tdisplayPath: `${dpRoot}${CcatExtensionType.ExtendFromInactiveDate}`,\r\n\t\tdescription: `System value for '${CcatExtensionType.ExtendFromInactiveDate}' CCAT extension type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatExtensionType.ExtendFromInactiveDate',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCcatExtensionTypeIncludeSuspendedTime: {\r\n\t\tdefaultValue: 'Include Suspended Time',\r\n\t\tdisplayPath: `${dpRoot}${CcatExtensionType.IncludeSuspendedTime}`,\r\n\t\tdescription: `System value for '${CcatExtensionType.IncludeSuspendedTime}' CCAT extension type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatExtensionType.IncludeSuspendedTime',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCcatExtensionTypeNormal: {\r\n\t\tdefaultValue: 'Extend from achievement date',\r\n\t\tdisplayPath: `${dpRoot}${CcatExtensionType.Normal}`,\r\n\t\tdescription: `System value for '${CcatExtensionType.Normal}' CCAT extension type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatExtensionType.Normal',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const CCAT_EXTENSION_TYPE_ENUM_LOCS = MapLocKeys<\r\n\tCPCcatExtensionTypeLocs | SPCcatExtensionTypeLocs\r\n>({\r\n\t...cpCcatExtensionTypeEnumLocs,\r\n\t...spCcatExtensionTypeEnumLocs,\r\n});\r\n\r\nexport type CPCcatExtensionTypeEnumLocType = LocMap;\r\nexport type SPCcatExtensionTypeEnumLocType = LocMap;\r\n\r\nexport const cpCcatExtensionTypeKeys: {\r\n\t[key in CcatExtensionType]: keyof CPCcatExtensionTypeEnumLocType;\r\n} = {\r\n\t[CcatExtensionType.ExtendFromInactiveDate]:\r\n\t\tCCAT_EXTENSION_TYPE_ENUM_LOCS.CPCcatExtensionTypeExtendFromInactiveDate,\r\n\t[CcatExtensionType.IncludeSuspendedTime]:\r\n\t\tCCAT_EXTENSION_TYPE_ENUM_LOCS.CPCcatExtensionTypeIncludeSuspendedTime,\r\n\t[CcatExtensionType.Normal]: CCAT_EXTENSION_TYPE_ENUM_LOCS.CPCcatExtensionTypeNormal,\r\n};\r\n\r\nexport const spCcatExtensionTypeKeys: {\r\n\t[key in CcatExtensionType]: keyof SPCcatExtensionTypeEnumLocType;\r\n} = {\r\n\t[CcatExtensionType.ExtendFromInactiveDate]:\r\n\t\tCCAT_EXTENSION_TYPE_ENUM_LOCS.SPCcatExtensionTypeExtendFromInactiveDate,\r\n\t[CcatExtensionType.IncludeSuspendedTime]:\r\n\t\tCCAT_EXTENSION_TYPE_ENUM_LOCS.SPCcatExtensionTypeIncludeSuspendedTime,\r\n\t[CcatExtensionType.Normal]: CCAT_EXTENSION_TYPE_ENUM_LOCS.SPCcatExtensionTypeNormal,\r\n};\r\n","import { CcatPathType, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|CcatPathType|`;\r\n\r\ntype SharedKeys = Pick;\r\n\r\nconst sharedLocData: Pick = {\r\n\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\thtmlAllowed: false,\r\n\tshared: true,\r\n\tfeature: HubFeature.Credential,\r\n};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPCcatPathTypeLocs = `CPCcatPathType${CcatPathType}`;\r\n\r\nexport type SPCcatPathTypeLocs = `SPCcatPathType${CcatPathType}`;\r\n\r\nexport const cpCcatPathTypeEnumLocs: LocDefs = {\r\n\tCPCcatPathTypeOneShot: {\r\n\t\tdefaultValue: 'One Shot',\r\n\t\tdisplayPath: `${dpRoot}${CcatPathType.OneShot}`,\r\n\t\tdescription: `System value for '${CcatPathType.OneShot}' CCAT path type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatPathType.OneShot',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCcatPathTypeOneShotExtendable: {\r\n\t\tdefaultValue: 'One Shot Extendablee',\r\n\t\tdisplayPath: `${dpRoot}${CcatPathType.OneShotExtendable}`,\r\n\t\tdescription: `System value for '${CcatPathType.OneShotExtendable}' CCAT path type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatPathType.OneShotExtendable',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCcatPathTypeRepeatable: {\r\n\t\tdefaultValue: 'Repeatable',\r\n\t\tdisplayPath: `${dpRoot}${CcatPathType.Repeatable}`,\r\n\t\tdescription: `System value for '${CcatPathType.Repeatable}' CCAT path type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatPathType.Repeatable',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spCcatPathTypeEnumLocs: LocDefs = {\r\n\tSPCcatPathTypeOneShot: {\r\n\t\tdefaultValue: 'One Shot',\r\n\t\tdisplayPath: `${dpRoot}${CcatPathType.OneShot}`,\r\n\t\tdescription: `System value for '${CcatPathType.OneShot}' CCAT path type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatPathType.OneShot',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCcatPathTypeOneShotExtendable: {\r\n\t\tdefaultValue: 'One Shot Extendablee',\r\n\t\tdisplayPath: `${dpRoot}${CcatPathType.OneShotExtendable}`,\r\n\t\tdescription: `System value for '${CcatPathType.OneShotExtendable}' CCAT path type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatPathType.OneShotExtendable',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCcatPathTypeRepeatable: {\r\n\t\tdefaultValue: 'Repeatable',\r\n\t\tdisplayPath: `${dpRoot}${CcatPathType.Repeatable}`,\r\n\t\tdescription: `System value for '${CcatPathType.Repeatable}' CCAT path type`,\r\n\t\tlegacyName: 'Credential/System.Enum.CcatPathType.Repeatable',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const CCAT_PATH_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpCcatPathTypeEnumLocs,\r\n\t...spCcatPathTypeEnumLocs,\r\n});\r\n\r\nexport type CPCcatPathTypeEnumLocType = LocMap;\r\nexport type SPCcatPathTypeEnumLocType = LocMap;\r\n\r\nexport const cpCcatPathTypeKeys: {\r\n\t[key in CcatPathType]: keyof CPCcatPathTypeEnumLocType;\r\n} = {\r\n\t[CcatPathType.OneShot]: CCAT_PATH_TYPE_ENUM_LOCS.CPCcatPathTypeOneShot,\r\n\t[CcatPathType.OneShotExtendable]: CCAT_PATH_TYPE_ENUM_LOCS.CPCcatPathTypeOneShotExtendable,\r\n\t[CcatPathType.Repeatable]: CCAT_PATH_TYPE_ENUM_LOCS.CPCcatPathTypeRepeatable,\r\n};\r\n\r\nexport const spCcatPathTypeKeys: {\r\n\t[key in CcatPathType]: keyof SPCcatPathTypeEnumLocType;\r\n} = {\r\n\t[CcatPathType.OneShot]: CCAT_PATH_TYPE_ENUM_LOCS.SPCcatPathTypeOneShot,\r\n\t[CcatPathType.OneShotExtendable]: CCAT_PATH_TYPE_ENUM_LOCS.SPCcatPathTypeOneShotExtendable,\r\n\t[CcatPathType.Repeatable]: CCAT_PATH_TYPE_ENUM_LOCS.SPCcatPathTypeRepeatable,\r\n};\r\n","import { CertCatalogStatus, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|CertCatalogStatus|`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'type' | 'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.Credential,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPCertCatalogStatusLocs =\r\n\t| 'CPCertCatalogStatusEnumActive'\r\n\t| 'CPCertCatalogStatusEnumFuture'\r\n\t| 'CPCertCatalogStatusEnumRetired'\r\n\t| 'CPCertCatalogStatusEnumSunset';\r\n\r\nexport type SPCertCatalogStatusLocs =\r\n\t| 'SPCertCatalogStatusEnumActive'\r\n\t| 'SPCertCatalogStatusEnumFuture'\r\n\t| 'SPCertCatalogStatusEnumRetired'\r\n\t| 'SPCertCatalogStatusEnumSunset';\r\n\r\nexport const cpCertCatalogStatusEnumLocs: LocDefs = {\r\n\tCPCertCatalogStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}Active`,\r\n\t\tdescription: `System value for 'Active' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Active',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCertCatalogStatusEnumFuture: {\r\n\t\tdefaultValue: 'Future',\r\n\t\tdisplayPath: `${dpRoot}Future`,\r\n\t\tdescription: `System value for 'Future' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Future',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCertCatalogStatusEnumRetired: {\r\n\t\tdefaultValue: 'Retired',\r\n\t\tdisplayPath: `${dpRoot}Retired`,\r\n\t\tdescription: `System value for 'Retired' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Retired',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCertCatalogStatusEnumSunset: {\r\n\t\tdefaultValue: 'Sunset',\r\n\t\tdisplayPath: `${dpRoot}Sunset`,\r\n\t\tdescription: `System value for 'Sunset' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Sunset',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spCertCatalogStatusEnumLocs: LocDefs = {\r\n\tSPCertCatalogStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}Active`,\r\n\t\tdescription: `System value for 'Active' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Active',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCertCatalogStatusEnumFuture: {\r\n\t\tdefaultValue: 'Future',\r\n\t\tdisplayPath: `${dpRoot}Future`,\r\n\t\tdescription: `System value for 'Future' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Future',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCertCatalogStatusEnumRetired: {\r\n\t\tdefaultValue: 'Retired',\r\n\t\tdisplayPath: `${dpRoot}Retired`,\r\n\t\tdescription: `System value for 'Retired' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Retired',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCertCatalogStatusEnumSunset: {\r\n\t\tdefaultValue: 'Sunset',\r\n\t\tdisplayPath: `${dpRoot}Sunset`,\r\n\t\tdescription: `System value for 'Sunset' credential catalog status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertCatalogStatus.Sunset',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const CERT_CATALOG_STATUS_ENUM_LOCS = MapLocKeys<\r\n\tCPCertCatalogStatusLocs | SPCertCatalogStatusLocs\r\n>({\r\n\t...cpCertCatalogStatusEnumLocs,\r\n\t...spCertCatalogStatusEnumLocs,\r\n});\r\n\r\nexport type CPCertCatalogStatusEnumLocType = LocMap;\r\nexport type SPCertCatalogStatusEnumLocType = LocMap;\r\n\r\nexport const cpCertCatalogStatusKeys: {\r\n\t[key in CertCatalogStatus]: keyof CPCertCatalogStatusEnumLocType;\r\n} = {\r\n\tActive: CERT_CATALOG_STATUS_ENUM_LOCS.CPCertCatalogStatusEnumActive,\r\n\tFuture: CERT_CATALOG_STATUS_ENUM_LOCS.CPCertCatalogStatusEnumFuture,\r\n\tRetired: CERT_CATALOG_STATUS_ENUM_LOCS.CPCertCatalogStatusEnumRetired,\r\n\tSunset: CERT_CATALOG_STATUS_ENUM_LOCS.CPCertCatalogStatusEnumSunset,\r\n};\r\n\r\nexport const spCertCatalogStatusKeys: {\r\n\t[key in CertCatalogStatus]: keyof SPCertCatalogStatusEnumLocType;\r\n} = {\r\n\tActive: CERT_CATALOG_STATUS_ENUM_LOCS.SPCertCatalogStatusEnumActive,\r\n\tFuture: CERT_CATALOG_STATUS_ENUM_LOCS.SPCertCatalogStatusEnumFuture,\r\n\tRetired: CERT_CATALOG_STATUS_ENUM_LOCS.SPCertCatalogStatusEnumRetired,\r\n\tSunset: CERT_CATALOG_STATUS_ENUM_LOCS.SPCertCatalogStatusEnumSunset,\r\n};\r\n","import { CertStatus, HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|CertStatus`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'type' | 'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.Credential,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\ttype: LocType.SponsorPortalString,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\ttype: LocType.CandidatePortalString,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPCertStatusLocs =\r\n\t| 'CPCertStatusEnumActive'\r\n\t| 'CPCertStatusEnumDeleted'\r\n\t| 'CPCertStatusEnumExpired'\r\n\t| 'CPCertStatusEnumStarted'\r\n\t| 'CPCertStatusEnumSuspended';\r\n\r\nexport type SPCertStatusLocs =\r\n\t| 'SPCertStatusEnumActive'\r\n\t| 'SPCertStatusEnumDeleted'\r\n\t| 'SPCertStatusEnumExpired'\r\n\t| 'SPCertStatusEnumStarted'\r\n\t| 'SPCertStatusEnumSuspended';\r\n\r\nexport const cpCertStatusEnumLocs: LocDefs = {\r\n\tCPCertStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Active}`,\r\n\t\tdescription: `System value for '${CertStatus.Active}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Active',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCertStatusEnumDeleted: {\r\n\t\tdefaultValue: 'Deleted',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Deleted}`,\r\n\t\tdescription: `System value for '${CertStatus.Deleted}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Deleted',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCertStatusEnumSuspended: {\r\n\t\tdefaultValue: 'Suspended',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Suspended}`,\r\n\t\tdescription: `System value for '${CertStatus.Suspended}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Suspended',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCertStatusEnumExpired: {\r\n\t\tdefaultValue: 'Expired',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Expired}`,\r\n\t\tdescription: `System value for '${CertStatus.Expired}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Expired',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPCertStatusEnumStarted: {\r\n\t\tdefaultValue: 'In Progress',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Started}`,\r\n\t\tdescription: `System value for '${CertStatus.Started}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Started',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spCertStatusEnumLocs: LocDefs = {\r\n\tSPCertStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Active}`,\r\n\t\tdescription: `System value for '${CertStatus.Active}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Active',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCertStatusEnumDeleted: {\r\n\t\tdefaultValue: 'Deleted',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Deleted}`,\r\n\t\tdescription: `System value for '${CertStatus.Deleted}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Deleted',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCertStatusEnumSuspended: {\r\n\t\tdefaultValue: 'Suspended',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Suspended}`,\r\n\t\tdescription: `System value for '${CertStatus.Suspended}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Suspended',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCertStatusEnumExpired: {\r\n\t\tdefaultValue: 'Expired',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Expired}`,\r\n\t\tdescription: `System value for '${CertStatus.Expired}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Expired',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPCertStatusEnumStarted: {\r\n\t\tdefaultValue: 'In Progress',\r\n\t\tdisplayPath: `${dpRoot}|${CertStatus.Started}`,\r\n\t\tdescription: `System value for '${CertStatus.Started}' credential status`,\r\n\t\tlegacyName: 'Credential/System.Enum.CertStatus.Started',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const CERT_STATUS_ENUM_LOCS = MapLocKeys({\r\n\t...cpCertStatusEnumLocs,\r\n\t...spCertStatusEnumLocs,\r\n});\r\n\r\nexport type CPCertStatusEnumLocType = LocMap;\r\nexport type SPCertStatusEnumLocType = LocMap;\r\n\r\nexport const cpCertStatusKeys: { [key in CertStatus]: keyof CPCertStatusEnumLocType } = {\r\n\tActive: CERT_STATUS_ENUM_LOCS.CPCertStatusEnumActive,\r\n\tDeleted: CERT_STATUS_ENUM_LOCS.CPCertStatusEnumDeleted,\r\n\tSuspended: CERT_STATUS_ENUM_LOCS.CPCertStatusEnumSuspended,\r\n\tExpired: CERT_STATUS_ENUM_LOCS.CPCertStatusEnumExpired,\r\n\tStarted: CERT_STATUS_ENUM_LOCS.CPCertStatusEnumStarted,\r\n};\r\n\r\nexport const spCertStatusKeys: { [key in CertStatus]: keyof SPCertStatusEnumLocType } = {\r\n\tActive: CERT_STATUS_ENUM_LOCS.SPCertStatusEnumActive,\r\n\tDeleted: CERT_STATUS_ENUM_LOCS.SPCertStatusEnumDeleted,\r\n\tSuspended: CERT_STATUS_ENUM_LOCS.SPCertStatusEnumSuspended,\r\n\tExpired: CERT_STATUS_ENUM_LOCS.SPCertStatusEnumExpired,\r\n\tStarted: CERT_STATUS_ENUM_LOCS.SPCertStatusEnumStarted,\r\n};\r\n","import { CfcRule, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Cfc Rule|`;\r\n\r\nconst sharedLocData: Pick = {\r\n\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\thtmlAllowed: false,\r\n\tshared: true,\r\n\tportal: 'SP',\r\n};\r\n\r\ntype LocNameStart = 'SPCfcRuleEnum';\r\nexport type SPCfcRuleLocs =\r\n\t| `${LocNameStart}CcatAchieved`\r\n\t| `${LocNameStart}CcatActive`\r\n\t| `${LocNameStart}CcatExpired`\r\n\t| `${LocNameStart}CcatInactive`\r\n\t| `${LocNameStart}CcatSuspended`\r\n\t| `${LocNameStart}CrcatAchieved`\r\n\t| `${LocNameStart}CrcatActive`\r\n\t| `${LocNameStart}CrcatInactive`\r\n\t| `${LocNameStart}ExcatFailed`\r\n\t| `${LocNameStart}ExcatPassed`\r\n\t| `${LocNameStart}ExcatTaken`\r\n\t| `${LocNameStart}IcCodeAddr1`\r\n\t| `${LocNameStart}StandingAchieved`\r\n\t| `${LocNameStart}StandingActive`\r\n\t| `${LocNameStart}StandingInactive`\r\n\t| `${LocNameStart}ClaListItems`;\r\n\r\nexport const spCfcRuleEnumLocs: LocDefs = {\r\n\tSPCfcRuleEnumCcatAchieved: {\r\n\t\tdefaultValue: 'Credentials Achieved',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CcatAchieved}`,\r\n\t\tdescription: `System value for '${CfcRule.CcatAchieved}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CcatAchieved',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumCcatActive: {\r\n\t\tdefaultValue: 'Credentials Active',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CcatActive}`,\r\n\t\tdescription: `System value for '${CfcRule.CcatActive}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CcatActive',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumCcatExpired: {\r\n\t\tdefaultValue: 'Credentials Expired',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CcatExpired}`,\r\n\t\tdescription: `System value for '${CfcRule.CcatExpired}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CcatExpired',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumCcatInactive: {\r\n\t\tdefaultValue: 'Credentials Inactive',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CcatInactive}`,\r\n\t\tdescription: `System value for '${CfcRule.CcatInactive}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CcatInactive',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumCcatSuspended: {\r\n\t\tdefaultValue: 'Credentials Suspended',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CcatSuspended}`,\r\n\t\tdescription: `System value for '${CfcRule.CcatSuspended}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CcatSuspended',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumCrcatAchieved: {\r\n\t\tdefaultValue: 'Other Requirements Achieved',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CrcatAchieved}`,\r\n\t\tdescription: `System value for '${CfcRule.CrcatAchieved}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CrcatAchieved',\r\n\t\tfeature: HubFeature.OtherRequirement,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumCrcatActive: {\r\n\t\tdefaultValue: 'Other Requirements Active',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CrcatActive}`,\r\n\t\tdescription: `System value for '${CfcRule.CrcatActive}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CrcatActive',\r\n\t\tfeature: HubFeature.OtherRequirement,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumCrcatInactive: {\r\n\t\tdefaultValue: 'Other Requirements Inactive',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.CrcatInactive}`,\r\n\t\tdescription: `System value for '${CfcRule.CrcatInactive}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.CrcatInactive',\r\n\t\tfeature: HubFeature.OtherRequirement,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumExcatFailed: {\r\n\t\tdefaultValue: 'Exams Failed',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.ExcatFailed}`,\r\n\t\tdescription: `System value for '${CfcRule.ExcatFailed}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.ExcatFailed',\r\n\t\tfeature: HubFeature.Exam,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumExcatPassed: {\r\n\t\tdefaultValue: 'Exams Passed',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.ExcatPassed}`,\r\n\t\tdescription: `System value for '${CfcRule.ExcatPassed}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.ExcatPassed',\r\n\t\tfeature: HubFeature.Exam,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumExcatTaken: {\r\n\t\tdefaultValue: 'Exams Taken',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.ExcatTaken}`,\r\n\t\tdescription: `System value for '${CfcRule.ExcatTaken}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.ExcatTaken',\r\n\t\tfeature: HubFeature.Exam,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumIcCodeAddr1: {\r\n\t\tdefaultValue: 'Countries',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.IcCodeAddr1}`,\r\n\t\tdescription: `System value for '${CfcRule.IcCodeAddr1}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.IcCodeAddr1',\r\n\t\tfeature: HubFeature.Core,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumStandingAchieved: {\r\n\t\tdefaultValue: 'Standings Achieved',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.StandingAchieved}`,\r\n\t\tdescription: `System value for '${CfcRule.StandingAchieved}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.StandingAchieved',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumStandingActive: {\r\n\t\tdefaultValue: 'Standings Active',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.StandingActive}`,\r\n\t\tdescription: `System value for '${CfcRule.StandingActive}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.StandingActive',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumStandingInactive: {\r\n\t\tdefaultValue: 'Standings Inactive',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.StandingInactive}`,\r\n\t\tdescription: `System value for '${CfcRule.StandingInactive}' Cfc Rule.`,\r\n\t\tlegacyName: 'Announcements/System.Enum.CfcRule.StandingInactive',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPCfcRuleEnumClaListItems: {\r\n\t\tdefaultValue: 'Client Sponsor Settings',\r\n\t\tdisplayPath: `${dpRoot}${CfcRule.ClaListItems}`,\r\n\t\tdescription: `System value for '${CfcRule.ClaListItems}' Cfc Rule.`,\r\n\t\tfeature: HubFeature.Core,\r\n\t\t...sharedLocData,\r\n\t},\r\n};\r\n\r\nexport const CERT_STATUS_ENUM_LOCS = MapLocKeys({\r\n\t...spCfcRuleEnumLocs,\r\n});\r\n\r\nexport type SPCfcRuleEnumLocType = LocMap;\r\n\r\nexport const spCfcRuleKeys: { [key in CfcRule]: keyof SPCfcRuleEnumLocType } = {\r\n\t[CfcRule.CcatAchieved]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCcatAchieved,\r\n\t[CfcRule.CcatActive]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCcatActive,\r\n\t[CfcRule.CcatExpired]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCcatExpired,\r\n\t[CfcRule.CcatInactive]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCcatInactive,\r\n\t[CfcRule.CcatSuspended]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCcatSuspended,\r\n\t[CfcRule.CrcatAchieved]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCrcatAchieved,\r\n\t[CfcRule.CrcatActive]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCrcatActive,\r\n\t[CfcRule.CrcatInactive]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumCrcatInactive,\r\n\t[CfcRule.ExcatFailed]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumExcatFailed,\r\n\t[CfcRule.ExcatPassed]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumExcatPassed,\r\n\t[CfcRule.ExcatTaken]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumExcatTaken,\r\n\t[CfcRule.IcCodeAddr1]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumIcCodeAddr1,\r\n\t[CfcRule.StandingAchieved]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumStandingAchieved,\r\n\t[CfcRule.StandingActive]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumStandingActive,\r\n\t[CfcRule.StandingInactive]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumStandingInactive,\r\n\t[CfcRule.ClaListItems]: CERT_STATUS_ENUM_LOCS.SPCfcRuleEnumClaListItems,\r\n};\r\n","import { ChType, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Credential History Type`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.Credential,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPChTypeLocs =\r\n\t| 'CPChTypeEnumInitialCert'\r\n\t| 'CPChTypeEnumLinkedExtension'\r\n\t| 'CPChTypeEnumLinkedSuspendedExtension'\r\n\t| 'CPChTypeEnumManualCertAdjust'\r\n\t| 'CPChTypeEnumManualCertAdjustNle'\r\n\t| 'CPChTypeEnumManualCertCreate'\r\n\t| 'CPChTypeEnumManualCertCreateNle'\r\n\t| 'CPChTypeEnumManualCertExtend'\r\n\t| 'CPChTypeEnumManualCertExtendNle'\r\n\t| 'CPChTypeEnumManualCertReduce'\r\n\t| 'CPChTypeEnumManualCertReduceNle'\r\n\t| 'CPChTypeEnumNormalExtension'\r\n\t| 'CPChTypeEnumSuspendedExtension';\r\n\r\nexport type SPChTypeLocs =\r\n\t| 'SPChTypeEnumInitialCert'\r\n\t| 'SPChTypeEnumLinkedExtension'\r\n\t| 'SPChTypeEnumLinkedSuspendedExtension'\r\n\t| 'SPChTypeEnumManualCertAdjust'\r\n\t| 'SPChTypeEnumManualCertAdjustNle'\r\n\t| 'SPChTypeEnumManualCertCreate'\r\n\t| 'SPChTypeEnumManualCertCreateNle'\r\n\t| 'SPChTypeEnumManualCertExtend'\r\n\t| 'SPChTypeEnumManualCertExtendNle'\r\n\t| 'SPChTypeEnumManualCertReduce'\r\n\t| 'SPChTypeEnumManualCertReduceNle'\r\n\t| 'SPChTypeEnumNormalExtension'\r\n\t| 'SPChTypeEnumSuspendedExtension';\r\n\r\nexport const cpChTypeEnumLocs: LocDefs = {\r\n\tCPChTypeEnumInitialCert: {\r\n\t\tdefaultValue: 'Initial Credential',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.InitialCert}`,\r\n\t\tdescription: `System value for '${ChType.InitialCert}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.InitialCert',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumLinkedExtension: {\r\n\t\tdefaultValue: 'Linked Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.LinkedExtension}`,\r\n\t\tdescription: `System value for '${ChType.LinkedExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.LinkedExtension',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumLinkedSuspendedExtension: {\r\n\t\tdefaultValue: 'Linked Suspended Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.LinkedSuspendedExtension}`,\r\n\t\tdescription: `System value for '${ChType.LinkedSuspendedExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.LinkedSuspendedExtension',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertAdjust: {\r\n\t\tdefaultValue: 'Manual Credential Adjustment',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertAdjust}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertAdjust}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertAdjust',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertAdjustNle: {\r\n\t\tdefaultValue: 'Manual Credential Adjustment (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertAdjustNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertAdjustNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertAdjustNle',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertCreate: {\r\n\t\tdefaultValue: 'Manual Credential Creation',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertCreate}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertCreate}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertCreate',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertCreateNle: {\r\n\t\tdefaultValue: 'Manual Credential Creation (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertCreateNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertCreateNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertCreateNle',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertExtend: {\r\n\t\tdefaultValue: 'Manual Credential Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertExtend}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertExtend}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertExtend',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertExtendNle: {\r\n\t\tdefaultValue: 'Manual Credential Extension (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertExtendNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertExtendNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertExtendNle',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertReduce: {\r\n\t\tdefaultValue: 'Manual Credential Reduction',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertReduce}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertReduce}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertReduce',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumManualCertReduceNle: {\r\n\t\tdefaultValue: 'Manual Credential Reduction (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertReduceNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertReduceNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertReduceNle',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumNormalExtension: {\r\n\t\tdefaultValue: 'Normal Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.NormalExtension}`,\r\n\t\tdescription: `System value for '${ChType.NormalExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.NormalExtension',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPChTypeEnumSuspendedExtension: {\r\n\t\tdefaultValue: 'Suspended Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.SuspendedExtension}`,\r\n\t\tdescription: `System value for '${ChType.SuspendedExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.SuspendedExtension',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spChTypeEnumLocs: LocDefs = {\r\n\tSPChTypeEnumInitialCert: {\r\n\t\tdefaultValue: 'Initial Credential',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.InitialCert}`,\r\n\t\tdescription: `System value for '${ChType.InitialCert}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.InitialCert',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumLinkedExtension: {\r\n\t\tdefaultValue: 'Linked Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.LinkedExtension}`,\r\n\t\tdescription: `System value for '${ChType.LinkedExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.LinkedExtension',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumLinkedSuspendedExtension: {\r\n\t\tdefaultValue: 'Linked Suspended Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.LinkedSuspendedExtension}`,\r\n\t\tdescription: `System value for '${ChType.LinkedSuspendedExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.LinkedSuspendedExtension',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertAdjust: {\r\n\t\tdefaultValue: 'Manual Credential Adjustment',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertAdjust}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertAdjust}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertAdjust',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertAdjustNle: {\r\n\t\tdefaultValue: 'Manual Credential Adjustment (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertAdjustNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertAdjustNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertAdjustNle',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertCreate: {\r\n\t\tdefaultValue: 'Manual Credential Creation',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertCreate}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertCreate}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertCreate',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertCreateNle: {\r\n\t\tdefaultValue: 'Manual Credential Creation (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertCreateNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertCreateNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertCreateNle',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertExtend: {\r\n\t\tdefaultValue: 'Manual Credential Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertExtend}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertExtend}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertExtend',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertExtendNle: {\r\n\t\tdefaultValue: 'Manual Credential Extension (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertExtendNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertExtendNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertExtendNle',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertReduce: {\r\n\t\tdefaultValue: 'Manual Credential Reduction',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertReduce}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertReduce}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertReduce',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumManualCertReduceNle: {\r\n\t\tdefaultValue: 'Manual Credential Reduction (No Linked Extension)',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.ManualCertReduceNle}`,\r\n\t\tdescription: `System value for '${ChType.ManualCertReduceNle}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.ManualCertReduceNle',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumNormalExtension: {\r\n\t\tdefaultValue: 'Normal Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.NormalExtension}`,\r\n\t\tdescription: `System value for '${ChType.NormalExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.NormalExtension',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPChTypeEnumSuspendedExtension: {\r\n\t\tdefaultValue: 'Suspended Extension',\r\n\t\tdisplayPath: `${dpRoot}|${ChType.SuspendedExtension}`,\r\n\t\tdescription: `System value for '${ChType.SuspendedExtension}' Credential History type`,\r\n\t\tlegacyName: 'Credential/System.Enum.ChType.SuspendedExtension',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const CH_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpChTypeEnumLocs,\r\n\t...spChTypeEnumLocs,\r\n});\r\n\r\nexport type CPChTypeEnumLocType = LocMap;\r\nexport type SPChTypeEnumLocType = LocMap;\r\n\r\nexport const cpChTypeKeys: { [key in ChType]: keyof CPChTypeEnumLocType } = {\r\n\t[ChType.InitialCert]: CH_TYPE_ENUM_LOCS.CPChTypeEnumInitialCert,\r\n\t[ChType.LinkedExtension]: CH_TYPE_ENUM_LOCS.CPChTypeEnumLinkedExtension,\r\n\t[ChType.LinkedSuspendedExtension]: CH_TYPE_ENUM_LOCS.CPChTypeEnumLinkedSuspendedExtension,\r\n\t[ChType.ManualCertAdjust]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertAdjust,\r\n\t[ChType.ManualCertAdjustNle]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertAdjustNle,\r\n\t[ChType.ManualCertCreate]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertCreate,\r\n\t[ChType.ManualCertCreateNle]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertCreateNle,\r\n\t[ChType.ManualCertExtend]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertExtend,\r\n\t[ChType.ManualCertExtendNle]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertExtendNle,\r\n\t[ChType.ManualCertReduce]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertReduce,\r\n\t[ChType.ManualCertReduceNle]: CH_TYPE_ENUM_LOCS.CPChTypeEnumManualCertReduceNle,\r\n\t[ChType.NormalExtension]: CH_TYPE_ENUM_LOCS.CPChTypeEnumNormalExtension,\r\n\t[ChType.SuspendedExtension]: CH_TYPE_ENUM_LOCS.CPChTypeEnumSuspendedExtension,\r\n};\r\n\r\nexport const spChTypeKeys: { [key in ChType]: keyof SPChTypeEnumLocType } = {\r\n\t[ChType.InitialCert]: CH_TYPE_ENUM_LOCS.SPChTypeEnumInitialCert,\r\n\t[ChType.LinkedExtension]: CH_TYPE_ENUM_LOCS.SPChTypeEnumLinkedExtension,\r\n\t[ChType.LinkedSuspendedExtension]: CH_TYPE_ENUM_LOCS.SPChTypeEnumLinkedSuspendedExtension,\r\n\t[ChType.ManualCertAdjust]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertAdjust,\r\n\t[ChType.ManualCertAdjustNle]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertAdjustNle,\r\n\t[ChType.ManualCertCreate]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertCreate,\r\n\t[ChType.ManualCertCreateNle]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertCreateNle,\r\n\t[ChType.ManualCertExtend]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertExtend,\r\n\t[ChType.ManualCertExtendNle]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertExtendNle,\r\n\t[ChType.ManualCertReduce]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertReduce,\r\n\t[ChType.ManualCertReduceNle]: CH_TYPE_ENUM_LOCS.SPChTypeEnumManualCertReduceNle,\r\n\t[ChType.NormalExtension]: CH_TYPE_ENUM_LOCS.SPChTypeEnumNormalExtension,\r\n\t[ChType.SuspendedExtension]: CH_TYPE_ENUM_LOCS.SPChTypeEnumSuspendedExtension,\r\n};\r\n","import { CprState, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Credential Process Request State`;\r\n\r\nexport type CPCprStateLocs =\r\n\t| 'CPCprStateEnumBroadcast'\r\n\t| 'CPCprStateEnumComplete'\r\n\t| 'CPCprStateEnumError'\r\n\t| 'CPCprStateEnumQueued'\r\n\t| 'CPCprStateEnumRejected'\r\n\t| 'CPCprStateEnumRequested';\r\n\r\nexport type SPCprStateLocs =\r\n\t| 'SPCprStateEnumBroadcast'\r\n\t| 'SPCprStateEnumComplete'\r\n\t| 'SPCprStateEnumError'\r\n\t| 'SPCprStateEnumQueued'\r\n\t| 'SPCprStateEnumRejected'\r\n\t| 'SPCprStateEnumRequested';\r\n\r\nexport const cpCprStateEnumLocs: LocDefs = {\r\n\tCPCprStateEnumBroadcast: {\r\n\t\tdefaultValue: 'Broadcast',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Broadcast}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Broadcast}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprStateEnumComplete: {\r\n\t\tdefaultValue: 'Complete',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Complete}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Complete}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprStateEnumError: {\r\n\t\tdefaultValue: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Error}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Error}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprStateEnumQueued: {\r\n\t\tdefaultValue: 'Queued',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Queued}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Queued}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprStateEnumRejected: {\r\n\t\tdefaultValue: 'Rejected',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Rejected}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Rejected}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprStateEnumRequested: {\r\n\t\tdefaultValue: 'Requested',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Requested}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Requested}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spCprStateEnumLocs: LocDefs = {\r\n\tSPCprStateEnumBroadcast: {\r\n\t\tdefaultValue: 'Broadcast',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Broadcast}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Broadcast}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprStateEnumComplete: {\r\n\t\tdefaultValue: 'Complete',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Complete}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Complete}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprStateEnumError: {\r\n\t\tdefaultValue: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Error}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Error}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprStateEnumQueued: {\r\n\t\tdefaultValue: 'Queued',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Queued}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Queued}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprStateEnumRejected: {\r\n\t\tdefaultValue: 'Rejected',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Rejected}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Rejected}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprStateEnumRequested: {\r\n\t\tdefaultValue: 'Requested',\r\n\t\tdisplayPath: `${dpRoot}|${CprState.Requested}`,\r\n\t\tdescription: `Credential process request state: '${CprState.Requested}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const CPR_STATE_ENUM_LOCS = MapLocKeys({\r\n\t...cpCprStateEnumLocs,\r\n\t...spCprStateEnumLocs,\r\n});\r\n\r\nexport type CPCprStateEnumLocType = LocMap;\r\nexport type SPCprStateEnumLocType = LocMap;\r\n\r\nexport const cpCprStateKeys: { [key in CprState]: keyof CPCprStateEnumLocType } = {\r\n\t[CprState.Broadcast]: CPR_STATE_ENUM_LOCS.CPCprStateEnumBroadcast,\r\n\t[CprState.Complete]: CPR_STATE_ENUM_LOCS.CPCprStateEnumComplete,\r\n\t[CprState.Error]: CPR_STATE_ENUM_LOCS.CPCprStateEnumError,\r\n\t[CprState.Queued]: CPR_STATE_ENUM_LOCS.CPCprStateEnumQueued,\r\n\t[CprState.Rejected]: CPR_STATE_ENUM_LOCS.CPCprStateEnumRejected,\r\n\t[CprState.Requested]: CPR_STATE_ENUM_LOCS.CPCprStateEnumRequested,\r\n};\r\n\r\nexport const spCprStateKeys: { [key in CprState]: keyof SPCprStateEnumLocType } = {\r\n\t[CprState.Broadcast]: CPR_STATE_ENUM_LOCS.SPCprStateEnumBroadcast,\r\n\t[CprState.Complete]: CPR_STATE_ENUM_LOCS.SPCprStateEnumComplete,\r\n\t[CprState.Error]: CPR_STATE_ENUM_LOCS.SPCprStateEnumError,\r\n\t[CprState.Queued]: CPR_STATE_ENUM_LOCS.SPCprStateEnumQueued,\r\n\t[CprState.Rejected]: CPR_STATE_ENUM_LOCS.SPCprStateEnumRejected,\r\n\t[CprState.Requested]: CPR_STATE_ENUM_LOCS.SPCprStateEnumRequested,\r\n};\r\n","import { CprType, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Credential Process Request Type`;\r\n\r\nexport type CPCprTypeLocs =\r\n\t| 'CPCprTypeEnumCertRebuild'\r\n\t| 'CPCprTypeEnumCertRebuildBulk'\r\n\t| 'CPCprTypeEnumCertRegression'\r\n\t| 'CPCprTypeEnumInvalid'\r\n\t| 'CPCprTypeEnumMaintenance'\r\n\t| 'CPCprTypeEnumManualAdjustment'\r\n\t| 'CPCprTypeEnumManualCertify'\r\n\t| 'CPCprTypeEnumManualExtension'\r\n\t| 'CPCprTypeEnumManualReduction'\r\n\t| 'CPCprTypeEnumNormal'\r\n\t| 'CPCprTypeEnumNormalInRebuild'\r\n\t| 'CPCprTypeEnumNormalWithoutTree';\r\n\r\nexport type SPCprTypeLocs =\r\n\t| 'SPCprTypeEnumCertRebuild'\r\n\t| 'SPCprTypeEnumCertRebuildBulk'\r\n\t| 'SPCprTypeEnumCertRegression'\r\n\t| 'SPCprTypeEnumInvalid'\r\n\t| 'SPCprTypeEnumMaintenance'\r\n\t| 'SPCprTypeEnumManualAdjustment'\r\n\t| 'SPCprTypeEnumManualCertify'\r\n\t| 'SPCprTypeEnumManualExtension'\r\n\t| 'SPCprTypeEnumManualReduction'\r\n\t| 'SPCprTypeEnumNormal'\r\n\t| 'SPCprTypeEnumNormalInRebuild'\r\n\t| 'SPCprTypeEnumNormalWithoutTree';\r\n\r\nexport const cpCprTypeEnumLocs: LocDefs = {\r\n\tCPCprTypeEnumCertRebuild: {\r\n\t\tdefaultValue: 'Certification Rebuild',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.CertRebuild}`,\r\n\t\tdescription: `Credential process request type: '${CprType.CertRebuild}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumCertRebuildBulk: {\r\n\t\tdefaultValue: 'Bulk Certification Rebuild',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.CertRebuildBulk}`,\r\n\t\tdescription: `Credential process request type: '${CprType.CertRebuildBulk}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumCertRegression: {\r\n\t\tdefaultValue: 'Certification Regression',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.CertRegression}`,\r\n\t\tdescription: `Credential process request type: '${CprType.CertRegression}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumInvalid: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.Invalid}`,\r\n\t\tdescription: `Credential process request type: '${CprType.Invalid}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumMaintenance: {\r\n\t\tdefaultValue: 'Maintenance',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.Maintenance}`,\r\n\t\tdescription: `Credential process request type: '${CprType.Maintenance}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumManualAdjustment: {\r\n\t\tdefaultValue: 'Manual Adjustment',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualAdjustment}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualAdjustment}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumManualCertify: {\r\n\t\tdefaultValue: 'Manual Certify',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualCertify}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualCertify}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumManualExtension: {\r\n\t\tdefaultValue: 'Manual Extension',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualExtension}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualExtension}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumManualReduction: {\r\n\t\tdefaultValue: 'Manual Reduction',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualReduction}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualReduction}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumNormal: {\r\n\t\tdefaultValue: 'Normal',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.Normal}`,\r\n\t\tdescription: `Credential process request type: '${CprType.Normal}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumNormalInRebuild: {\r\n\t\tdefaultValue: 'Normal In Rebuild',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.NormalInRebuild}`,\r\n\t\tdescription: `Credential process request type: '${CprType.NormalInRebuild}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCprTypeEnumNormalWithoutTree: {\r\n\t\tdefaultValue: 'Normal Without Tree',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.NormalWithoutTree}`,\r\n\t\tdescription: `Credential process request type: '${CprType.NormalWithoutTree}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spCprTypeEnumLocs: LocDefs = {\r\n\tSPCprTypeEnumCertRebuild: {\r\n\t\tdefaultValue: 'Certification Rebuild',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.CertRebuild}`,\r\n\t\tdescription: `Credential process request type: '${CprType.CertRebuild}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumCertRebuildBulk: {\r\n\t\tdefaultValue: 'Bulk Certification Rebuild',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.CertRebuildBulk}`,\r\n\t\tdescription: `Credential process request type: '${CprType.CertRebuildBulk}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumCertRegression: {\r\n\t\tdefaultValue: 'Certification Regression',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.CertRegression}`,\r\n\t\tdescription: `Credential process request type: '${CprType.CertRegression}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumInvalid: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.Invalid}`,\r\n\t\tdescription: `Credential process request type: '${CprType.Invalid}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumMaintenance: {\r\n\t\tdefaultValue: 'Maintenance',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.Maintenance}`,\r\n\t\tdescription: `Credential process request type: '${CprType.Maintenance}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumManualAdjustment: {\r\n\t\tdefaultValue: 'Manual Adjustment',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualAdjustment}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualAdjustment}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumManualCertify: {\r\n\t\tdefaultValue: 'Manual Certify',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualCertify}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualCertify}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumManualExtension: {\r\n\t\tdefaultValue: 'Manual Extension',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualExtension}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualExtension}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumManualReduction: {\r\n\t\tdefaultValue: 'Manual Reduction',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.ManualReduction}`,\r\n\t\tdescription: `Credential process request type: '${CprType.ManualReduction}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumNormal: {\r\n\t\tdefaultValue: 'Normal',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.Normal}`,\r\n\t\tdescription: `Credential process request type: '${CprType.Normal}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumNormalInRebuild: {\r\n\t\tdefaultValue: 'Normal In Rebuild',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.NormalInRebuild}`,\r\n\t\tdescription: `Credential process request type: '${CprType.NormalInRebuild}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCprTypeEnumNormalWithoutTree: {\r\n\t\tdefaultValue: 'Normal Without Tree',\r\n\t\tdisplayPath: `${dpRoot}|${CprType.NormalWithoutTree}`,\r\n\t\tdescription: `Credential process request type: '${CprType.NormalWithoutTree}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const CPR_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpCprTypeEnumLocs,\r\n\t...spCprTypeEnumLocs,\r\n});\r\n\r\nexport type CPCprTypeEnumLocType = LocMap;\r\nexport type SPCprTypeEnumLocType = LocMap;\r\n\r\nexport const cpCprTypeKeys: { [key in CprType]: keyof CPCprTypeEnumLocType } = {\r\n\t[CprType.CertRebuild]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumCertRebuild,\r\n\t[CprType.CertRebuildBulk]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumCertRebuildBulk,\r\n\t[CprType.CertRegression]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumCertRegression,\r\n\t[CprType.Invalid]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumInvalid,\r\n\t[CprType.Maintenance]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumMaintenance,\r\n\t[CprType.ManualAdjustment]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumManualAdjustment,\r\n\t[CprType.ManualCertify]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumManualCertify,\r\n\t[CprType.ManualExtension]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumManualExtension,\r\n\t[CprType.ManualReduction]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumManualReduction,\r\n\t[CprType.Normal]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumNormal,\r\n\t[CprType.NormalInRebuild]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumNormalInRebuild,\r\n\t[CprType.NormalWithoutTree]: CPR_TYPE_ENUM_LOCS.CPCprTypeEnumNormalWithoutTree,\r\n};\r\n\r\nexport const spCprTypeKeys: { [key in CprType]: keyof SPCprTypeEnumLocType } = {\r\n\t[CprType.CertRebuild]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumCertRebuild,\r\n\t[CprType.CertRebuildBulk]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumCertRebuildBulk,\r\n\t[CprType.CertRegression]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumCertRegression,\r\n\t[CprType.Invalid]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumInvalid,\r\n\t[CprType.Maintenance]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumMaintenance,\r\n\t[CprType.ManualAdjustment]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumManualAdjustment,\r\n\t[CprType.ManualCertify]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumManualCertify,\r\n\t[CprType.ManualExtension]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumManualExtension,\r\n\t[CprType.ManualReduction]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumManualReduction,\r\n\t[CprType.Normal]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumNormal,\r\n\t[CprType.NormalInRebuild]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumNormalInRebuild,\r\n\t[CprType.NormalWithoutTree]: CPR_TYPE_ENUM_LOCS.SPCprTypeEnumNormalWithoutTree,\r\n};\r\n","import { CrcatType, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Credential Requirement Catalog Type`;\r\n\r\nexport type CPCrcatTypeLocs =\r\n\t| 'CPCrcatTypeEnumAdditionalAgreement'\r\n\t| 'CPCrcatTypeEnumCeActivity'\r\n\t| 'CPCrcatTypeEnumCertAgreement'\r\n\t| 'CPCrcatTypeEnumEnrollment'\r\n\t| 'CPCrcatTypeEnumExternalCert'\r\n\t| 'CPCrcatTypeEnumExternalExam'\r\n\t| 'CPCrcatTypeEnumLab'\r\n\t| 'CPCrcatTypeEnumMiscellaneous'\r\n\t| 'CPCrcatTypeEnumParticipation'\r\n\t| 'CPCrcatTypeEnumProgramFee'\r\n\t| 'CPCrcatTypeEnumStandingLengthyCert'\r\n\t| 'CPCrcatTypeEnumStandingMultiCert'\r\n\t| 'CPCrcatTypeEnumTraining';\r\n\r\nexport type SPCrcatTypeLocs =\r\n\t| 'SPCrcatTypeEnumAdditionalAgreement'\r\n\t| 'SPCrcatTypeEnumCeActivity'\r\n\t| 'SPCrcatTypeEnumCertAgreement'\r\n\t| 'SPCrcatTypeEnumEnrollment'\r\n\t| 'SPCrcatTypeEnumExternalCert'\r\n\t| 'SPCrcatTypeEnumExternalExam'\r\n\t| 'SPCrcatTypeEnumLab'\r\n\t| 'SPCrcatTypeEnumMiscellaneous'\r\n\t| 'SPCrcatTypeEnumParticipation'\r\n\t| 'SPCrcatTypeEnumProgramFee'\r\n\t| 'SPCrcatTypeEnumStandingLengthyCert'\r\n\t| 'SPCrcatTypeEnumStandingMultiCert'\r\n\t| 'SPCrcatTypeEnumTraining';\r\n\r\nexport const cpCrcatTypeEnumLocs: LocDefs = {\r\n\tCPCrcatTypeEnumAdditionalAgreement: {\r\n\t\tdefaultValue: 'Additional Agreement',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.AdditionalAgreement}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.AdditionalAgreement}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.AdditionalAgreement',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumCeActivity: {\r\n\t\tdefaultValue: 'CE Activity',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.CeActivity}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.CeActivity}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tlegacyName: 'Credential.ContinuingEducation/System.Enum.CrcatType.CEActivity',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumCertAgreement: {\r\n\t\tdefaultValue: 'Certification Agreement',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.CertAgreement}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.CertAgreement}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.CertAgreement',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumEnrollment: {\r\n\t\tdefaultValue: 'Enrollment',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Enrollment}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Enrollment}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Enrollment',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumExternalCert: {\r\n\t\tdefaultValue: 'External Certification',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.ExternalCert}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.ExternalCert}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.ExternalCert',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumExternalExam: {\r\n\t\tdefaultValue: 'External Exam',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.ExternalExam}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.ExternalExam}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.ExternalExam',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumLab: {\r\n\t\tdefaultValue: 'Lab',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Lab}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Lab}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Lab',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumMiscellaneous: {\r\n\t\tdefaultValue: 'Miscellaneous',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Miscellaneous}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Miscellaneous}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Miscellaneous',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumParticipation: {\r\n\t\tdefaultValue: 'Participation',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Participation}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Participation}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Participation',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumProgramFee: {\r\n\t\tdefaultValue: 'Program Fee',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.ProgramFee}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.ProgramFee}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.ProgramFee',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumStandingLengthyCert: {\r\n\t\tdefaultValue: 'Standing Lengthy Certification',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.StandingLengthyCert}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.StandingLengthyCert}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CrcatType.StandingLengthyCert',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumStandingMultiCert: {\r\n\t\tdefaultValue: 'Standing Multi Certification',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.StandingMultiCert}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.StandingMultiCert}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CrcatType.StandingMultiCert',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCrcatTypeEnumTraining: {\r\n\t\tdefaultValue: 'Training',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Training}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Training}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Training',\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spCrcatTypeEnumLocs: LocDefs = {\r\n\tSPCrcatTypeEnumAdditionalAgreement: {\r\n\t\tdefaultValue: 'Additional Agreement',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.AdditionalAgreement}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.AdditionalAgreement}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.AdditionalAgreement',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumCeActivity: {\r\n\t\tdefaultValue: 'CE Activity',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.CeActivity}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.CeActivity}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tlegacyName: 'Credential.ContinuingEducation/System.Enum.CrcatType.CEActivity',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumCertAgreement: {\r\n\t\tdefaultValue: 'Certification Agreement',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.CertAgreement}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.CertAgreement}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.CertAgreement',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumEnrollment: {\r\n\t\tdefaultValue: 'Enrollment',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Enrollment}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Enrollment}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Enrollment',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumExternalCert: {\r\n\t\tdefaultValue: 'External Certification',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.ExternalCert}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.ExternalCert}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.ExternalCert',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumExternalExam: {\r\n\t\tdefaultValue: 'External Exam',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.ExternalExam}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.ExternalExam}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.ExternalExam',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumLab: {\r\n\t\tdefaultValue: 'Lab',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Lab}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Lab}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Lab',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumMiscellaneous: {\r\n\t\tdefaultValue: 'Miscellaneous',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Miscellaneous}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Miscellaneous}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Miscellaneous',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumParticipation: {\r\n\t\tdefaultValue: 'Participation',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Participation}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Participation}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Participation',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumProgramFee: {\r\n\t\tdefaultValue: 'Program Fee',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.ProgramFee}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.ProgramFee}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.ProgramFee',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumStandingLengthyCert: {\r\n\t\tdefaultValue: 'Standing Lengthy Certification',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.StandingLengthyCert}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.StandingLengthyCert}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CrcatType.StandingLengthyCert',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumStandingMultiCert: {\r\n\t\tdefaultValue: 'Standing Multi Certification',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.StandingMultiCert}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.StandingMultiCert}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CrcatType.StandingMultiCert',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCrcatTypeEnumTraining: {\r\n\t\tdefaultValue: 'Training',\r\n\t\tdisplayPath: `${dpRoot}|${CrcatType.Training}`,\r\n\t\tdescription: `Credential requirement catalog type: '${CrcatType.Training}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\tlegacyName: 'Core/System.Enum.CrcatType.Training',\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const CRCAT_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpCrcatTypeEnumLocs,\r\n\t...spCrcatTypeEnumLocs,\r\n});\r\n\r\nexport type CPCrcatTypeEnumLocType = LocMap;\r\nexport type SPCrcatTypeEnumLocType = LocMap;\r\n\r\nexport const cpCrcatTypeKeys: { [key in CrcatType]: keyof CPCrcatTypeEnumLocType } = {\r\n\t[CrcatType.AdditionalAgreement]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumAdditionalAgreement,\r\n\t[CrcatType.CeActivity]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumCeActivity,\r\n\t[CrcatType.CertAgreement]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumCertAgreement,\r\n\t[CrcatType.Enrollment]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumEnrollment,\r\n\t[CrcatType.ExternalCert]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumExternalCert,\r\n\t[CrcatType.ExternalExam]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumExternalExam,\r\n\t[CrcatType.Lab]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumLab,\r\n\t[CrcatType.Miscellaneous]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumMiscellaneous,\r\n\t[CrcatType.Participation]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumParticipation,\r\n\t[CrcatType.ProgramFee]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumProgramFee,\r\n\t[CrcatType.StandingLengthyCert]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumStandingLengthyCert,\r\n\t[CrcatType.StandingMultiCert]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumStandingMultiCert,\r\n\t[CrcatType.Training]: CRCAT_TYPE_ENUM_LOCS.CPCrcatTypeEnumTraining,\r\n};\r\n\r\nexport const spCrcatTypeKeys: { [key in CrcatType]: keyof SPCrcatTypeEnumLocType } = {\r\n\t[CrcatType.AdditionalAgreement]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumAdditionalAgreement,\r\n\t[CrcatType.CeActivity]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumCeActivity,\r\n\t[CrcatType.CertAgreement]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumCertAgreement,\r\n\t[CrcatType.Enrollment]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumEnrollment,\r\n\t[CrcatType.ExternalCert]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumExternalCert,\r\n\t[CrcatType.ExternalExam]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumExternalExam,\r\n\t[CrcatType.Lab]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumLab,\r\n\t[CrcatType.Miscellaneous]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumMiscellaneous,\r\n\t[CrcatType.Participation]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumParticipation,\r\n\t[CrcatType.ProgramFee]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumProgramFee,\r\n\t[CrcatType.StandingLengthyCert]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumStandingLengthyCert,\r\n\t[CrcatType.StandingMultiCert]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumStandingMultiCert,\r\n\t[CrcatType.Training]: CRCAT_TYPE_ENUM_LOCS.SPCrcatTypeEnumTraining,\r\n};\r\n","import { CreqReviewState, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Credential Requirement Review State|`;\r\n\r\nconst sharedLocData: Pick = {\r\n\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\thtmlAllowed: false,\r\n\tshared: true,\r\n\tfeature: HubFeature.OtherRequirement,\r\n};\r\n\r\nexport type CReqReviewStateLocs =\r\n\t| 'CReqReviewStateNone'\r\n\t| 'CReqReviewStatePendingPostReview'\r\n\t| 'CReqReviewStatePendingPreReview'\r\n\t| 'CReqReviewStateReviewed'\r\n\t| 'CReqReviewStateUnderReview';\r\n\r\nconst creqReviewStateDefaults: Omit, 'portal'> = {\r\n\tCReqReviewStateNone: {\r\n\t\tdefaultValue: 'None',\r\n\t\tdisplayPath: `${dpRoot}${CreqReviewState.None}`,\r\n\t\tdescription: `System value for '${CreqReviewState.None}' review state.`,\r\n\t\tlegacyName: 'OtherRequirement/System.Enum.CreqReviewState.None',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCReqReviewStatePendingPostReview: {\r\n\t\tdefaultValue: 'Pending Post Review',\r\n\t\tdisplayPath: `${dpRoot}${CreqReviewState.PendingPostReview}`,\r\n\t\tdescription: `System value for '${CreqReviewState.PendingPostReview}' review state.`,\r\n\t\tlegacyName: 'OtherRequirement/System.Enum.CreqReviewState.PendingPostReview',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCReqReviewStatePendingPreReview: {\r\n\t\tdefaultValue: 'Pending Pre Review',\r\n\t\tdisplayPath: `${dpRoot}${CreqReviewState.PendingPreReview}`,\r\n\t\tdescription: `System value for '${CreqReviewState.PendingPreReview}' review state.`,\r\n\t\tlegacyName: 'OtherRequirement/System.Enum.CreqReviewState.PendingPreReview',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCReqReviewStateReviewed: {\r\n\t\tdefaultValue: 'Reviewed',\r\n\t\tdisplayPath: `${dpRoot}${CreqReviewState.Reviewed}`,\r\n\t\tdescription: `System value for '${CreqReviewState.Reviewed}' review state.`,\r\n\t\tlegacyName: 'OtherRequirement/System.Enum.CreqReviewState.Reviewed',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCReqReviewStateUnderReview: {\r\n\t\tdefaultValue: 'Audit',\r\n\t\tdisplayPath: `${dpRoot}${CreqReviewState.UnderReview}`,\r\n\t\tdescription: `System value for '${CreqReviewState.UnderReview}' review state.`,\r\n\t\tlegacyName: 'OtherRequirement/System.Enum.CreqReviewState.UnderReview',\r\n\t\t...sharedLocData,\r\n\t},\r\n};\r\n\r\nexport type CReqReviewStateLocType = LocMap;\r\n\r\nexport const spCReqReviewStateLocs: LocDefs = {\r\n\tCReqReviewStateNone: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStateNone,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tCReqReviewStatePendingPostReview: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStatePendingPostReview,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tCReqReviewStatePendingPreReview: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStatePendingPreReview,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tCReqReviewStateReviewed: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStateReviewed,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tCReqReviewStateUnderReview: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStateUnderReview,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const SP_CREQ_REVIEW_STATE_ENUM_LOCS = MapLocKeys({\r\n\t...spCReqReviewStateLocs,\r\n});\r\n\r\nexport const spCReqReviewStateKeys: { [key in CreqReviewState]?: keyof CReqReviewStateLocType } = {\r\n\t[CreqReviewState.None]: SP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStateNone,\r\n\t[CreqReviewState.PendingPostReview]:\r\n\t\tSP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStatePendingPostReview,\r\n\t[CreqReviewState.PendingPreReview]:\r\n\t\tSP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStatePendingPreReview,\r\n\t[CreqReviewState.Reviewed]: SP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStateReviewed,\r\n\t[CreqReviewState.UnderReview]: SP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStateUnderReview,\r\n};\r\n\r\nexport const cpCReqReviewStateLocs: LocDefs = {\r\n\tCReqReviewStateNone: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStateNone,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCReqReviewStatePendingPostReview: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStatePendingPostReview,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCReqReviewStatePendingPreReview: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStatePendingPreReview,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCReqReviewStateReviewed: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStateReviewed,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCReqReviewStateUnderReview: {\r\n\t\t...creqReviewStateDefaults.CReqReviewStateUnderReview,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const CP_CREQ_REVIEW_STATE_ENUM_LOCS = MapLocKeys({\r\n\t...cpCReqReviewStateLocs,\r\n});\r\n\r\nexport const cpCReqReviewStateKeys: { [key in CreqReviewState]?: keyof CReqReviewStateLocType } = {\r\n\t[CreqReviewState.None]: CP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStateNone,\r\n\t[CreqReviewState.PendingPostReview]:\r\n\t\tCP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStatePendingPostReview,\r\n\t[CreqReviewState.PendingPreReview]:\r\n\t\tCP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStatePendingPreReview,\r\n\t[CreqReviewState.Reviewed]: CP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStateReviewed,\r\n\t[CreqReviewState.UnderReview]: CP_CREQ_REVIEW_STATE_ENUM_LOCS.CReqReviewStateUnderReview,\r\n};\r\n","import { CreqStatus, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Credential Requirement Status`;\r\n\r\nexport type CPCreqStatusLocs =\r\n\t| 'CPCreqStatusEnumActive'\r\n\t| 'CPCreqStatusEnumInActive'\r\n\t| 'CPCreqStatusEnumInvalid';\r\n\r\nexport type SPCreqStatusLocs =\r\n\t| 'SPCreqStatusEnumActive'\r\n\t| 'SPCreqStatusEnumInActive'\r\n\t| 'SPCreqStatusEnumInvalid';\r\n\r\nexport const cpCreqStatusEnumLocs: LocDefs = {\r\n\tCPCreqStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}|${CreqStatus.Active}`,\r\n\t\tdescription: `System value for credential requirement status: '${CreqStatus.Active}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CreqStatus.Active',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCreqStatusEnumInActive: {\r\n\t\tdefaultValue: 'Inactive',\r\n\t\tdisplayPath: `${dpRoot}|${CreqStatus.InActive}`,\r\n\t\tdescription: `System value for credential requirement status: '${CreqStatus.InActive}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CreqStatus.InActive',\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPCreqStatusEnumInvalid: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdisplayPath: `${dpRoot}|${CreqStatus.Invalid}`,\r\n\t\tdescription: `System value for credential requirement status: '${CreqStatus.Invalid}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CreqStatus.Invalid',\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spCreqStatusEnumLocs: LocDefs = {\r\n\tSPCreqStatusEnumActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdisplayPath: `${dpRoot}|${CreqStatus.Active}`,\r\n\t\tdescription: `System value for credential requirement status: '${CreqStatus.Active}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CreqStatus.Active',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCreqStatusEnumInActive: {\r\n\t\tdefaultValue: 'Inactive',\r\n\t\tdisplayPath: `${dpRoot}|${CreqStatus.InActive}`,\r\n\t\tdescription: `System value for credential requirement status: '${CreqStatus.InActive}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CreqStatus.InActive',\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPCreqStatusEnumInvalid: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdisplayPath: `${dpRoot}|${CreqStatus.Invalid}`,\r\n\t\tdescription: `System value for credential requirement status: '${CreqStatus.Invalid}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialAchievements,\r\n\t\tlegacyName: 'Credential.Achievements/System.Enum.CreqStatus.Invalid',\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const CREQ_STATUS_ENUM_LOCS = MapLocKeys({\r\n\t...cpCreqStatusEnumLocs,\r\n\t...spCreqStatusEnumLocs,\r\n});\r\n\r\nexport type CPCreqStatusEnumLocType = LocMap;\r\nexport type SPCreqStatusEnumLocType = LocMap;\r\n\r\nexport const cpCreqStatusKeys: { [key in CreqStatus]: keyof CPCreqStatusEnumLocType } = {\r\n\t[CreqStatus.Active]: CREQ_STATUS_ENUM_LOCS.CPCreqStatusEnumActive,\r\n\t[CreqStatus.InActive]: CREQ_STATUS_ENUM_LOCS.CPCreqStatusEnumInActive,\r\n\t[CreqStatus.Invalid]: CREQ_STATUS_ENUM_LOCS.CPCreqStatusEnumInvalid,\r\n};\r\n\r\nexport const spCreqStatusKeys: { [key in CreqStatus]: keyof SPCreqStatusEnumLocType } = {\r\n\t[CreqStatus.Active]: CREQ_STATUS_ENUM_LOCS.SPCreqStatusEnumActive,\r\n\t[CreqStatus.InActive]: CREQ_STATUS_ENUM_LOCS.SPCreqStatusEnumInActive,\r\n\t[CreqStatus.Invalid]: CREQ_STATUS_ENUM_LOCS.SPCreqStatusEnumInvalid,\r\n};\r\n","import { EticatType, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|ECommerce|E-Transaction Item Catalog Type`;\r\n\r\nexport type CPETransactionItemCatTypeLocs =\r\n\t| 'CPETransactionItemCatTypeEnumCrcat'\r\n\t| 'CPETransactionItemCatTypeEnumFcat'\r\n\t| 'CPETransactionItemCatTypeEnumNone';\r\n\r\nexport type SPETransactionItemCatTypeLocs =\r\n\t| 'SPETransactionItemCatTypeEnumCrcat'\r\n\t| 'SPETransactionItemCatTypeEnumFcat'\r\n\t| 'SPETransactionItemCatTypeEnumNone';\r\n\r\nexport const cpETransactionItemCatTypeEnumLocs: LocDefs = {\r\n\tCPETransactionItemCatTypeEnumCrcat: {\r\n\t\tdefaultValue: 'Certification Requirement',\r\n\t\tdisplayPath: `${dpRoot}|${EticatType.Crcat}`,\r\n\t\tdescription: `System value for e-transaction item catalog type: '${EticatType.Crcat}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPETransactionItemCatTypeEnumFcat: {\r\n\t\tdefaultValue: 'Fulfillment',\r\n\t\tdisplayPath: `${dpRoot}|${EticatType.Fcat}`,\r\n\t\tdescription: `System value for e-transaction item catalog type: '${EticatType.Fcat}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPETransactionItemCatTypeEnumNone: {\r\n\t\tdefaultValue: 'None',\r\n\t\tdisplayPath: `${dpRoot}|${EticatType.None}`,\r\n\t\tdescription: `System value for e-transaction item catalog type: '${EticatType.None}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spETransactionItemCatTypeEnumLocs: LocDefs = {\r\n\tSPETransactionItemCatTypeEnumCrcat: {\r\n\t\tdefaultValue: 'Certification Requirement',\r\n\t\tdisplayPath: `${dpRoot}|${EticatType.Crcat}`,\r\n\t\tdescription: `System value for e-transaction item catalog type: '${EticatType.Crcat}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPETransactionItemCatTypeEnumFcat: {\r\n\t\tdefaultValue: 'Fulfillment',\r\n\t\tdisplayPath: `${dpRoot}|${EticatType.Fcat}`,\r\n\t\tdescription: `System value for e-transaction item catalog type: '${EticatType.Fcat}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPETransactionItemCatTypeEnumNone: {\r\n\t\tdefaultValue: 'None',\r\n\t\tdisplayPath: `${dpRoot}|${EticatType.None}`,\r\n\t\tdescription: `System value for e-transaction item catalog type: '${EticatType.None}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nconst E_TRANSACTION_STATE_LOCS = MapLocKeys<\r\n\tCPETransactionItemCatTypeLocs | SPETransactionItemCatTypeLocs\r\n>({\r\n\t...cpETransactionItemCatTypeEnumLocs,\r\n\t...spETransactionItemCatTypeEnumLocs,\r\n});\r\n\r\nexport type CPETransactionItemCatEnumLocType = LocMap;\r\nexport type SPETransactionItemCatEnumLocType = LocMap;\r\n\r\nexport const cpETransactionItemCatTypeKeys: {\r\n\t[key in EticatType]: keyof CPETransactionItemCatEnumLocType;\r\n} = {\r\n\t[EticatType.Crcat]: E_TRANSACTION_STATE_LOCS.CPETransactionItemCatTypeEnumCrcat,\r\n\t[EticatType.Fcat]: E_TRANSACTION_STATE_LOCS.CPETransactionItemCatTypeEnumFcat,\r\n\t[EticatType.None]: E_TRANSACTION_STATE_LOCS.CPETransactionItemCatTypeEnumNone,\r\n};\r\n\r\nexport const spETransactionItemCatTypeKeys: {\r\n\t[key in EticatType]: keyof SPETransactionItemCatEnumLocType;\r\n} = {\r\n\t[EticatType.Crcat]: E_TRANSACTION_STATE_LOCS.SPETransactionItemCatTypeEnumCrcat,\r\n\t[EticatType.Fcat]: E_TRANSACTION_STATE_LOCS.SPETransactionItemCatTypeEnumFcat,\r\n\t[EticatType.None]: E_TRANSACTION_STATE_LOCS.SPETransactionItemCatTypeEnumNone,\r\n};\r\n","import { EtState, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|ECommerce|E-Transaction State`;\r\n\r\nexport type CPETransactionStateLocs =\r\n\t| 'CPETransactionStateEnumFailure'\r\n\t| 'CPETransactionStateEnumPending'\r\n\t| 'CPETransactionStateEnumSuccess'\r\n\t| 'CPETransactionStateEnumVoid';\r\n\r\nexport type SPETransactionStateLocs =\r\n\t| 'SPETransactionStateEnumFailure'\r\n\t| 'SPETransactionStateEnumPending'\r\n\t| 'SPETransactionStateEnumSuccess'\r\n\t| 'SPETransactionStateEnumVoid';\r\n\r\nexport const cpETransactionStateEnumLocs: LocDefs = {\r\n\tCPETransactionStateEnumFailure: {\r\n\t\tdefaultValue: 'Failure',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Failure}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Failure}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPETransactionStateEnumPending: {\r\n\t\tdefaultValue: 'Pending',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Pending}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Pending}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPETransactionStateEnumSuccess: {\r\n\t\tdefaultValue: 'Success',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Success}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Success}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPETransactionStateEnumVoid: {\r\n\t\tdefaultValue: 'Void',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Void}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Void}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spETransactionStateEnumLocs: LocDefs = {\r\n\tSPETransactionStateEnumFailure: {\r\n\t\tdefaultValue: 'Failure',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Failure}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Failure}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPETransactionStateEnumPending: {\r\n\t\tdefaultValue: 'Pending',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Pending}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Pending}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPETransactionStateEnumSuccess: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Success}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Success}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPETransactionStateEnumVoid: {\r\n\t\tdefaultValue: 'Void',\r\n\t\tdisplayPath: `${dpRoot}|${EtState.Void}`,\r\n\t\tdescription: `System value for e-transaction status: '${EtState.Void}'`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Ecommerce,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nconst E_TRANSACTION_STATE_LOCS = MapLocKeys({\r\n\t...cpETransactionStateEnumLocs,\r\n\t...spETransactionStateEnumLocs,\r\n});\r\n\r\nexport type CPETransactionStateEnumLocType = LocMap;\r\nexport type SPETransactionStateEnumLocType = LocMap;\r\n\r\nexport const cpETransactionStateKeys: { [key in EtState]: keyof CPETransactionStateEnumLocType } = {\r\n\t[EtState.Failure]: E_TRANSACTION_STATE_LOCS.CPETransactionStateEnumFailure,\r\n\t[EtState.Pending]: E_TRANSACTION_STATE_LOCS.CPETransactionStateEnumPending,\r\n\t[EtState.Success]: E_TRANSACTION_STATE_LOCS.CPETransactionStateEnumSuccess,\r\n\t[EtState.Void]: E_TRANSACTION_STATE_LOCS.CPETransactionStateEnumVoid,\r\n};\r\n\r\nexport const spETransactionStateKeys: { [key in EtState]: keyof SPETransactionStateEnumLocType } = {\r\n\t[EtState.Failure]: E_TRANSACTION_STATE_LOCS.SPETransactionStateEnumFailure,\r\n\t[EtState.Pending]: E_TRANSACTION_STATE_LOCS.SPETransactionStateEnumPending,\r\n\t[EtState.Success]: E_TRANSACTION_STATE_LOCS.SPETransactionStateEnumSuccess,\r\n\t[EtState.Void]: E_TRANSACTION_STATE_LOCS.SPETransactionStateEnumVoid,\r\n};\r\n","import { EligibleExamActionType, HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Eligible Exam Action Type`;\r\n\r\nexport type CPEligibleExamActionTypeLocs =\r\n\t| 'CPEligibleExamActionTypeEnumLiteweightRecertify'\r\n\t| 'CPEligibleExamActionTypeEnumSchedule';\r\n\r\nexport type SPEligibleExamActionTypeLocs =\r\n\t| 'SPEligibleExamActionTypeEnumLiteweightRecertify'\r\n\t| 'SPEligibleExamActionTypeEnumSchedule';\r\n\r\nexport const cpEligibleExamActionTypeEnumLocs: LocDefs = {\r\n\tCPEligibleExamActionTypeEnumLiteweightRecertify: {\r\n\t\tdefaultValue: 'Liteweight Recertify',\r\n\t\tdisplayPath: `${dpRoot}|Recertify`,\r\n\t\tdescription: `System value for 'Liteweight Recertify' Eligible Exam Action Type`,\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.LiteWeightRecertifyFacebook/System.Enum.EligibleExamActionType.LiteweightRecertify',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.OtherRequirementLiteWeightRecertifyFacebook,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPEligibleExamActionTypeEnumSchedule: {\r\n\t\tdefaultValue: 'Schedule',\r\n\t\tdisplayPath: `${dpRoot}|${EligibleExamActionType.Schedule}`,\r\n\t\tdescription: `System value for '${EligibleExamActionType.Schedule}' Eligible Exam Action Type`,\r\n\t\tlegacyName: 'Exam.Scheduling/System.Enum.EligibleExamActionType.Schedule',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.ExamScheduling,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const spEligibleExamActionTypeEnumLocs: LocDefs = {\r\n\tSPEligibleExamActionTypeEnumLiteweightRecertify: {\r\n\t\tdefaultValue: 'Liteweight Recertify',\r\n\t\tdisplayPath: `${dpRoot}|Recertify`,\r\n\t\tdescription: `System value for 'Liteweight Recertify' Eligible Exam Action Type`,\r\n\t\tlegacyName:\r\n\t\t\t'OtherRequirement.LiteWeightRecertifyFacebook/System.Enum.EligibleExamActionType.LiteweightRecertify',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.OtherRequirementLiteWeightRecertifyFacebook,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tSPEligibleExamActionTypeEnumSchedule: {\r\n\t\tdefaultValue: 'Schedule',\r\n\t\tdisplayPath: `${dpRoot}|${EligibleExamActionType.Schedule}`,\r\n\t\tdescription: `System value for '${EligibleExamActionType.Schedule}' Eligible Exam Action Type`,\r\n\t\tlegacyName: 'Exam.Scheduling/System.Enum.EligibleExamActionType.Schedule',\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.ExamScheduling,\r\n\t\tportal: 'SP',\r\n\t},\r\n};\r\n\r\nexport const ELIGIBLE_EXAM_ACTION_TYPE_ENUM_LOCS = MapLocKeys<\r\n\tCPEligibleExamActionTypeLocs | SPEligibleExamActionTypeLocs\r\n>({\r\n\t...cpEligibleExamActionTypeEnumLocs,\r\n\t...spEligibleExamActionTypeEnumLocs,\r\n});\r\n\r\nexport type CPEligibleExamActionTypeEnumLocType = LocMap;\r\nexport type SPEligibleExamActionTypeEnumLocType = LocMap;\r\n\r\nexport const cpEligibleExamActionTypeKeys: {\r\n\t[key in EligibleExamActionType]: keyof CPEligibleExamActionTypeEnumLocType;\r\n} = {\r\n\t[EligibleExamActionType.LiteweightRecertify]:\r\n\t\tELIGIBLE_EXAM_ACTION_TYPE_ENUM_LOCS.CPEligibleExamActionTypeEnumLiteweightRecertify,\r\n\t[EligibleExamActionType.Schedule]:\r\n\t\tELIGIBLE_EXAM_ACTION_TYPE_ENUM_LOCS.CPEligibleExamActionTypeEnumSchedule,\r\n};\r\n\r\nexport const spEligibleExamActionTypeKeys: {\r\n\t[key in EligibleExamActionType]: keyof SPEligibleExamActionTypeEnumLocType;\r\n} = {\r\n\t[EligibleExamActionType.LiteweightRecertify]:\r\n\t\tELIGIBLE_EXAM_ACTION_TYPE_ENUM_LOCS.SPEligibleExamActionTypeEnumLiteweightRecertify,\r\n\t[EligibleExamActionType.Schedule]:\r\n\t\tELIGIBLE_EXAM_ACTION_TYPE_ENUM_LOCS.SPEligibleExamActionTypeEnumSchedule,\r\n};\r\n","import { cpBadgeTypeKeys, spBadgeTypeKeys } from './badge-type.locs';\r\nimport { cpBcatGrantTypeKeys, spBcatGrantTypeKeys } from './bcat-grant-type.locs';\r\nimport { cpBcatTypeKeys, spBcatTypeKeys } from './benefit-catalog-type.locs';\r\nimport { cpBenefitStatusKeys, spBenefitStatusKeys } from './benefit-status.locs';\r\nimport { cpWuserCandRestrictTypeKeys, spWuserCandRestrictTypeKeys } from './cand-restrict-type.locs';\r\nimport { cpCateidTypeKeys, spCateidTypeKeys } from './cateid-type.locs';\r\nimport { cpCcatExtensionTypeKeys, spCcatExtensionTypeKeys } from './ccat-extension-type.locs';\r\nimport { cpCcatPathTypeKeys, spCcatPathTypeKeys } from './ccat-path-type.locs';\r\nimport { cpCertCatalogStatusKeys, spCertCatalogStatusKeys } from './cert-catalog-status.locs';\r\nimport { cpCertStatusKeys, spCertStatusKeys } from './cert-status.locs';\r\nimport { spCfcRuleKeys } from './cfc-rule.locs';\r\nimport { cpChTypeKeys, spChTypeKeys } from './ch-type.locs';\r\nimport { cpCprStateKeys, spCprStateKeys } from './cpr-state.locs';\r\nimport { cpCprTypeKeys, spCprTypeKeys } from './cpr-type.locs';\r\nimport { cpCrcatTypeKeys, spCrcatTypeKeys } from './crcat-type.locs';\r\nimport { cpCReqReviewStateKeys, spCReqReviewStateKeys } from './creq-review-state.locs';\r\nimport { cpCreqStatusKeys, spCreqStatusKeys } from './creq-status.locs';\r\nimport { cpEligibleExamActionTypeKeys, spEligibleExamActionTypeKeys } from './eligible-exam-action-type.locs';\r\nimport { cpExamGradeLabelKeys, spExamGradeLabelKeys } from './exam-grade-label.locs';\r\nimport { cpExamStateKeys, spExamStateKeys } from './exam-state.locs';\r\nimport { cpFcatQueueTypeKeys, spFcatQueueTypeKeys } from './fcat-queue-type.locs';\r\nimport { cpFulfillmentStatusKeys, spFulfillmentStatusKeys } from './fulfillment-status.locs';\r\nexport { cpBcatGrantTypeKeys, spBcatGrantTypeKeys } from './bcat-grant-type.locs';\r\nexport { cpBcatTypeKeys, spBcatTypeKeys } from './benefit-catalog-type.locs';\r\nexport { cpWuserCandRestrictTypeKeys, spWuserCandRestrictTypeKeys } from './cand-restrict-type.locs';\r\nexport { cpCateidTypeKeys, spCateidTypeKeys } from './cateid-type.locs';\r\nexport { cpCertStatusKeys, spCertStatusKeys } from './cert-status.locs';\r\nexport { cpChTypeKeys, spChTypeKeys } from './ch-type.locs';\r\nexport {\r\n\tcpETransactionItemCatTypeKeys,\r\n\tspETransactionItemCatTypeKeys,\r\n} from './e-transaction-item-cat-type.locs';\r\nexport { cpETransactionStateKeys, spETransactionStateKeys } from './e-transaction-state.locs';\r\nexport { cpExauthStateKeys, spExauthStateKeys } from './ex-auth-state.locs';\r\nexport { cpExamGradeLabelKeys, spExamGradeLabelKeys } from './exam-grade-label.locs';\r\nexport { cpFcatQueueTypeKeys, spFcatQueueTypeKeys } from './fcat-queue-type.locs';\r\nexport { cpFulfillmentStatusKeys, spFulfillmentStatusKeys } from './fulfillment-status.locs';\r\n\r\nexport const GLOBAL_ENUM_KEYS = {\r\n\tcpCertStatus: cpCertStatusKeys,\r\n\tspCertStatus: spCertStatusKeys,\r\n\tcpExamGradeLabel: cpExamGradeLabelKeys,\r\n\tspExamGradeLabel: spExamGradeLabelKeys,\r\n\tcpExamState: cpExamStateKeys,\r\n\tspExamState: spExamStateKeys,\r\n\tcpBenefitStatus: cpBenefitStatusKeys,\r\n\tspBenefitStatus: spBenefitStatusKeys,\r\n\tspCfcRule: spCfcRuleKeys,\r\n\tcpCcatExtensionType: cpCcatExtensionTypeKeys,\r\n\tspCcatExtensionType: spCcatExtensionTypeKeys,\r\n\tcpCcatPathType: cpCcatPathTypeKeys,\r\n\tspCcatPathType: spCcatPathTypeKeys,\r\n\tcpBadgeType: cpBadgeTypeKeys,\r\n\tspBadgeType: spBadgeTypeKeys,\r\n\tcpBcatType: cpBcatTypeKeys,\r\n\tspBcatType: spBcatTypeKeys,\r\n\tcpBcatGrantType: cpBcatGrantTypeKeys,\r\n\tspBcatGrantType: spBcatGrantTypeKeys,\r\n\tcpFcatQueueType: cpFcatQueueTypeKeys,\r\n\tspFcatQueueType: spFcatQueueTypeKeys,\r\n\tcpCertCatalogStatus: cpCertCatalogStatusKeys,\r\n\tspCertCatalogStatus: spCertCatalogStatusKeys,\r\n\tcpEligibleExamActionType: cpEligibleExamActionTypeKeys,\r\n\tspEligibleExamActionType: spEligibleExamActionTypeKeys,\r\n\tcpCateidType: cpCateidTypeKeys,\r\n\tspCateidType: spCateidTypeKeys,\r\n\tcpCReqReviewState: cpCReqReviewStateKeys,\r\n\tspCReqReviewState: spCReqReviewStateKeys,\r\n\tcpCrcatType: cpCrcatTypeKeys,\r\n\tspCrcatType: spCrcatTypeKeys,\r\n\tcpCreqStatus: cpCreqStatusKeys,\r\n\tspCreqStatus: spCreqStatusKeys,\r\n\tcpCprType: cpCprTypeKeys,\r\n\tspCprType: spCprTypeKeys,\r\n\tcpCprState: cpCprStateKeys,\r\n\tspCprState: spCprStateKeys,\r\n\tcpChType: cpChTypeKeys,\r\n\tspChType: spChTypeKeys,\r\n\tcpFulfillmentStatus: cpFulfillmentStatusKeys,\r\n\tspFulfillmentStatus: spFulfillmentStatusKeys,\r\n\tcpWuserCandRestrictType: cpWuserCandRestrictTypeKeys,\r\n\tspWuserCandRestrictType: spWuserCandRestrictTypeKeys,\r\n};\r\n","import { cpBadgeTypeEnumLocs, spBadgeTypeEnumLocs } from './badge-type.locs';\r\nimport { cpBcatGrantTypeEnumLocs, spBcatGrantTypeEnumLocs } from './bcat-grant-type.locs';\r\nimport { cpBcatTypeEnumLocs, spBcatTypeEnumLocs } from './benefit-catalog-type.locs';\r\nimport { cpBenefitStatusEnumLocs, spBenefitStatusEnumLocs } from './benefit-status.locs';\r\nimport {\r\n\tcpCcatExtensionTypeEnumLocs,\r\n\tspCcatExtensionTypeEnumLocs,\r\n} from './ccat-extension-type.locs';\r\n\r\nimport { cpCateidTypeEnumLocs, spCateidTypeEnumLocs } from './cateid-type.locs';\r\n\r\nimport {\r\n\tcpWuserCandRestrictTypeEnumLocs,\r\n\tspWuserCandRestrictTypeEnumLocs,\r\n} from './cand-restrict-type.locs';\r\nimport { cpCcatPathTypeEnumLocs, spCcatPathTypeEnumLocs } from './ccat-path-type.locs';\r\nimport {\r\n\tcpCertCatalogStatusEnumLocs,\r\n\tspCertCatalogStatusEnumLocs,\r\n} from './cert-catalog-status.locs';\r\nimport { cpCertStatusEnumLocs, spCertStatusEnumLocs } from './cert-status.locs';\r\nimport { spCfcRuleEnumLocs } from './cfc-rule.locs';\r\nimport { cpChTypeEnumLocs, spChTypeEnumLocs } from './ch-type.locs';\r\nimport { cpCprStateEnumLocs, spCprStateEnumLocs } from './cpr-state.locs';\r\nimport { cpCprTypeEnumLocs, spCprTypeEnumLocs } from './cpr-type.locs';\r\nimport { cpCrcatTypeEnumLocs, spCrcatTypeEnumLocs } from './crcat-type.locs';\r\nimport { cpCReqReviewStateLocs, spCReqReviewStateLocs } from './creq-review-state.locs';\r\nimport { cpCreqStatusEnumLocs, spCreqStatusEnumLocs } from './creq-status.locs';\r\nimport {\r\n\tcpETransactionItemCatTypeEnumLocs,\r\n\tspETransactionItemCatTypeEnumLocs,\r\n} from './e-transaction-item-cat-type.locs';\r\nimport {\r\n\tcpETransactionStateEnumLocs,\r\n\tspETransactionStateEnumLocs,\r\n} from './e-transaction-state.locs';\r\nimport {\r\n\tcpEligibleExamActionTypeEnumLocs,\r\n\tspEligibleExamActionTypeEnumLocs,\r\n} from './eligible-exam-action-type.locs';\r\nimport { cpExauthStateEnumLocs, spExauthStateEnumLocs } from './ex-auth-state.locs';\r\nimport { cpExamGradeLabelEnumLocs, spExamGradeLabelEnumLocs } from './exam-grade-label.locs';\r\nimport { cpExamStateEnumLocs, spExamStateEnumLocs } from './exam-state.locs';\r\nimport { cpFcatQueueTypeEnumLocs, spFcatQueueTypeEnumLocs } from './fcat-queue-type.locs';\r\nimport {\r\n\tcpFulfillmentStatusEnumLocs,\r\n\tspFulfillmentStatusEnumLocs,\r\n} from './fulfillment-status.locs';\r\nexport const enumLocs = {\r\n\t...cpCertStatusEnumLocs,\r\n\t...spCertStatusEnumLocs,\r\n\t...cpCertCatalogStatusEnumLocs,\r\n\t...spCertCatalogStatusEnumLocs,\r\n\t...cpBenefitStatusEnumLocs,\r\n\t...spBenefitStatusEnumLocs,\r\n\t...cpExamGradeLabelEnumLocs,\r\n\t...spExamGradeLabelEnumLocs,\r\n\t...cpExamStateEnumLocs,\r\n\t...spExamStateEnumLocs,\r\n\t...spCfcRuleEnumLocs,\r\n\t...cpCcatExtensionTypeEnumLocs,\r\n\t...spCcatExtensionTypeEnumLocs,\r\n\t...cpCcatPathTypeEnumLocs,\r\n\t...spCcatPathTypeEnumLocs,\r\n\t...cpBadgeTypeEnumLocs,\r\n\t...spBadgeTypeEnumLocs,\r\n\t...cpBcatTypeEnumLocs,\r\n\t...spBcatTypeEnumLocs,\r\n\t...cpBcatGrantTypeEnumLocs,\r\n\t...spBcatGrantTypeEnumLocs,\r\n\t...cpFcatQueueTypeEnumLocs,\r\n\t...spFcatQueueTypeEnumLocs,\r\n\t...cpEligibleExamActionTypeEnumLocs,\r\n\t...spEligibleExamActionTypeEnumLocs,\r\n\t...cpCateidTypeEnumLocs,\r\n\t...spCateidTypeEnumLocs,\r\n\t...cpCReqReviewStateLocs,\r\n\t...spCReqReviewStateLocs,\r\n\t...cpCrcatTypeEnumLocs,\r\n\t...spCrcatTypeEnumLocs,\r\n\t...cpCreqStatusEnumLocs,\r\n\t...spCreqStatusEnumLocs,\r\n\t...cpCReqReviewStateLocs,\r\n\t...spCReqReviewStateLocs,\r\n\t...cpCprTypeEnumLocs,\r\n\t...spCprTypeEnumLocs,\r\n\t...cpCprStateEnumLocs,\r\n\t...spCprStateEnumLocs,\r\n\t...cpChTypeEnumLocs,\r\n\t...spChTypeEnumLocs,\r\n\t...cpFulfillmentStatusEnumLocs,\r\n\t...spFulfillmentStatusEnumLocs,\r\n\t...cpExauthStateEnumLocs,\r\n\t...spExauthStateEnumLocs,\r\n\t...cpWuserCandRestrictTypeEnumLocs,\r\n\t...spWuserCandRestrictTypeEnumLocs,\r\n\t...cpETransactionStateEnumLocs,\r\n\t...spETransactionStateEnumLocs,\r\n\t...cpETransactionItemCatTypeEnumLocs,\r\n\t...spETransactionItemCatTypeEnumLocs,\r\n};\r\n","import { ExauthState, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Exam Auth State|`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'type' | 'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.ExamAuthorization,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type SPExauthStateLocs = `SPExauthStateEnum${ExauthState}`;\r\n\r\nexport const spExauthStateEnumLocs: LocDefs = {\r\n\tSPExauthStateEnumComplete: {\r\n\t\tdefaultValue: 'Complete',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Complete}`,\r\n\t\tdescription: `System value for '${ExauthState.Complete}' exam authorization state`,\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPExauthStateEnumError: {\r\n\t\tdefaultValue: 'Error',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Error}`,\r\n\t\tdescription: `System value for '${ExauthState.Error}' exam authorization state`,\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPExauthStateEnumRejected: {\r\n\t\tdefaultValue: 'Rejected',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Rejected}`,\r\n\t\tdescription: `System value for '${ExauthState.Rejected}' exam authorization state`,\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPExauthStateEnumQueued: {\r\n\t\tdefaultValue: 'Queued',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Queued}`,\r\n\t\tdescription: `System value for '${ExauthState.Queued}' exam authorization state`,\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPExauthStateEnumRequested: {\r\n\t\tdefaultValue: 'Requested',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Requested}`,\r\n\t\tdescription: `System value for '${ExauthState.Requested}' exam authorization state`,\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport type CPExauthStateLocs = `CPExauthStateEnum${ExauthState}`;\r\n\r\nexport const cpExauthStateEnumLocs: LocDefs = {\r\n\tCPExauthStateEnumComplete: {\r\n\t\tdefaultValue: 'Complete',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Complete}`,\r\n\t\tdescription: `System value for '${ExauthState.Complete}' exam authorization state`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPExauthStateEnumError: {\r\n\t\tdefaultValue: 'Error',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Error}`,\r\n\t\tdescription: `System value for '${ExauthState.Error}' exam authorization state`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPExauthStateEnumRejected: {\r\n\t\tdefaultValue: 'Rejected',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Rejected}`,\r\n\t\tdescription: `System value for '${ExauthState.Rejected}' exam authorization state`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPExauthStateEnumQueued: {\r\n\t\tdefaultValue: 'Queued',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Queued}`,\r\n\t\tdescription: `System value for '${ExauthState.Queued}' exam authorization state`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPExauthStateEnumRequested: {\r\n\t\tdefaultValue: 'Requested',\r\n\t\tdisplayPath: `${dpRoot}${ExauthState.Requested}`,\r\n\t\tdescription: `System value for '${ExauthState.Requested}' exam authorization state`,\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const EX_AUTH_STATE_ENUM_LOCS = MapLocKeys({\r\n\t...spExauthStateEnumLocs,\r\n\t...cpExauthStateEnumLocs,\r\n});\r\n\r\nexport type SPExauthStateEnumLocType = LocMap;\r\nexport type CPExauthStateEnumLocType = LocMap;\r\n\r\nexport const spExauthStateKeys: {\r\n\t[key in ExauthState]: keyof SPExauthStateEnumLocType;\r\n} = {\r\n\t[ExauthState.Complete]: EX_AUTH_STATE_ENUM_LOCS.SPExauthStateEnumComplete,\r\n\t[ExauthState.Error]: EX_AUTH_STATE_ENUM_LOCS.SPExauthStateEnumError,\r\n\t[ExauthState.Rejected]: EX_AUTH_STATE_ENUM_LOCS.SPExauthStateEnumRejected,\r\n\t[ExauthState.Queued]: EX_AUTH_STATE_ENUM_LOCS.SPExauthStateEnumQueued,\r\n\t[ExauthState.Requested]: EX_AUTH_STATE_ENUM_LOCS.SPExauthStateEnumRequested,\r\n};\r\n\r\nexport const cpExauthStateKeys: {\r\n\t[key in ExauthState]: keyof CPExauthStateEnumLocType;\r\n} = {\r\n\t[ExauthState.Complete]: EX_AUTH_STATE_ENUM_LOCS.CPExauthStateEnumComplete,\r\n\t[ExauthState.Error]: EX_AUTH_STATE_ENUM_LOCS.CPExauthStateEnumError,\r\n\t[ExauthState.Rejected]: EX_AUTH_STATE_ENUM_LOCS.CPExauthStateEnumRejected,\r\n\t[ExauthState.Queued]: EX_AUTH_STATE_ENUM_LOCS.CPExauthStateEnumQueued,\r\n\t[ExauthState.Requested]: EX_AUTH_STATE_ENUM_LOCS.CPExauthStateEnumRequested,\r\n};\r\n","import { ExamGradeLabel, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Exam Grade Label`;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tfeature: HubFeature.Exam,\r\n\t};\r\n\r\nexport type CPExamGradeLabelLocs =\r\n\t| 'CPExamGradeLabelEnumFail'\r\n\t| 'CPExamGradeLabelEnumPass'\r\n\t| 'CPExamGradeLabelEnumUngraded';\r\n\r\nexport type SPExamGradeLabelLocs =\r\n\t| 'SPExamGradeLabelEnumFail'\r\n\t| 'SPExamGradeLabelEnumPass'\r\n\t| 'SPExamGradeLabelEnumUngraded';\r\n\r\nexport const cpExamGradeLabelEnumLocs: LocDefs = {\r\n\tCPExamGradeLabelEnumFail: {\r\n\t\tdefaultValue: 'Fail',\r\n\t\tdisplayPath: `${dpRoot}|${ExamGradeLabel.Fail}`,\r\n\t\tdescription: `System value for '${ExamGradeLabel.Fail}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamGradeLabel.Fail',\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPExamGradeLabelEnumPass: {\r\n\t\tdefaultValue: 'Pass',\r\n\t\tdisplayPath: `${dpRoot}|${ExamGradeLabel.Pass}`,\r\n\t\tdescription: `System value for '${ExamGradeLabel.Pass}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamGradeLabel.Pass',\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPExamGradeLabelEnumUngraded: {\r\n\t\tdefaultValue: 'Ungraded',\r\n\t\tdisplayPath: `${dpRoot}|${ExamGradeLabel.Ungraded}`,\r\n\t\tdescription: `System value for '${ExamGradeLabel.Ungraded}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamGradeLabel.Ungraded',\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n};\r\n\r\nexport const spExamGradeLabelEnumLocs: LocDefs = {\r\n\tSPExamGradeLabelEnumFail: {\r\n\t\tdefaultValue: 'Fail',\r\n\t\tdisplayPath: `${dpRoot}|${ExamGradeLabel.Fail}`,\r\n\t\tdescription: `System value for '${ExamGradeLabel.Fail}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamGradeLabel.Fail',\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPExamGradeLabelEnumPass: {\r\n\t\tdefaultValue: 'Pass',\r\n\t\tdisplayPath: `${dpRoot}|${ExamGradeLabel.Pass}`,\r\n\t\tdescription: `System value for '${ExamGradeLabel.Pass}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamGradeLabel.Pass',\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPExamGradeLabelEnumUngraded: {\r\n\t\tdefaultValue: 'Ungraded',\r\n\t\tdisplayPath: `${dpRoot}|${ExamGradeLabel.Ungraded}`,\r\n\t\tdescription: `System value for '${ExamGradeLabel.Ungraded}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamGradeLabel.Ungraded',\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n};\r\n\r\nexport const EXAM_GRADE_LABEL_ENUM_LOCS = MapLocKeys({\r\n\t...cpExamGradeLabelEnumLocs,\r\n\t...spExamGradeLabelEnumLocs,\r\n});\r\n\r\nexport type CPExamGradeLabelEnumLocType = LocMap;\r\nexport type SPExamGradeLabelEnumLocType = LocMap;\r\n\r\nexport const cpExamGradeLabelKeys: { [key in ExamGradeLabel]: keyof CPExamGradeLabelEnumLocType } =\r\n\t{\r\n\t\tPass: EXAM_GRADE_LABEL_ENUM_LOCS.CPExamGradeLabelEnumPass,\r\n\t\tFail: EXAM_GRADE_LABEL_ENUM_LOCS.CPExamGradeLabelEnumFail,\r\n\t\tUngraded: EXAM_GRADE_LABEL_ENUM_LOCS.CPExamGradeLabelEnumUngraded,\r\n\t};\r\n\r\nexport const spExamGradeLabelKeys: { [key in ExamGradeLabel]: keyof SPExamGradeLabelEnumLocType } =\r\n\t{\r\n\t\tPass: EXAM_GRADE_LABEL_ENUM_LOCS.SPExamGradeLabelEnumPass,\r\n\t\tFail: EXAM_GRADE_LABEL_ENUM_LOCS.SPExamGradeLabelEnumFail,\r\n\t\tUngraded: EXAM_GRADE_LABEL_ENUM_LOCS.SPExamGradeLabelEnumUngraded,\r\n\t};\r\n","import { ExamState, HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Exam State`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'type' | 'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tfeature: HubFeature.Exam,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\ttype: LocType.SponsorPortalString,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\ttype: LocType.CandidatePortalString,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPExamStateLocs =\r\n\t| 'CPExamStateEnumCorrupted'\r\n\t| 'CPExamStateEnumHidden'\r\n\t| 'CPExamStateEnumInvalid'\r\n | 'CPExamStateEnumOk'\r\n | 'CPExamStateEnumUnderReview';\r\n\r\nexport type SPExamStateLocs =\r\n | 'SPExamStateEnumCorrupted'\r\n | 'SPExamStateEnumHidden'\r\n\t| 'SPExamStateEnumInvalid'\r\n | 'SPExamStateEnumOk'\r\n | 'SPExamStateEnumUnderReview';\r\n\r\nexport const cpExamStateEnumLocs: LocDefs = {\r\n\tCPExamStateEnumCorrupted: {\r\n\t\tdefaultValue: 'Corrupted',\r\n\t\tdisplayPath: `${dpRoot}|Exam Grade Label Corrupted`,\r\n\t\tdescription: `System value for '${ExamState.Corrupted}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Corrupted',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPExamStateEnumHidden: {\r\n\t\tdefaultValue: 'Hidden',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.Hidden}`,\r\n\t\tdescription: `System value for '${ExamState.Hidden}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Hidden',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPExamStateEnumInvalid: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.Invalid}`,\r\n\t\tdescription: `System value for '${ExamState.Invalid}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Invalid',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n CPExamStateEnumOk: {\r\n\t\tdefaultValue: 'Ok',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.Ok}`,\r\n\t\tdescription: `System value for '${ExamState.Ok}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Ok',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n CPExamStateEnumUnderReview: {\r\n\t\tdefaultValue: 'Under Review',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.UnderReview}`,\r\n\t\tdescription: `System value for '${ExamState.UnderReview}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.UnderReview',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spExamStateEnumLocs: LocDefs = {\r\n\tSPExamStateEnumCorrupted: {\r\n\t\tdefaultValue: 'Corrupted',\r\n\t\tdisplayPath: `${dpRoot}|Exam Grade Label Corrupted`,\r\n\t\tdescription: `System value for '${ExamState.Corrupted}' exam grade label`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Corrupted',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPExamStateEnumHidden: {\r\n\t\tdefaultValue: 'Hidden',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.Hidden}`,\r\n\t\tdescription: `System value for '${ExamState.Hidden}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Hidden',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPExamStateEnumInvalid: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.Invalid}`,\r\n\t\tdescription: `System value for '${ExamState.Invalid}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Invalid',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n SPExamStateEnumOk: {\r\n\t\tdefaultValue: 'Ok',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.Ok}`,\r\n\t\tdescription: `System value for '${ExamState.Ok}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.Ok',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n SPExamStateEnumUnderReview: {\r\n\t\tdefaultValue: 'Under Review',\r\n\t\tdisplayPath: `${dpRoot}|${ExamState.UnderReview}`,\r\n\t\tdescription: `System value for '${ExamState.UnderReview}' exam state`,\r\n\t\tlegacyName: 'Exam/System.Enum.ExamState.UnderReview',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const EXAM_STATE_ENUM_LOCS = MapLocKeys({\r\n\t...cpExamStateEnumLocs,\r\n\t...spExamStateEnumLocs,\r\n});\r\n\r\nexport type CPExamStateEnumLocType = LocMap;\r\nexport type SPExamStateEnumLocType = LocMap;\r\n\r\nexport const cpExamStateKeys: { [key in ExamState]: keyof CPExamStateEnumLocType } = {\r\n\tHidden: EXAM_STATE_ENUM_LOCS.CPExamStateEnumHidden,\r\n\tCorrupted: EXAM_STATE_ENUM_LOCS.CPExamStateEnumCorrupted,\r\n\tInvalid: EXAM_STATE_ENUM_LOCS.CPExamStateEnumInvalid,\r\n OK: EXAM_STATE_ENUM_LOCS.CPExamStateEnumOk,\r\n UnderReview: EXAM_STATE_ENUM_LOCS.CPExamStateEnumUnderReview,\r\n};\r\n\r\nexport const spExamStateKeys: { [key in ExamState]: keyof SPExamStateEnumLocType } = {\r\n\tHidden: EXAM_STATE_ENUM_LOCS.SPExamStateEnumHidden,\r\n\tCorrupted: EXAM_STATE_ENUM_LOCS.SPExamStateEnumCorrupted,\r\n\tInvalid: EXAM_STATE_ENUM_LOCS.SPExamStateEnumInvalid,\r\n OK: EXAM_STATE_ENUM_LOCS.SPExamStateEnumOk,\r\n UnderReview: EXAM_STATE_ENUM_LOCS.SPExamStateEnumUnderReview,\r\n};\r\n","import { FcatQueueType, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../../models';\r\nimport { LocDisplayType } from '../../models/display-type';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_ENUM_ROOT}|Fulfillment Catalog Queue Type|`;\r\n\r\ntype SharedKeys = Pick<\r\n\tLocDef,\r\n\t'portal' | 'displayType' | 'htmlAllowed' | 'portal' | 'shared' | 'feature'\r\n>;\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.CredentialFulfillment,\r\n\t};\r\n\r\nconst sharedSpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'SP',\r\n};\r\n\r\nconst sharedCpLocData: SharedKeys = {\r\n\t...sharedLocData,\r\n\tportal: 'CP',\r\n};\r\n\r\nexport type CPFcatQueueTypeLocs =\r\n\t| 'CPFcatQueueTypeEnumEachNewItem'\r\n\t| 'CPFcatQueueTypeEnumManual'\r\n\t| 'CPFcatQueueTypeEnumNever'\r\n\t| 'CPFcatQueueTypeEnumOnce';\r\n\r\nexport type SPFcatQueueTypeLocs =\r\n\t| 'SPFcatQueueTypeEnumEachNewItem'\r\n\t| 'SPFcatQueueTypeEnumManual'\r\n\t| 'SPFcatQueueTypeEnumNever'\r\n\t| 'SPFcatQueueTypeEnumOnce';\r\n\r\nexport const cpFcatQueueTypeEnumLocs: LocDefs = {\r\n\tCPFcatQueueTypeEnumEachNewItem: {\r\n\t\tdefaultValue: 'Each New Credential',\r\n\t\tdisplayPath: `${dpRoot}Each New Item`,\r\n\t\tdescription: `System value for 'Each New Item' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.EachNewItem',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPFcatQueueTypeEnumManual: {\r\n\t\tdefaultValue: 'Manual',\r\n\t\tdisplayPath: `${dpRoot}Manual`,\r\n\t\tdescription: `System value for 'Manual' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.Manual',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPFcatQueueTypeEnumNever: {\r\n\t\tdefaultValue: 'Never',\r\n\t\tdisplayPath: `${dpRoot}Never`,\r\n\t\tdescription: `System value for 'Never' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.Never',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n\tCPFcatQueueTypeEnumOnce: {\r\n\t\tdefaultValue: 'First Earned Credential',\r\n\t\tdisplayPath: `${dpRoot}Once`,\r\n\t\tdescription: `System value for 'Once' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.Once',\r\n\t\t...sharedCpLocData,\r\n\t},\r\n};\r\n\r\nexport const spFcatQueueTypeEnumLocs: LocDefs = {\r\n\tSPFcatQueueTypeEnumEachNewItem: {\r\n\t\tdefaultValue: 'Each New Credential',\r\n\t\tdisplayPath: `${dpRoot}Each New Item`,\r\n\t\tdescription: `System value for 'Each New Item' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.EachNewItem',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPFcatQueueTypeEnumManual: {\r\n\t\tdefaultValue: 'Manual',\r\n\t\tdisplayPath: `${dpRoot}Manual`,\r\n\t\tdescription: `System value for 'Manual' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.Manual',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPFcatQueueTypeEnumNever: {\r\n\t\tdefaultValue: 'Never',\r\n\t\tdisplayPath: `${dpRoot}Never`,\r\n\t\tdescription: `System value for 'Never' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.Never',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n\tSPFcatQueueTypeEnumOnce: {\r\n\t\tdefaultValue: 'First Earned Credential',\r\n\t\tdisplayPath: `${dpRoot}Once`,\r\n\t\tdescription: `System value for 'Once' Fulfillment Catalog queue type`,\r\n\t\tlegacyName: 'Credential.Fulfillment/System.Enum.FcatQueueType.Once',\r\n\t\t...sharedSpLocData,\r\n\t},\r\n};\r\n\r\nexport const FCAT_QUEUE_TYPE_ENUM_LOCS = MapLocKeys({\r\n\t...cpFcatQueueTypeEnumLocs,\r\n\t...spFcatQueueTypeEnumLocs,\r\n});\r\n\r\nexport type CPFcatQueueTypeEnumLocType = LocMap;\r\nexport type SPFcatQueueTypeEnumLocType = LocMap;\r\n\r\nexport const cpFcatQueueTypeKeys: { [key in FcatQueueType]: keyof CPFcatQueueTypeEnumLocType } = {\r\n\t[FcatQueueType.EachNewItem]: FCAT_QUEUE_TYPE_ENUM_LOCS.CPFcatQueueTypeEnumEachNewItem,\r\n\t[FcatQueueType.Manual]: FCAT_QUEUE_TYPE_ENUM_LOCS.CPFcatQueueTypeEnumManual,\r\n\t[FcatQueueType.Never]: FCAT_QUEUE_TYPE_ENUM_LOCS.CPFcatQueueTypeEnumNever,\r\n\t[FcatQueueType.Once]: FCAT_QUEUE_TYPE_ENUM_LOCS.CPFcatQueueTypeEnumOnce,\r\n};\r\n\r\nexport const spFcatQueueTypeKeys: { [key in FcatQueueType]: keyof SPFcatQueueTypeEnumLocType } = {\r\n\t[FcatQueueType.EachNewItem]: FCAT_QUEUE_TYPE_ENUM_LOCS.SPFcatQueueTypeEnumEachNewItem,\r\n\t[FcatQueueType.Manual]: FCAT_QUEUE_TYPE_ENUM_LOCS.SPFcatQueueTypeEnumManual,\r\n\t[FcatQueueType.Never]: FCAT_QUEUE_TYPE_ENUM_LOCS.SPFcatQueueTypeEnumNever,\r\n\t[FcatQueueType.Once]: FCAT_QUEUE_TYPE_ENUM_LOCS.SPFcatQueueTypeEnumOnce,\r\n};\r\n","// ... existing imports ...\r\nimport { FulfillmentStatus, HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocDisplayType, LocMap, MapLocKeys } from '../../models';\r\nimport { SYSTEM_ENUM_ROOT, SYSTEM_ENUM_TYPE } from '../shared-data';\r\n\r\n// ... existing code ...\r\n\r\nconst fulfRoot = `${SYSTEM_ENUM_ROOT}|Fulfillment Status`;\r\n\r\nexport type CPFulfillmentStatusLocs =\r\n\t| 'CPFulfillmentStatusEnumFailed'\r\n\t| 'CPFulfillmentStatusEnumCompleted'\r\n\t| 'CPFulfillmentStatusEnumPending'\r\n\t| 'CPFulfillmentStatusEnumOrdered'\r\n\t| 'CPFulfillmentStatusEnumAvailable'\r\n\t| 'CPFulfillmentStatusEnumNever'\r\n\t| 'CPFulfillmentStatusEnumManual';\r\n\r\nexport type SPFulfillmentStatusLocs =\r\n\t| 'SPFulfillmentStatusEnumFailed'\r\n\t| 'SPFulfillmentStatusEnumCompleted'\r\n\t| 'SPFulfillmentStatusEnumPending'\r\n\t| 'SPFulfillmentStatusEnumOrdered'\r\n\t| 'SPFulfillmentStatusEnumAvailable'\r\n\t| 'SPFulfillmentStatusEnumNever'\r\n\t| 'SPFulfillmentStatusEnumManual';\r\n\r\nconst sharedLocData: Pick =\r\n\t{\r\n\t\tdisplayType: `${SYSTEM_ENUM_TYPE}` as LocDisplayType,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.CredentialFulfillment,\r\n\t};\r\n\r\nexport const cpFulfillmentStatusEnumLocs: LocDefs = {\r\n\tCPFulfillmentStatusEnumFailed: {\r\n\t\tdefaultValue: 'Failed',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Failed}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Failed}' fulfillment status`,\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPFulfillmentStatusEnumCompleted: {\r\n\t\tdefaultValue: 'Completed',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Completed}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Completed}' fulfillment status`,\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPFulfillmentStatusEnumPending: {\r\n\t\tdefaultValue: 'Pending',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Pending}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Pending}' fulfillment status`,\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPFulfillmentStatusEnumOrdered: {\r\n\t\tdefaultValue: 'Ordered',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Ordered}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Ordered}' fulfillment status`,\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPFulfillmentStatusEnumAvailable: {\r\n\t\tdefaultValue: 'Available',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Available}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Available}' fulfillment status`,\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPFulfillmentStatusEnumNever: {\r\n\t\tdefaultValue: 'Never',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Never}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Never}' fulfillment status`,\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tCPFulfillmentStatusEnumManual: {\r\n\t\tdefaultValue: 'Manual',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Manual}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Manual}' fulfillment status`,\r\n\t\tportal: 'CP',\r\n\t\t...sharedLocData,\r\n\t},\r\n};\r\n\r\nexport const spFulfillmentStatusEnumLocs: LocDefs = {\r\n\tSPFulfillmentStatusEnumFailed: {\r\n\t\tdefaultValue: 'Failed',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Failed}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Failed}' fulfillment status`,\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPFulfillmentStatusEnumCompleted: {\r\n\t\tdefaultValue: 'Completed',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Completed}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Completed}' fulfillment status`,\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPFulfillmentStatusEnumPending: {\r\n\t\tdefaultValue: 'Pending',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Pending}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Pending}' fulfillment status`,\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPFulfillmentStatusEnumOrdered: {\r\n\t\tdefaultValue: 'Ordered',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Ordered}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Ordered}' fulfillment status`,\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPFulfillmentStatusEnumAvailable: {\r\n\t\tdefaultValue: 'Available',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Available}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Available}' fulfillment status`,\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPFulfillmentStatusEnumNever: {\r\n\t\tdefaultValue: 'Never',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Never}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Never}' fulfillment status`,\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n\tSPFulfillmentStatusEnumManual: {\r\n\t\tdefaultValue: 'Manual',\r\n\t\tdisplayPath: `${fulfRoot}|${FulfillmentStatus.Manual}`,\r\n\t\tdescription: `System value for '${FulfillmentStatus.Manual}' fulfillment status`,\r\n\t\tportal: 'SP',\r\n\t\t...sharedLocData,\r\n\t},\r\n};\r\n\r\nexport const FULFILLMENT_STATUS_ENUM_LOCS = MapLocKeys<\r\n\tCPFulfillmentStatusLocs | SPFulfillmentStatusLocs\r\n>({\r\n\t...cpFulfillmentStatusEnumLocs,\r\n\t...spFulfillmentStatusEnumLocs,\r\n});\r\n\r\nexport type CPFulfillmentStatusEnumLocType = LocMap;\r\nexport type SPFulfillmentStatusEnumLocType = LocMap;\r\n\r\nexport const cpFulfillmentStatusKeys: {\r\n\t[key in FulfillmentStatus]: keyof CPFulfillmentStatusEnumLocType;\r\n} = {\r\n\tFailed: FULFILLMENT_STATUS_ENUM_LOCS.CPFulfillmentStatusEnumFailed,\r\n\tCompleted: FULFILLMENT_STATUS_ENUM_LOCS.CPFulfillmentStatusEnumCompleted,\r\n\tPending: FULFILLMENT_STATUS_ENUM_LOCS.CPFulfillmentStatusEnumPending,\r\n\tOrdered: FULFILLMENT_STATUS_ENUM_LOCS.CPFulfillmentStatusEnumOrdered,\r\n\tAvailable: FULFILLMENT_STATUS_ENUM_LOCS.CPFulfillmentStatusEnumAvailable,\r\n\tNever: FULFILLMENT_STATUS_ENUM_LOCS.CPFulfillmentStatusEnumNever,\r\n\tManual: FULFILLMENT_STATUS_ENUM_LOCS.CPFulfillmentStatusEnumManual,\r\n};\r\n\r\nexport const spFulfillmentStatusKeys: {\r\n\t[key in FulfillmentStatus]: keyof SPFulfillmentStatusEnumLocType;\r\n} = {\r\n\tFailed: FULFILLMENT_STATUS_ENUM_LOCS.SPFulfillmentStatusEnumFailed,\r\n\tCompleted: FULFILLMENT_STATUS_ENUM_LOCS.SPFulfillmentStatusEnumCompleted,\r\n\tPending: FULFILLMENT_STATUS_ENUM_LOCS.SPFulfillmentStatusEnumPending,\r\n\tOrdered: FULFILLMENT_STATUS_ENUM_LOCS.SPFulfillmentStatusEnumOrdered,\r\n\tAvailable: FULFILLMENT_STATUS_ENUM_LOCS.SPFulfillmentStatusEnumAvailable,\r\n\tNever: FULFILLMENT_STATUS_ENUM_LOCS.SPFulfillmentStatusEnumNever,\r\n\tManual: FULFILLMENT_STATUS_ENUM_LOCS.SPFulfillmentStatusEnumManual,\r\n};\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Profile|Self Merge|';\r\nconst sharedProps = {\r\n\tfeature: HubFeature.MergeCandidatesCandidateSelfMerge,\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n};\r\n\r\nexport type SelfMergeErrorsLocs =\r\n\t| 'CPSelfMergePendingMerge'\r\n\t| 'CPSelfMergeMultipleRecords'\r\n\t| 'CPSelfMergeNoRecords'\r\n\t| 'CPSelfMergeInvalidRequest'\r\n\t| 'CPSelfMergeUniqueLoser';\r\n\r\nexport const selfMergeErrorsLocs: LocDefs = {\r\n\tCPSelfMergePendingMerge: {\r\n\t\tdefaultValue: 'There is currently a merge request pending for this account.',\r\n\t\tdescription: 'Error displayed when a merge is already pending.',\r\n\t\tdisplayPath: `${dpRoot}Pending Request`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'MergeCandidates.CandidateSelfMerge/Error.GUID.189cceb95a5a4d30b5be199e954cf392',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPSelfMergeMultipleRecords: {\r\n\t\tdefaultValue: 'Multiple results were found. Please contact support to complete this merge.',\r\n\t\tdescription: 'Error displayed when the account search yields too many results.',\r\n\t\tdisplayPath: `${dpRoot}Multiple Accounts Found`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'MergeCandidates.CandidateSelfMerge/Error.GUID.6c05c657acce4a029025b8d298cac82c',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPSelfMergeNoRecords: {\r\n\t\tdefaultValue: 'No matching account was found.',\r\n\t\tdescription: 'Error displayed when the account search yields no results.',\r\n\t\tdisplayPath: `${dpRoot}No Account Found`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'MergeCandidates.CandidateSelfMerge/Error.GUID.bf537a3fa9424bbf85b9b74759585a6a',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPSelfMergeInvalidRequest: {\r\n\t\tdefaultValue: 'Invalid candidate merge request.',\r\n\t\tdescription: 'Error displayed when the request is invalid.',\r\n\t\tdisplayPath: `${dpRoot}Invalid Request`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'MergeCandidates.CandidateSelfMerge/Error.GUID.4342d73bf32943d5a5061b145e12d16d',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPSelfMergeUniqueLoser: {\r\n\t\tdefaultValue: 'Requested candidate to merge into is unique.',\r\n\t\tdescription: 'Error displayed when requested candidate to merge into is unique.',\r\n\t\tdisplayPath: `${dpRoot}Unique Loser`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP',\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport type SelfMergeErrorsLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\nimport { LocDefs, LocMap, MapLocKeys } from '../models';\nimport { selfMergeErrorsLocs, SelfMergeErrorsLocs } from './errors/self-merge-errors.locs';\nimport { SYSTEM_ERROR_ROOT, SYSTEM_ERROR_TYPE } from './shared-data';\n\nexport const ErrorLocTypeGuard = (value: string): value is ErrorLoc => {\n\treturn Object.prototype.hasOwnProperty.call(errorLocs, value);\n};\n\nconst sharedProperties = {\n\thtmlAllowed: false,\n\tshared: true,\n};\n\ntype BaseErrorLoc =\n\t| 'CMSystemErrorDefault'\n\t| 'CMSystemErrorAuth'\n\t| 'CMSystemErrorFormIssue'\n\t| 'CMSystemErrorTryAgain'\n\t| 'CMSystemErrorNoChanges'\n\t| '4713a092237041b6ba861ff284a95a00'\n\t| 'e7225c2003514b9bbdbad677f0effd52'\n\t| '85043b8efb5f41f088377b285ca15ca3'\n\t| 'd25aaeba218f49b2afe95f07b610db0e'\n\t| '61d3241faf5717065790ca4883186f35'\n\t| '2e6da1750f074bb3b618f885aa1706e8'\n\t| '3c1eba257e7442b684d015e37eac3340'\n\t| 'SPMergeUniqueLoser';\n\nconst LOCS: LocDefs = {\n\tCMSystemErrorDefault: {\n\t\tdefaultValue: 'A system error has occurred',\n\t\tdisplayPath: `${SYSTEM_ERROR_ROOT}|System Error`,\n\t\tdescription: 'A generic message for when there is an unknown system error',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Core,\n\t\tportal: 'All',\n\t\t...sharedProperties,\n\t},\n\tCMSystemErrorAuth: {\n\t\tdefaultValue: 'You need to log in again',\n\t\tdisplayPath: `${SYSTEM_ERROR_ROOT}|Unauthorized`,\n\t\tdescription:\n\t\t\t'Error shown when user is redirected to login due to a problem with their current session.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Core,\n\t\thtmlAllowed: false,\n\t\tshared: true,\n\t\tportal: 'All',\n\t},\n\tCMSystemErrorFormIssue: {\n\t\tdefaultValue: 'Please check all form fields for errors and try again',\n\t\tdisplayPath: `${SYSTEM_ERROR_ROOT}|Form Error`,\n\t\tdescription: 'A generic message for when something in a form needs addressed',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Core,\n\t\thtmlAllowed: false,\n\t\tshared: true,\n\t\tportal: 'All',\n\t},\n\tCMSystemErrorTryAgain: {\n\t\tdefaultValue: 'An error occurred. Please wait a moment, refresh your screen, and try again',\n\t\tdisplayPath: `${SYSTEM_ERROR_ROOT}|Wait Error`,\n\t\tdescription: 'A generic message for when the user/candidate needs to wait and try again',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Core,\n\t\thtmlAllowed: false,\n\t\tshared: true,\n\t\tportal: 'All',\n\t},\n\tCMSystemErrorNoChanges: {\n\t\tdefaultValue: 'No changes made',\n\t\tdisplayPath: `${SYSTEM_ERROR_ROOT}|No Change Error`,\n\t\tdescription:\n\t\t\t'Notification message saying that no changes were detected while updating an item or feature',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Core,\n\t\thtmlAllowed: false,\n\t\tshared: true,\n\t\tportal: 'All',\n\t},\n\t'4713a092237041b6ba861ff284a95a00': {\n\t\tdefaultValue: 'Domain names must be unique',\n\t\tdisplayPath: `System Settings|Tagging|Domain Exists Error`,\n\t\tdescription: 'Attempting to create a new domain with a name of an existing domain',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Tagging,\n\t\thtmlAllowed: false,\n\t\tshared: false,\n\t\tportal: 'SP',\n\t},\n\te7225c2003514b9bbdbad677f0effd52: {\n\t\tdefaultValue:\n\t\t\t'An account at LineUp cannot be created because you do not have a unique email',\n\t\tdisplayPath: `System|Error|Duplicate Email for Lineup`,\n\t\tdescription:\n\t\t\t'Notification message saying that the lineup opt-in could not be created due to duplicate emails.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.BenefitLineup,\n\t\thtmlAllowed: false,\n\t\tshared: false,\n\t\tportal: 'CP',\n\t},\n\t'85043b8efb5f41f088377b285ca15ca3': {\n\t\tdefaultValue: 'Postal Code must be less than 16 characters.',\n\t\tdisplayPath: `System|Error|Invalid Postal Code Length`,\n\t\tdescription: 'Notification message saying that the postal code is invalid.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Core,\n\t\thtmlAllowed: false,\n\t\tshared: false,\n\t\tportal: 'CP',\n\t},\n\td25aaeba218f49b2afe95f07b610db0e: {\n\t\tdefaultValue: 'Invalid login',\n\t\tdisplayPath: `System Settings|Login|Invalid login`,\n\t\tdescription: 'Error shown when invalid credentials are used during a login.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.Core,\n\t\thtmlAllowed: false,\n\t\tshared: true,\n\t\tportal: 'All',\n\t\tlegacyName: 'Core/Error.GUID.d25aaeba218f49b2afe95f07b610db0e',\n\t},\n\t'61d3241faf5717065790ca4883186f35': {\n\t\tdefaultValue: 'This operation is not permitted for candidates that are employees of Dell',\n\t\tdisplayPath: `System|Error|Invalid Affiliation Type`,\n\t\tdescription:\n\t\t\t'Error shown when other achievement removal fails becuase of the candidate affiliation.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.CandidateAccessLoginEmcOtherAchievements,\n\t\thtmlAllowed: false,\n\t\tshared: true,\n\t\tportal: 'All',\n\t},\n\tSPMergeUniqueLoser: {\n\t\tdefaultValue: 'Requested candidate to merge into is unique.',\n\t\tdisplayPath: `System|Error|Unique Loser`,\n\t\tdescription: 'Error displayed when requested candidate to merge into is unique.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.MergeCandidates,\n\t\thtmlAllowed: false,\n\t\tshared: false,\n\t\tportal: 'SP',\n\t},\n\t'2e6da1750f074bb3b618f885aa1706e8': {\n\t\tdefaultValue: 'No benefit vouchers available, please contact support.',\n\t\tdisplayPath: `System|Error|No Vouchers Available`,\n\t\tdescription: 'Error displayed when no benefit vouchers are available.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.BenefitLineup,\n\t\thtmlAllowed: false,\n\t\tshared: false,\n\t\tportal: 'SP',\n\t},\n\t'3c1eba257e7442b684d015e37eac3340': {\n\t\tdefaultValue:\n\t\t\t'The value supplied for the Affiliate Id does not match the required criterion.',\n\t\tdisplayPath: `System|Error|Invalid Affiliate Id format`,\n\t\tdescription:\n\t\t\t'Error displayed when an invalid affiliate id format is supplied with the affiliation.',\n\t\tdisplayType: SYSTEM_ERROR_TYPE,\n\t\tfeature: HubFeature.CandidateProfilePrimaryInformationAffiliation,\n\t\thtmlAllowed: false,\n\t\tshared: false,\n\t\tportal: 'All',\n\t},\n};\n\nexport type ErrorLoc =\n\t| BaseErrorLoc\n\t| 'ba5e95f44eff426baed79f1230c977a8'\n\t| '2e6da1750f074bb3b618f885aa1706e8'\n\t| SelfMergeErrorsLocs;\n\nexport const errorLocs: LocDefs = {\n\t...LOCS,\n\tba5e95f44eff426baed79f1230c977a8: LOCS.CMSystemErrorDefault,\n\t...selfMergeErrorsLocs,\n};\n\nexport const GLOBAL_ERROR_KEYS = MapLocKeys(errorLocs);\nexport type ErrorLocType = LocMap;\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../../../models';\r\nimport { SYSTEM_FEATURE_ROOT } from '../../shared-data';\r\n\r\nconst dpRoot = `${SYSTEM_FEATURE_ROOT}|Exams`;\r\n\r\nexport type CPExamsDataLocs = 'CPExamsAlteredGradeContent';\r\n\r\nexport const cpExamsDataLocs: LocDefs = {\r\n\tCPExamsAlteredGradeContent: {\r\n\t\tdefaultValue: 'Completed',\r\n\t\tdisplayPath: `${dpRoot}|Exams|Altered Grade`,\r\n\t\tdescription: `System value for altered grade`,\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.Exam,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'Exam/System.AlteredGrade',\r\n\t},\r\n};\r\n\r\nexport const examsDataLocs = {\r\n\t...cpExamsDataLocs,\r\n};\r\n\r\nexport type ExamsDataLoc = CPExamsDataLocs;\r\nexport type CPExamsDataLocType = LocMap;\r\nexport type ExamsDataLocType = LocMap;\r\n\r\nexport const EXAMS_DATA_SYSTEM_LOCS = MapLocKeys(examsDataLocs);\r\n","import { GLOBAL_ENUM_KEYS } from './enums/enum-loc-keys';\r\nimport { enumLocs } from './enums/enum.locs';\r\nimport { GLOBAL_ERROR_KEYS, errorLocs } from './errors.locs';\r\nimport { GLOBAL_SYSTEM_LOCS, systemGlobalLocs } from './system.locs';\r\n\r\nexport { examsDataLocs as ExamLocs, EXAMS_DATA_SYSTEM_LOCS as ExamLocKeys } from './feature/exams/exams-data.locs';\r\n\r\nexport const systemLocs = {\r\n\t...errorLocs,\r\n\t...systemGlobalLocs,\r\n\t...enumLocs,\r\n};\r\n\r\nexport const SYSTEM_LOC_KEYS = {\r\n\tErrors: GLOBAL_ERROR_KEYS,\r\n\tGlobalValues: GLOBAL_SYSTEM_LOCS,\r\n\tEnums: GLOBAL_ENUM_KEYS,\r\n};\r\n","import { LocDisplayType } from '../models';\r\n\r\nexport const SYSTEM_ERROR_ROOT = 'System|Error';\r\nexport const SYSTEM_ERROR_TYPE: LocDisplayType = 'Error';\r\n\r\nexport const SYSTEM_ENUM_ROOT = 'System|Enum';\r\nexport const SYSTEM_ENUM_TYPE: LocDisplayType = 'System';\r\n\r\nexport const SYSTEM_FEATURE_ROOT = 'System|Feature';\r\nexport const SYSTEM_FEATURE_TYPE: LocDisplayType = 'Content';\r\n","import { HubFeature } from '@ats/api/cm';\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '../models';\n\nconst sharedData: Pick = {\n\tfeature: HubFeature.Core,\n\thtmlAllowed: false,\n\tshared: true,\n\tportal: 'All',\n};\nconst dpRoot = 'System|Global';\n\ntype SystemGlobalLocStart = 'CMSystemGlobal';\nexport type SystemGlobalLocs =\n\t| `${SystemGlobalLocStart}True`\n\t| `${SystemGlobalLocStart}False`\n\t| `${SystemGlobalLocStart}NA`\n\t| `${SystemGlobalLocStart}Download`\n\t| `${SystemGlobalLocStart}Never`\n\t| `${SystemGlobalLocStart}EmailPlaceholder`\n\t| `${SystemGlobalLocStart}Visit`\n\t| `${SystemGlobalLocStart}NoData`;\n\nexport const systemGlobalLocs: LocDefs = {\n\tCMSystemGlobalTrue: {\n\t\t...sharedData,\n\t\tdefaultValue: 'Yes',\n\t\tdisplayPath: `${dpRoot}|True`,\n\t\tdescription: 'System value for true.',\n\t\tdisplayType: 'Content',\n\t},\n\tCMSystemGlobalFalse: {\n\t\t...sharedData,\n\t\tdefaultValue: 'No',\n\t\tdisplayPath: `${dpRoot}|False`,\n\t\tdescription: 'System value for false.',\n\t\tdisplayType: 'Content',\n\t},\n\tCMSystemGlobalNA: {\n\t\t...sharedData,\n\t\tdefaultValue: 'N/A',\n\t\tdisplayPath: `${dpRoot}|N/A`,\n\t\tdescription: 'System value for not available.',\n\t\tdisplayType: 'Content',\n\t},\n\tCMSystemGlobalDownload: {\n\t\tdefaultValue: 'Download',\n\t\tdisplayPath: `${dpRoot}|Download`,\n\t\tdescription: 'System value for download.',\n\t\tdisplayType: 'Content',\n\t\tlegacyName: 'Core/System.Global.Content.Download',\n\t},\n\tCMSystemGlobalNever: {\n\t\tdefaultValue: 'Never',\n\t\tdisplayPath: `${dpRoot}|Never`,\n\t\tdescription: 'System value for never.',\n\t\tdisplayType: 'Content',\n\t\tlegacyName: 'Core/System.Global.Content.Never',\n\t},\n\tCMSystemGlobalEmailPlaceholder: {\n\t\t...sharedData,\n\t\tdefaultValue: 'example@example.com',\n\t\tdisplayPath: `${dpRoot}|Email Example`,\n\t\tdescription: 'Email address used as a placeholder example in email fields.',\n\t\tdisplayType: 'Content',\n\t\tlegacyName: 'CandidateAccess/System.Global.Content.EmailPlaceholder',\n\t},\n\tCMSystemGlobalVisit: {\n\t\t...sharedData,\n\t\tdefaultValue: 'Visit',\n\t\tdisplayPath: `${dpRoot}|Visit`,\n\t\tdescription: 'Visit text for links.',\n\t\tdisplayType: 'Content',\n\t\tlegacyName: 'Core/System.Global.Content.Visit',\n\t},\n\tCMSystemGlobalNoData: {\n\t\t...sharedData,\n\t\tdefaultValue: 'No Data',\n\t\tdisplayPath: `${dpRoot}|No Data`,\n\t\tdescription: 'Text shown when there is no data.',\n\t\tdisplayType: 'Content',\n\t\tlegacyName: 'Core/System.Global.Content.NoData',\n\t},\n};\n\nexport const GLOBAL_SYSTEM_LOCS = MapLocKeys(systemGlobalLocs);\nexport type GlobalSystemType = LocMap;\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '../models';\r\n\r\nexport type SPCredentialAgreementLoc = 'SPCredentialAgreement';\r\n\r\nexport const spCredentialAgreementLoc: LocDefs = {\r\n\tSPCredentialAgreement: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Text of the agreement for the candidate to read and sign.',\r\n\t\tdisplayPath: 'Credentials|Agreement|Agreement Content',\r\n\t\tdisplayType: 'Content',\r\n\t\tlegacyName: 'Credential.Agreement/Credentials.Agreement.Content.Agreement',\r\n\t\thtmlAllowed: true,\r\n\t\tshared: true,\r\n\t\tfeature: HubFeature.CredentialAgreement,\r\n\t\tportal: 'SP',\r\n\t\ttype: LocType.SponsorPortalString,\r\n\t},\r\n};\r\n\r\nexport const AGREEMENT_LOC = MapLocKeys(spCredentialAgreementLoc);\r\n\r\nexport type SPCredentialAgreementLocType = LocMap;\r\n","import { HubFeature, LocType, LocUiType, LocalizationResponse } from '@ats/api/cm';\r\nimport { gql } from 'apollo-angular';\r\nimport { LocDisplayType, Localization } from '../models';\r\n\r\nexport const LOCALIZATION_QUERY = gql`\r\n\tquery localizationList($request: GetLocalizationListRequest!) {\r\n\t\tclientSponsor {\r\n\t\t\tlocalizationList(request: $request) {\r\n\t\t\t\tcultureName\r\n\t\t\t\tname\r\n\t\t\t\tvalue\r\n\t\t\t\tdefaultValue\r\n\t\t\t\ttype\r\n\t\t\t\tpath\r\n\t\t\t\tdescription\r\n\t\t\t\tshared\r\n\t\t\t\thtmlAllowed\r\n\t\t\t\tuiType\r\n\t\t\t\tisCustomized\r\n\t\t\t\tfeature {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tkey\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const mapLocUiType = (uiType: LocUiType | null = null): LocDisplayType => {\r\n\tswitch (uiType) {\r\n\t\tcase LocUiType.ColumnHeading:\r\n\t\tcase LocUiType.FieldLabel:\r\n\t\t\treturn 'Label';\r\n\t\tcase LocUiType.FieldError:\r\n\t\t\treturn 'Error';\r\n\t\tcase LocUiType.FieldHint:\r\n\t\tcase LocUiType.MenuItem:\r\n\t\t\treturn 'Content';\r\n\t\tcase LocUiType.SystemValue:\r\n\t\t\treturn 'System';\r\n\t\tcase LocUiType.ImageInformation:\r\n\t\t\treturn 'Title';\r\n\t\tcase LocUiType.NotificationMessage:\r\n\t\t\treturn 'Content';\r\n\t\tdefault:\r\n\t\t\treturn uiType || 'Content';\r\n\t}\r\n};\r\nexport const mapLegacyLocs = (\r\n\tlocs: LocalizationResponse[],\r\n\tdefaultType: LocType,\r\n\tdefaultFeature: HubFeature\r\n): Record =>\r\n\tlocs.reduce((locs, loc) => {\r\n\t\treturn {\r\n\t\t\t...locs,\r\n\t\t\t[loc.name]: mapLegacyLoc(loc, defaultType, defaultFeature),\r\n\t\t};\r\n\t}, {} as Record);\r\n\r\nexport const mapLegacyLoc = (\r\n\tloc: LocalizationResponse,\r\n\tdefaultType: LocType,\r\n\tdefaultFeature: HubFeature\r\n): Localization => ({\r\n\tname: loc.name,\r\n\tdefaultValue: loc.defaultValue || '',\r\n\tdescription: loc.description || '',\r\n\ttype: loc.type || defaultType,\r\n\thtmlAllowed: loc.htmlAllowed || false,\r\n\tshared: loc.shared || false,\r\n\tdisplayPath: loc.path || '',\r\n\tfeature: loc.feature?.key || defaultFeature,\r\n\tcultureInfoName: loc.cultureName,\r\n\tdisplayType: mapLocUiType(loc.uiType),\r\n\tenglishValueResolved: loc.defaultValue || '', // There will be a reckoning for this\r\n\tvalue: loc.value || loc.defaultValue || '',\r\n\thasClientValue: loc.isCustomized || false,\r\n\tisLegacy: true,\r\n\tportal: (loc.type || defaultType).toString().includes('CandidatePortal') ? 'CP' : 'SP',\r\n});\r\n","import { CommonModule } from '@angular/common';\nimport {\n\tInject,\n\tInjectionToken,\n\tModuleWithProviders,\n\tNgModule,\n\tOptional,\n\tProvider,\n} from '@angular/core';\nimport { LocDefs } from './models';\nimport { MapLocKeys } from './models/map-loc-keys.fn';\nimport { LocalizationService } from './services/localization.service';\n\nexport const LOC_INJECTOR = new InjectionToken>('Load Localizations');\n\nexport const LocalizationProvider = (locs: LocDefs, ignorePortal = false): Provider => ({\n\tprovide: LOC_INJECTOR,\n\tuseFactory: LocalizationLoadFactory(locs, ignorePortal),\n\tdeps: [LocalizationService],\n});\n\nconst LocalizationLoadFactory = (\n\tlocalizations: LocDefs,\n\tignorePortal = false\n): ((service: LocalizationService) => void) => {\n\treturn service => {\n\t\tservice.load(localizations, ignorePortal);\n\t\treturn { ...MapLocKeys(localizations) };\n\t};\n};\n\n@NgModule({\n\timports: [CommonModule],\n})\nexport class LocalizationModule {\n\tconstructor(@Inject(LOC_INJECTOR) @Optional() private readonly loader: any) {}\n\tstatic forRoot(): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: LocalizationModule,\n\t\t\tproviders: [],\n\t\t};\n\t}\n\n\tstatic forChild(locs: LocDefs, ignorePortal = false): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: LocalizationModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: LOC_INJECTOR,\n\t\t\t\t\tuseFactory: LocalizationLoadFactory(locs, ignorePortal),\n\t\t\t\t\tmulti: true,\n\t\t\t\t\tdeps: [LocalizationService],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n}\n","import { ClientLocalization, HubFeature, LocType, PortalType } from '@ats/api/cm';\nimport { LocDisplayType } from './display-type';\n\nexport type LocPortal = 'All' | 'SP' | 'CP';\n\nexport interface LocalToClientMapConfig {\n\tname: string;\n\tlocalDefinition: LocDef | Localization;\n\tclient?: ClientLocalization;\n\tcurrentPortal?: PortalType;\n}\n\nexport interface LocDef {\n\tdefaultValue: string;\n\tdescription: string;\n\tdisplayPath: string;\n\t/** @default [Portal] Default Feature */\n\tfeature?: HubFeature;\n\t/** @default Content */\n\tdisplayType?: LocDisplayType;\n\t/** @deprecated - Use portal instead */\n\ttype?: LocType;\n\tportal?: LocPortal;\n\n\t/** @default false */\n\thtmlAllowed?: boolean;\n\t/** @default false */\n\tshared?: boolean;\n\tlegacyName?: string;\n}\n\nexport type LocDefs = Record;\n\nexport type Localization = Required> &\n\tPick & {\n\t\tname: string;\n\t\thasClientValue?: boolean;\n\t\tisLegacy?: boolean;\n\t};\n\nexport const mapClientLocs = (\n\t[locs, defs]: [locs: ClientLocalization[], defs: Record],\n\tportal: PortalType\n): Record => {\n\treturn Object.entries(defs).reduce(\n\t\t(newLocs, [name, localDefinition]) => {\n\t\t\tconst type = getLocType(portal, localDefinition.portal, localDefinition.type);\n\t\t\tconst client = locs.find(cloc => cloc.name === name && cloc.locType === type);\n\n\t\t\tnewLocs[name] = mapClientLoc({\n\t\t\t\tname,\n\t\t\t\tlocalDefinition,\n\t\t\t\tcurrentPortal: portal,\n\t\t\t\tclient,\n\t\t\t});\n\n\t\t\treturn newLocs;\n\t\t},\n\t\t{} as Record\n\t);\n};\n\nexport const mapClientLoc = ({\n\tname,\n\tlocalDefinition,\n\tclient,\n\tcurrentPortal = PortalType.SponsorPortal,\n}: LocalToClientMapConfig): Localization => {\n\tconst locType = client?.locType ? client?.locType : localDefinition.type;\n\tconst type = getLocType(currentPortal, localDefinition.portal, locType);\n\tconst hasClientValue =\n\t\t!!((client || {}).value || (client || {}).value === '') ||\n\t\t!!(client || {}).englishValueResolved;\n\n\treturn {\n\t\t...localDefinition,\n\t\tname,\n\t\ttype,\n\t\tvalue: getClientValue(client, localDefinition.defaultValue),\n\t\tfeature:\n\t\t\tlocalDefinition.feature ||\n\t\t\t(currentPortal === PortalType.SponsorPortal\n\t\t\t\t? HubFeature.Core\n\t\t\t\t: HubFeature.CandidateAccess),\n\t\thtmlAllowed: localDefinition.htmlAllowed || false,\n\t\tshared: localDefinition.shared || false,\n\t\tdisplayType: localDefinition.displayType || 'Content',\n\t\tcultureInfoName: (client || {}).cultureInfoName || 'en',\n\t\tdefaultValue: localDefinition.defaultValue,\n\t\thasClientValue,\n\t\tportal:\n\t\t\tlocalDefinition.portal ||\n\t\t\t((type.toString().includes('CandidatePortal') ? 'CP' : 'SP') as LocPortal),\n\t};\n};\n\nexport const getLocTypeFromPortal = (portal: LocPortal): LocType => {\n\treturn portal === 'CP' ? LocType.CandidatePortalString : LocType.SponsorPortalString;\n};\n\nconst getLocType = (portal: PortalType, locPortal?: LocPortal, type?: LocType): LocType => {\n\tconst currentPortalType =\n\t\tportal === PortalType.SponsorPortal\n\t\t\t? LocType.SponsorPortalString\n\t\t\t: LocType.CandidatePortalString;\n\n\t// Check if the loc definition has a portal defined on it first. This ALWAYS wins.\n\tif (locPortal) {\n\t\tif (locPortal === 'All') {\n\t\t\treturn currentPortalType;\n\t\t}\n\t\treturn locPortal === 'SP' ? LocType.SponsorPortalString : LocType.CandidatePortalString;\n\t}\n\t// Check if the loc definition has the older type property next.\n\tif (type) {\n\t\treturn type;\n\t}\n\n\t// Default to the current portal\n\treturn currentPortalType;\n};\n\nconst getClientValue = (client: ClientLocalization | undefined, defaultValue: string): string => {\n\tif (!client || client.value === '') {\n\t\treturn '';\n\t} else {\n\t\treturn (client || {}).value || (client || {}).englishValueResolved || defaultValue || '';\n\t}\n};\n","import { ObjectKeyMap } from './objectify';\r\n\r\n/**\r\n *\r\n * @param obj Any object with string properties\r\n * @returns An object of properties mapped to themselves\r\n */\r\nexport const SelfMapObjectKeys = (obj: T): ObjectKeyMap =>\r\n\tObject.keys(obj).reduce(\r\n\t\t(obj, key) => ({\r\n\t\t\t...obj,\r\n\t\t\t[key]: key,\r\n\t\t}),\r\n\t\t{} as ObjectKeyMap,\r\n\t);\r\n","import { SelfMapObjectKeys } from '@cm/utility/types';\r\nimport { LocMap } from './loc-map.type';\r\nimport { LocDefs } from './localization';\r\nexport const MapLocKeys = (locs: LocDefs): LocMap => SelfMapObjectKeys(locs) as LocMap;\r\n","import { ErrorLoc } from '../data/errors.locs';\n\nexport const errorLocMap: Record = {\n\tba5e95f44eff426baed79f1230c977a8: 'CMSystemErrorDefault',\n\tbf537a3fa9424bbf85b9b74759585a6a: 'CPSelfMergeNoRecords',\n\t'6c05c657acce4a029025b8d298cac82c': 'CPSelfMergeMultipleRecords',\n\t'189cceb95a5a4d30b5be199e954cf392': 'CPSelfMergePendingMerge',\n\t'4342d73bf32943d5a5061b145e12d16d': 'CPSelfMergeInvalidRequest',\n\t'c04a632db9d14465a6c896a065956446': 'CPSelfMergeUniqueLoser',\n\t'86e45e9681494ad48dcd6732556063c7': 'SPMergeUniqueLoser',\n\t'637a4c5fcc214fabacc94d28e2bfcf3a': 'SPMergeUniqueLoser',\n};\n","import gql from 'graphql-tag';\r\n\r\nexport const CLIENT_LOCALIZATIONS = gql`\r\n\tquery clientLocalizationList($request: ClientLocalizationRequest!) {\r\n\t\tclientLocalizationList(request: $request) {\r\n\t\t\tname\r\n\t\t\tlocType\r\n\t\t\tvalue\r\n\t\t\tenglishValueResolved\r\n\t\t\tcultureInfoName\r\n\t\t}\r\n\t}\r\n`;\r\n","import gql from 'graphql-tag';\r\n\r\nexport const CREATE_CLIENT_LOCALIZATION = gql`\r\n\tmutation createClientLocalizationList($request: CreateLocalizationListRequest!) {\r\n\t\tcreateClientLocalizationList(request: $request) {\r\n\t\t\tname\r\n\t\t\tlocType\r\n\t\t\tvalue\r\n\t\t\tenglishValueResolved\r\n\t\t\tcultureInfoName\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DELETE_CLIENT_LOCALIZATION = gql`\r\n\tmutation deleteClientLocalizationList($request: DeleteLocalizationListRequest!) {\r\n\t\tdeleteClientLocalizationList(request: $request) {\r\n\t\t\tname\r\n\t\t\tlocType\r\n\t\t\tvalue\r\n\t\t\tenglishValueResolved\r\n\t\t\tcultureInfoName\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_CLIENT_LOCALIZATION = gql`\r\n\tmutation updateClientLocalizationList($request: UpdateLocalizationListRequest!) {\r\n\t\tupdateClientLocalizationList(request: $request) {\r\n\t\t\tname\r\n\t\t\tlocType\r\n\t\t\tvalue\r\n\t\t\tenglishValueResolved\r\n\t\t\tcultureInfoName\r\n\t\t}\r\n\t}\r\n`;\r\n","import { Injectable } from '@angular/core';\r\nimport { WatchQueryFetchPolicy } from '@apollo/client/core';\r\nimport {\r\n\tCertMetricsMutationDeleteClientLocalizationListArgs,\r\n\tClientLocalization,\r\n\tClientLocalizationRequest,\r\n\tCmLocalizationItem,\r\n\tCreateLocalizationListRequest,\r\n\tLocType,\r\n\tPortalType,\r\n\tUpdateLocalizationListRequest,\r\n} from '@ats/api/cm';\r\nimport {\r\n\tCmFeatureService,\r\n\tCmInterceptHeaders,\r\n\tCmLocalizationService,\r\n\tERROR_GUIDS,\r\n} from '@ats/cm/core';\r\nimport { BoolUtil, negateObjects } from '@ats/utility';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { Apollo } from 'apollo-angular';\r\nimport {\r\n\tBehaviorSubject,\r\n\tObservable,\r\n\tcombineLatest,\r\n\tmap,\r\n\tof,\r\n\tswitchMap,\r\n\ttap,\r\n\twithLatestFrom,\r\n} from 'rxjs';\r\nimport { catchError, distinctUntilChanged, take } from 'rxjs/operators';\r\nimport { SYSTEM_LOC_KEYS, systemLocs } from '../data';\r\nimport { ErrorLocTypeGuard } from '../data/errors.locs';\r\nimport { LocDef, LocPortal, Localization, mapClientLoc, mapClientLocs } from '../models';\r\nimport { errorLocMap } from '../models/error-maps';\r\nimport { CLIENT_LOCALIZATIONS } from './client-localization.query';\r\nimport {\r\n\tCREATE_CLIENT_LOCALIZATION,\r\n\tDELETE_CLIENT_LOCALIZATION,\r\n\tUPDATE_CLIENT_LOCALIZATION,\r\n} from './localization.mutation';\r\n\r\nconst ClientLocOrNullGuard = (loc: any): loc is ClientLocalization | null =>\r\n\tloc === null || (loc?.name && loc?.value);\r\n\r\nexport interface ClientLocalizationConfig {\r\n\tname: string;\r\n\tvalue: string;\r\n\tportal: LocPortal;\r\n\tcultureName?: string;\r\n}\r\n\r\nconst ENTRY_EXISTS_GUID = '7fab0f358b504243be0c14d317806ff5';\r\n\r\ntype DeleteClientLocalizationListRequest =\r\n\tCertMetricsMutationDeleteClientLocalizationListArgs['request'];\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LocalizationService {\r\n\tpublic readonly Keys = SYSTEM_LOC_KEYS;\r\n\tloaded$: Observable;\r\n\treadonly booleanDisplay$: Observable<(value?: boolean | string) => string>;\r\n\tprivate readonly localizations = new BehaviorSubject>({});\r\n\tprivate readonly localizations$ = this.localizations.asObservable();\r\n\r\n\tconstructor(\r\n\t\tprivate readonly apollo: Apollo,\r\n\t\tprivate readonly settings: SettingsService,\r\n\t\tprivate readonly legacyService: CmLocalizationService,\r\n\t\tprivate readonly features: CmFeatureService\r\n\t) {\r\n\t\tthis.loaded$ = this.localizations$.pipe(map(locs => Object.keys(locs).length > 0));\r\n\t\tthis.load(systemLocs);\r\n\t\tthis.booleanDisplay$ = combineLatest({\r\n\t\t\t[BoolUtil.Positive]: this.findValue$(this.Keys.GlobalValues.CMSystemGlobalTrue),\r\n\t\t\t[BoolUtil.Negative]: this.findValue$(this.Keys.GlobalValues.CMSystemGlobalFalse),\r\n\t\t\t[BoolUtil.Unavailable]: this.findValue$(this.Keys.GlobalValues.CMSystemGlobalNA),\r\n\t\t}).pipe(\r\n\t\t\tmap(\r\n\t\t\t\tdisplayStrings => (value?: boolean | string) =>\r\n\t\t\t\t\tdisplayStrings[BoolUtil.format(value, false)]\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated - This is only for legacy support in other places\r\n\t */\r\n\tgetLoc(name: string): Localization | undefined {\r\n\t\treturn this.localizations.getValue()[name] || undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated - This is only for legacy support in other places\r\n\t */\r\n\tgetPartialLoc(partialName: string): Localization | undefined {\r\n\t\tconst name = this.getFromParitalName(partialName);\r\n\t\treturn name ? this.localizations.getValue()[name] || undefined : undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated - This is only for legacy support in other places\r\n\t */\r\n\tgetFromParitalName(partialName: string): string | undefined {\r\n\t\treturn Object.keys(this.localizations.getValue()).find(key => key.includes(partialName));\r\n\t}\r\n\r\n\tfind$>(\r\n\t\tname: string[]\r\n\t): Observable<{ [K in keyof T]?: Localization | string }>;\r\n\tfind$(name: string): Observable;\r\n\tfind$(\r\n\t\tname: string | string[]\r\n\t): Observable {\r\n\t\tif (typeof name === 'string') {\r\n\t\t\treturn this.getLoc$(name);\r\n\t\t} else {\r\n\t\t\treturn this.getLocs$(name);\r\n\t\t}\r\n\t}\r\n\r\n\tfindValue$(name: string): Observable {\r\n\t\treturn this.find$(name).pipe(\r\n\t\t\tswitchMap(loc => {\r\n\t\t\t\tif (!loc) {\r\n\t\t\t\t\treturn this.getLegacyLocValue$(name);\r\n\t\t\t\t}\r\n\t\t\t\tif (loc.value?.trim() === '') {\r\n\t\t\t\t\treturn of(loc.value);\r\n\t\t\t\t}\r\n\t\t\t\treturn of(loc.value || loc.defaultValue || '');\r\n\t\t\t}),\r\n\t\t\tdistinctUntilChanged()\r\n\t\t);\r\n\t}\r\n\r\n\tfindValues$(locs: { [K in keyof T]: string }): Observable<{\r\n\t\t[K in keyof T]: string;\r\n\t}> {\r\n\t\tconst keys = Object.keys(locs) as (keyof T)[];\r\n\t\tlet locMap = {};\r\n\r\n\t\tkeys.forEach(key => {\r\n\t\t\tif (typeof key === 'string') {\r\n\t\t\t\tlocMap = {\r\n\t\t\t\t\t...locMap,\r\n\t\t\t\t\t[key]: this.findValue$(locs[key]),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn combineLatest(locMap);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is for initializing and loading locDefs only.\r\n\t * It will NOT refresh localizations already loaded.\r\n\t */\r\n\tload(locs: Record, ignorePortal = false): void {\r\n\t\tif (locs) {\r\n\t\t\tif (!ignorePortal) {\r\n\t\t\t\tconst portal = this.settings.portal.toString();\r\n\t\t\t\tObject.entries(locs).forEach(([name, loc]) => {\r\n\t\t\t\t\tif (loc.type && !loc.type.toString().includes(portal)) {\r\n\t\t\t\t\t\tdelete locs[name];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst unloadedLocs$ = of(locs).pipe(\r\n\t\t\t\twithLatestFrom(this.localizations$),\r\n\t\t\t\tnegateObjects()\r\n\t\t\t);\r\n\t\t\tunloadedLocs$\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tmap(filteredLocs => Object.entries(filteredLocs).map(this.mapLocalizationItem)),\r\n\t\t\t\t\tswitchMap(mappedLocs => this.fetchClientLocalizations$(mappedLocs)),\r\n\t\t\t\t\ttake(1),\r\n\t\t\t\t\twithLatestFrom(unloadedLocs$),\r\n\t\t\t\t\tmap(locs => mapClientLocs(locs, this.settings.portal))\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe(clocs => this.updateLocs(clocs as Record));\r\n\t\t}\r\n\t}\r\n\r\n\tloadRemaingLocs$(locs: Record): Observable {\r\n\t\t// Remove any that already have a client value\r\n\t\tconst locArray = Object.entries(locs).reduce(\r\n\t\t\t(acc, [key, loc]) =>\r\n\t\t\t\t!Object.prototype.hasOwnProperty.call(loc, 'value')\r\n\t\t\t\t\t? [...acc, this.mapLocalizationItem([key, loc])]\r\n\t\t\t\t\t: acc,\r\n\t\t\t[] as CmLocalizationItem[]\r\n\t\t);\r\n\r\n\t\t// Stop gap to filter out features in case any are already loaded\r\n\t\treturn this.fetchClientLocalizations$(locArray).pipe(\r\n\t\t\ttake(1),\r\n\t\t\tmap(clientLocs => mapClientLocs([clientLocs, locs], this.settings.portal)),\r\n\t\t\tmap(locs => Object.values(locs))\r\n\t\t);\r\n\t}\r\n\r\n\treloadLoc$(name: string): Observable {\r\n\t\treturn this.getLoc$(name).pipe(\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(loc => {\r\n\t\t\t\tif (!loc) {\r\n\t\t\t\t\treturn of(null);\r\n\t\t\t\t}\r\n\t\t\t\tconst name = loc.name;\r\n\t\t\t\tconst type = this.mapLocType(loc);\r\n\t\t\t\treturn this.settings.cultureCode$.pipe(\r\n\t\t\t\t\tswitchMap(culture =>\r\n\t\t\t\t\t\tthis.fetchClientLocalizations$([{ name, type }], culture, 'network-only')\r\n\t\t\t\t\t),\r\n\t\t\t\t\tmap(locs => locs[0]),\r\n\t\t\t\t\t// Just get the new value\r\n\t\t\t\t\tmap(cloc => ({\r\n\t\t\t\t\t\t...loc,\r\n\t\t\t\t\t\tvalue: cloc.value,\r\n\t\t\t\t\t})),\r\n\t\t\t\t\ttap(cloc => this.updateLocs({ [name]: cloc }))\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tgetByCulture$(name: string, culture: string, type?: LocType): Observable {\r\n\t\treturn this.fetchLocCultureValue$(name, type, culture);\r\n\t}\r\n\r\n\tdeleteClientLoc$({\r\n\t\tname,\r\n\t\tcultureName,\r\n\t\tportal,\r\n\t}: Omit): Observable {\r\n\t\tconst culture$ = cultureName ? of(cultureName) : this.settings.cultureCode$;\r\n\t\tconst types = this.getLocTypes(portal);\r\n\r\n\t\tconst mutations$ = culture$.pipe(\r\n\t\t\tswitchMap(cultureName => {\r\n\t\t\t\treturn combineLatest(\r\n\t\t\t\t\ttypes.map(type =>\r\n\t\t\t\t\t\tthis.apollo\r\n\t\t\t\t\t\t\t.mutate<\r\n\t\t\t\t\t\t\t\t{ deleteClientLocalizationList: ClientLocalization[] },\r\n\t\t\t\t\t\t\t\t{ request: DeleteClientLocalizationListRequest }\r\n\t\t\t\t\t\t\t>({\r\n\t\t\t\t\t\t\t\tmutation: DELETE_CLIENT_LOCALIZATION,\r\n\t\t\t\t\t\t\t\tvariables: {\r\n\t\t\t\t\t\t\t\t\trequest: {\r\n\t\t\t\t\t\t\t\t\t\tcultureName,\r\n\t\t\t\t\t\t\t\t\t\ttype,\r\n\t\t\t\t\t\t\t\t\t\tlocalizationList: [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tname,\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: '',\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\tmap(({ data }) =>\r\n\t\t\t\t\t\t\t\t\tdata && (data.deleteClientLocalizationList || []).length\r\n\t\t\t\t\t\t\t\t\t\t? data.deleteClientLocalizationList[0]\r\n\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\t\tcatchError(() => of('error') as Observable<'error'>)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t\ttap(locs => this.handleMutationUpdate(locs.filter(ClientLocOrNullGuard), 'delete')),\r\n\t\t\ttake(1),\r\n\t\t\tmap(results => results.some(result => result !== 'error')) // If at least one was not an error, we are good\r\n\t\t);\r\n\r\n\t\treturn mutations$;\r\n\t}\r\n\r\n\tcreateOrUpdateClientLoc$(\r\n\t\tconfig: ClientLocalizationConfig\r\n\t): Observable {\r\n\t\t// 'All' types should always be in sync. The create/update methods handle those.\r\n\t\tconst type =\r\n\t\t\tconfig.portal === 'CP' ? LocType.CandidatePortalString : LocType.SponsorPortalString;\r\n\r\n\t\treturn this.clientLocExists$({ name: config.name, type }, config.cultureName).pipe(\r\n\t\t\ttake(1),\r\n\t\t\tcatchError(() => of(false)),\r\n\t\t\tswitchMap(exists =>\r\n\t\t\t\texists ? this.updateClientLoc$(config) : this.createClientLoc$(config)\r\n\t\t\t),\r\n\t\t\ttake(1)\r\n\t\t);\r\n\t}\r\n\r\n\tupdateClientLoc$({\r\n\t\tname,\r\n\t\tcultureName,\r\n\t\tportal,\r\n\t\tvalue,\r\n\t}: ClientLocalizationConfig): Observable {\r\n\t\tconst culture$ = cultureName ? of(cultureName) : this.settings.cultureCode$;\r\n\t\tconst types = this.getLocTypes(portal);\r\n\r\n\t\tconst mutations$ = culture$.pipe(\r\n\t\t\tswitchMap(cultureName => {\r\n\t\t\t\treturn combineLatest(\r\n\t\t\t\t\ttypes.map(type =>\r\n\t\t\t\t\t\tthis.apollo\r\n\t\t\t\t\t\t\t.mutate<\r\n\t\t\t\t\t\t\t\t{ updateClientLocalizationList: ClientLocalization[] },\r\n\t\t\t\t\t\t\t\t{ request: UpdateLocalizationListRequest }\r\n\t\t\t\t\t\t\t>({\r\n\t\t\t\t\t\t\t\tmutation: UPDATE_CLIENT_LOCALIZATION,\r\n\t\t\t\t\t\t\t\tvariables: {\r\n\t\t\t\t\t\t\t\t\trequest: {\r\n\t\t\t\t\t\t\t\t\t\tcultureName,\r\n\t\t\t\t\t\t\t\t\t\ttype,\r\n\t\t\t\t\t\t\t\t\t\tlocalizationList: [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tname,\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tcontext: {\r\n\t\t\t\t\t\t\t\t\theaders:\r\n\t\t\t\t\t\t\t\t\t\tCmInterceptHeaders.SuppressErrorById(ENTRY_EXISTS_GUID),\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\tmap(({ data }) =>\r\n\t\t\t\t\t\t\t\t\tdata && (data.updateClientLocalizationList || []).length\r\n\t\t\t\t\t\t\t\t\t\t? data.updateClientLocalizationList[0]\r\n\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t\tmap(locs => this.handleMutationUpdate(locs, 'update'))\r\n\t\t);\r\n\r\n\t\treturn mutations$;\r\n\t}\r\n\r\n\tcreateClientLoc$({\r\n\t\tname,\r\n\t\tcultureName,\r\n\t\tportal,\r\n\t\tvalue,\r\n\t}: ClientLocalizationConfig): Observable {\r\n\t\tconst culture$ = cultureName ? of(cultureName) : this.settings.cultureCode$;\r\n\t\tconst types = this.getLocTypes(portal);\r\n\r\n\t\tconst mutations$ = culture$.pipe(\r\n\t\t\tswitchMap(cultureName => {\r\n\t\t\t\treturn combineLatest(\r\n\t\t\t\t\ttypes.map(type =>\r\n\t\t\t\t\t\tthis.apollo\r\n\t\t\t\t\t\t\t.mutate<\r\n\t\t\t\t\t\t\t\t{ createClientLocalizationList: ClientLocalization[] },\r\n\t\t\t\t\t\t\t\t{ request: CreateLocalizationListRequest }\r\n\t\t\t\t\t\t\t>({\r\n\t\t\t\t\t\t\t\tmutation: CREATE_CLIENT_LOCALIZATION,\r\n\t\t\t\t\t\t\t\tvariables: {\r\n\t\t\t\t\t\t\t\t\trequest: {\r\n\t\t\t\t\t\t\t\t\t\tcultureName,\r\n\t\t\t\t\t\t\t\t\t\ttype,\r\n\t\t\t\t\t\t\t\t\t\tlocalizationList: [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tname,\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tcontext: {\r\n\t\t\t\t\t\t\t\t\theaders:\r\n\t\t\t\t\t\t\t\t\t\tCmInterceptHeaders.SuppressErrorById(ENTRY_EXISTS_GUID),\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\tmap(({ data }) =>\r\n\t\t\t\t\t\t\t\t\tdata && (data.createClientLocalizationList || []).length\r\n\t\t\t\t\t\t\t\t\t\t? data.createClientLocalizationList[0]\r\n\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t\ttake(1),\r\n\t\t\tmap(locs => this.handleMutationUpdate(locs, 'create'))\r\n\t\t);\r\n\r\n\t\treturn mutations$;\r\n\t}\r\n\r\n\taddLegacyLocalizations(locs: Record): void {\r\n\t\tthis.updateLocs(locs);\r\n\t}\r\n\r\n\t/** @deprecated - Guids are moving to just simply having the GUID as a key.\r\n\t * hasGUIDLoc will verify if a GUID is localized with current or legacy locs.\r\n\t * ErrorLocTypeGuard will verify if a GUID is localized with current locs. */\r\n\tfindGUIDLocName(guid: string): string {\r\n\t\treturn ErrorLocTypeGuard(guid)\r\n\t\t\t? guid\r\n\t\t\t: ERROR_GUIDS[`GUID_${guid}`] || 'Core/Error.GUID.ServerError';\r\n\t}\r\n\r\n\thasGUIDLoc(guid: string): boolean {\r\n\t\treturn (\r\n\t\t\tErrorLocTypeGuard(guid) ||\r\n\t\t\tObject.prototype.hasOwnProperty.call(ERROR_GUIDS, `GUID_${guid}`)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getLocTypes(portal: LocPortal): LocType[] {\r\n\t\treturn portal === 'All'\r\n\t\t\t? [LocType.SponsorPortalString, LocType.CandidatePortalString]\r\n\t\t\t: [portal === 'CP' ? LocType.CandidatePortalString : LocType.SponsorPortalString];\r\n\t}\r\n\r\n\tprivate handleMutationUpdate(\r\n\t\tlocs: (ClientLocalization | null)[],\r\n\t\tupdateType: 'create' | 'update' | 'delete'\r\n\t): Localization | null {\r\n\t\tconst currentPortalLoc =\r\n\t\t\tlocs?.find(loc =>\r\n\t\t\t\t(loc?.locType ?? '').toString().includes(this.settings.portal.toString())\r\n\t\t\t) ?? null;\r\n\t\tconst loc = currentPortalLoc\r\n\t\t\t? this.mapLocalization(currentPortalLoc.name, currentPortalLoc)\r\n\t\t\t: null;\r\n\t\tif (loc) {\r\n\t\t\tloc.hasClientValue = updateType !== 'delete';\r\n\t\t\tif (updateType === 'delete' && loc.defaultValue) {\r\n\t\t\t\tloc.value = loc.defaultValue;\r\n\t\t\t}\r\n\t\t\tthis.updateLocs({ [loc.name]: loc });\r\n\t\t}\r\n\t\treturn loc;\r\n\t}\r\n\r\n\tprivate getLegacyLocValue$(name: string): Observable {\r\n\t\treturn this.legacyService.findLocalization$(name).pipe(\r\n\t\t\tmap(loc => {\r\n\t\t\t\tif (!loc || loc.value?.trim() === '') {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn loc.value || loc.defaultValue || '';\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tprivate mapLocalization(name: string, client?: ClientLocalization): Localization | null {\r\n\t\tconst existing = this.localizations.getValue()[name];\r\n\t\tif (!existing) {\r\n\t\t\t// throw new Error(`Modifying invalid localization ${name}`);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst newLoc = mapClientLoc({\r\n\t\t\tname,\r\n\t\t\tlocalDefinition: existing,\r\n\t\t\tclient,\r\n\t\t\tcurrentPortal: this.settings.portal,\r\n\t\t});\r\n\t\treturn newLoc;\r\n\t}\r\n\r\n\tprivate updateLocs(locs: Record): void {\r\n\t\tthis.localizations.next({\r\n\t\t\t...this.localizations.getValue(),\r\n\t\t\t...locs,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getLoc$(\r\n\t\tkey: string,\r\n\t\tmapToValue = false\r\n\t): Observable {\r\n\t\tkey = errorLocMap[key] || key;\r\n\t\treturn this.localizations$.pipe(\r\n\t\t\tmap(locs => (locs ? locs[key] : null)),\r\n\t\t\tmap(loc => (!mapToValue ? loc : loc?.value || null) as R)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getLocs$>(\r\n\t\tkeys: T | string[],\r\n\t\tmapToValue = false\r\n\t): Observable<{ [K in keyof T]?: Localization | string | undefined }> {\r\n\t\tconst keysArr = Array.isArray(keys) ? keys : Object.keys(keys);\r\n\t\treturn this.localizations$.pipe(\r\n\t\t\tmap(locs =>\r\n\t\t\t\tkeysArr.reduce<{ [K in keyof T]?: Localization | string | undefined }>(\r\n\t\t\t\t\t(newLocs, key) => {\r\n\t\t\t\t\t\tkey = errorLocMap[key] || key;\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t...newLocs,\r\n\t\t\t\t\t\t\t[key]: !locs\r\n\t\t\t\t\t\t\t\t? undefined\r\n\t\t\t\t\t\t\t\t: mapToValue\r\n\t\t\t\t\t\t\t\t? (locs[key] || {}).value || undefined\r\n\t\t\t\t\t\t\t\t: locs[key],\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{}\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate mapLocalizationItem = ([name, loc]: [string, LocDef]): CmLocalizationItem => ({\r\n\t\tname,\r\n\t\ttype: this.mapLocType(loc),\r\n\t});\r\n\r\n\tprivate fetchClientLocalizations$(\r\n\t\tlocalizations: CmLocalizationItem[],\r\n\t\tculture?: string,\r\n\t\tfetchPolicy?: WatchQueryFetchPolicy\r\n\t): Observable {\r\n\t\t// Avoid the network call if there are no locs\r\n\t\tif (!localizations.length) {\r\n\t\t\treturn of([]);\r\n\t\t}\r\n\t\tconst culture$ = culture ? of(culture) : this.settings.cultureCode$;\r\n\t\treturn combineLatest([culture$, this.settings.client$]).pipe(\r\n\t\t\tswitchMap(\r\n\t\t\t\t([language, clientDbAlias]) =>\r\n\t\t\t\t\tthis.apollo.watchQuery<\r\n\t\t\t\t\t\t{ clientLocalizationList: ClientLocalization[] },\r\n\t\t\t\t\t\t{ request: ClientLocalizationRequest }\r\n\t\t\t\t\t>({\r\n\t\t\t\t\t\tquery: CLIENT_LOCALIZATIONS,\r\n\t\t\t\t\t\tvariables: {\r\n\t\t\t\t\t\t\trequest: {\r\n\t\t\t\t\t\t\t\tclientDbAlias,\r\n\t\t\t\t\t\t\t\tlanguage,\r\n\t\t\t\t\t\t\t\tlocalizations,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfetchPolicy: fetchPolicy || 'cache-first',\r\n\t\t\t\t\t}).valueChanges\r\n\t\t\t),\r\n\t\t\tcatchError(() => of({ data: { clientLocalizationList: [] } })),\r\n\t\t\tmap(({ data }) => data.clientLocalizationList || [])\r\n\t\t);\r\n\t}\r\n\r\n\tprivate clientLocExists$(\r\n\t\tlocalization: CmLocalizationItem,\r\n\t\tculture?: string\r\n\t): Observable {\r\n\t\tconst culture$ = culture ? of(culture) : this.settings.cultureCode$;\r\n\t\treturn combineLatest([culture$, this.settings.client$]).pipe(\r\n\t\t\tswitchMap(\r\n\t\t\t\t([language, clientDbAlias]) =>\r\n\t\t\t\t\tthis.apollo.watchQuery<\r\n\t\t\t\t\t\t{ clientLocalizationList: ClientLocalization[] },\r\n\t\t\t\t\t\t{ request: ClientLocalizationRequest }\r\n\t\t\t\t\t>({\r\n\t\t\t\t\t\tquery: CLIENT_LOCALIZATIONS,\r\n\t\t\t\t\t\tvariables: {\r\n\t\t\t\t\t\t\trequest: {\r\n\t\t\t\t\t\t\t\tclientDbAlias,\r\n\t\t\t\t\t\t\t\tlanguage,\r\n\t\t\t\t\t\t\t\tlocalizations: [localization],\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfetchPolicy: 'network-only',\r\n\t\t\t\t\t}).valueChanges\r\n\t\t\t),\r\n\t\t\tmap(({ data }) =>\r\n\t\t\t\t(data.clientLocalizationList || []).filter(loc => loc.value !== null)\r\n\t\t\t),\r\n\t\t\tmap(locs => locs.length > 0)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate fetchLocCultureValue$(\r\n\t\tname: string,\r\n\t\ttype?: LocType,\r\n\t\tculture?: string\r\n\t): Observable {\r\n\t\tif (!type) {\r\n\t\t\ttype = this.getPortalType();\r\n\t\t}\r\n\r\n\t\treturn this.fetchClientLocalizations$([{ name, type }], culture).pipe(\r\n\t\t\tmap(locs => (locs.length ? locs[0] : null)),\r\n\t\t\tmap(loc => loc?.value || '')\r\n\t\t);\r\n\t}\r\n\r\n\tprivate mapLocType({ type, portal }: Pick): LocType {\r\n\t\tif (portal === 'SP') {\r\n\t\t\treturn LocType.SponsorPortalString;\r\n\t\t}\r\n\t\tif (portal === 'CP') {\r\n\t\t\treturn LocType.CandidatePortalString;\r\n\t\t}\r\n\t\treturn type ? type : this.getPortalType();\r\n\t}\r\n\r\n\tprivate getPortalType(): LocType {\r\n\t\treturn this.settings.portal === PortalType.SponsorPortal\r\n\t\t\t? LocType.SponsorPortalString\r\n\t\t\t: LocType.CandidatePortalString;\r\n\t}\r\n}\r\n","export enum LogLevel {\r\n\tTrace = 0,\r\n\tDebug = 1,\r\n\tInformation = 2,\r\n\tWarning = 3,\r\n\tError = 4,\r\n\tCritical = 5,\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { LoggingConfig } from './logging-config.interface';\r\nexport const LOG_CONFIG = new InjectionToken('CertMetrics Logging Config Token');\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n\timports: [CommonModule],\n})\nexport class LoggingModule {}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { CmInterceptHeaders } from '@ats/cm/core';\r\nimport { take } from 'rxjs/operators';\r\nimport { LogLevel } from './log-level.enum';\r\nimport { LoggingConfig } from './logging-config.interface';\r\nimport { LOG_CONFIG } from './logging-config.token';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LoggingService {\r\n\tlogLevel = LogLevel.Trace;\r\n\theaderStyle = 'font-size: 10px; font-weight: normal; text-transform: uppercase;';\r\n\r\n\tconstructor(\r\n\t\t@Inject(LOG_CONFIG) private readonly config: LoggingConfig,\r\n\t\tprivate http: HttpClient\r\n\t) {\r\n\t\tif (!config || !config.logApi) {\r\n\t\t\tthrow new Error('Logging service requires a configuration');\r\n\t\t}\r\n\r\n\t\tif (config.logLevel) {\r\n\t\t\tthis.logLevel = config.logLevel;\r\n\t\t}\r\n\t}\r\n\r\n\tlogToApi(error: any) {\r\n\t\tthis.sendToApi(error);\r\n\t}\r\n\r\n\tlogToApiWithHeaders(error: any, headers: HttpHeaders) {\r\n\t\tthis.sendToApi(error, headers);\r\n\t}\r\n\r\n\ttrace(...args: any[]) {\r\n\t\tif (this.logLevel <= LogLevel.Trace) {\r\n\t\t\tthis.logToConsole('#6df417', 'Trace: ', ...args);\r\n\t\t}\r\n\t}\r\n\r\n\tdebug(...args: any[]) {\r\n\t\tif (this.logLevel <= LogLevel.Debug) {\r\n\t\t\tthis.logToConsole('#f417e0', 'Debug: ', ...args);\r\n\t\t}\r\n\t}\r\n\r\n\tinfo(...args: any[]) {\r\n\t\tif (this.logLevel <= LogLevel.Information) {\r\n\t\t\tthis.logToConsole('#f9fb14', 'Info: ', ...args);\r\n\t\t}\r\n\t}\r\n\r\n\twarn(...args: any[]) {\r\n\t\tif (this.logLevel <= LogLevel.Warning) {\r\n\t\t\tthis.logToConsole('#fbce14', 'Warn: ', ...args);\r\n\t\t}\r\n\t}\r\n\r\n\terror(...args: any[]) {\r\n\t\tif (this.logLevel <= LogLevel.Error) {\r\n\t\t\tthis.logToConsole('#fb3714', 'Error: ', ...args);\r\n\t\t}\r\n\t}\r\n\r\n\tcritical(...args: any[]) {\r\n\t\tif (this.logLevel <= LogLevel.Critical) {\r\n\t\t\tthis.logToConsole('#fb1471', 'Critical: ', ...args);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate logToConsole(color: string, header: string, ...args: any[]) {\r\n\t\tconst message = typeof args[0] === 'string' ? args.shift() : '';\r\n\t\tif (args.length) {\r\n\t\t\tconsole.group(\r\n\t\t\t\t`%c${header}%c${message}`,\r\n\t\t\t\t`color: ${color};${this.headerStyle}`,\r\n\t\t\t\t`font-size: 14px; color: ${color};`\r\n\t\t\t);\r\n\t\t\targs.forEach(arg => {\r\n\t\t\t\tif (typeof arg === 'string') {\r\n\t\t\t\t\tconsole.log(`%c ${arg}`, `color: ${color};`);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log(arg);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tconsole.groupCollapsed(`%cTrace`, `color: #666;${this.headerStyle}`);\r\n\t\t\tconsole.trace();\r\n\t\t\tconsole.groupEnd();\r\n\t\t\tconsole.groupEnd();\r\n\t\t} else {\r\n\t\t\tconsole.groupCollapsed(\r\n\t\t\t\t`%c${header}%c${message}`,\r\n\t\t\t\t`color: ${color};${this.headerStyle}`,\r\n\t\t\t\t`font-size: 14px; color: ${color};`\r\n\t\t\t);\r\n\t\t\tconsole.trace();\r\n\t\t\tconsole.groupEnd();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate sendToApi(error: any, headers?: HttpHeaders): void {\r\n\t\tconst { message, errors } = error;\r\n\t\tthis.http\r\n\t\t\t.post(this.config.logApi, error, {\r\n\t\t\t\theaders,\r\n\t\t\t})\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\tif (headers && this.hasSuppressHeaders(headers, error)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (errors) {\r\n\t\t\t\t\terrors.forEach((error: Error) => this.error(error.message || '', error));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.error(message, error.origin || error);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\thasSuppressHeaders(headers: HttpHeaders, error: any): boolean {\r\n\t\tconst suppressError = headers.has(CmInterceptHeaders.Type.SuppressError);\r\n\t\tconst hasSuppressHeader = headers.has(CmInterceptHeaders.Type.SuppressErrorLog);\r\n\t\tconst suppressErrorId = headers.get(CmInterceptHeaders.Type.SuppressErrorById);\r\n\t\tconst hasSuppressErrorId = suppressErrorId\r\n\t\t\t? suppressErrorId === error?.id?.toString()\r\n\t\t\t: false;\r\n\t\treturn suppressError || hasSuppressHeader || hasSuppressErrorId;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PortalType } from '@ats/api/cm';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n\trouteWithContext,\r\n\trouteWithContext$,\r\n\trouteWithNewCulture,\r\n\trouteWithNewCulture$,\r\n} from '../functions/routing';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CmRoutingService {\r\n\tprivate readonly portal: PortalType;\r\n\tconstructor(private readonly settings: SettingsService) {\r\n\t\tthis.portal = this.settings.portal;\r\n\t}\r\n\r\n\trouteWithContext(path: string[]): string[] {\r\n\t\treturn routeWithContext({\r\n\t\t\tclient: this.settings.clientSnapshot ?? undefined,\r\n\t\t\tculture: this.settings.cultureSnapshot ?? undefined,\r\n\t\t\tportal: this.portal,\r\n\t\t})(path);\r\n\t}\r\n\r\n\trouteWithContext$(path: string[]): Observable {\r\n\t\treturn routeWithContext$(\r\n\t\t\tthis.settings.client$,\r\n\t\t\tthis.settings.cultureCode$,\r\n\t\t\tthis.portal\r\n\t\t)(path);\r\n\t}\r\n\r\n\trouteWithNewCulture(path: string[], cultureCode: string): string[] {\r\n\t\treturn routeWithNewCulture({\r\n\t\t\tclient: this.settings.clientSnapshot ?? undefined,\r\n\t\t\tportal: this.portal,\r\n\t\t})(path, cultureCode);\r\n\t}\r\n\r\n\trouteWithNewCulture$(path: string[], cultureCode: string): Observable {\r\n\t\treturn routeWithNewCulture$(this.settings.client$, this.portal)(path, cultureCode);\r\n\t}\r\n}\r\n","import { PortalType } from '@ats/api/cm';\r\nimport { combineLatestWith, map, Observable, of } from 'rxjs';\r\n\r\n// This is temporary until we can remove from settings\r\n// to avoid ciruclar dependencies\r\n\r\nexport const routeWithContext: ({\r\n\tclient,\r\n\tculture,\r\n\tportal,\r\n}: {\r\n\tclient?: string;\r\n\tculture?: string;\r\n\tportal?: PortalType;\r\n}) => (path: string[]) => string[] =\r\n\t({ client, culture, portal }) =>\r\n\tpath => {\r\n\t\tif (portal === PortalType.InternalPortal) {\r\n\t\t\treturn [...path];\r\n\t\t}\r\n\r\n\t\tif (!client) {\r\n\t\t\tthrow new Error('Unable to determine client');\r\n\t\t}\r\n\r\n\t\tif (client && culture) {\r\n\t\t\treturn [client, culture, ...path];\r\n\t\t}\r\n\r\n\t\tconst [pathClient, pathCulture] = window.location.pathname\r\n\t\t\t.split('/')\r\n\t\t\t.filter(path => !!path.length);\r\n\t\treturn [pathClient, pathCulture, ...path];\r\n\t};\r\n\r\nexport const routeWithContext$: (\r\n\tclient$: Observable,\r\n\tculture$: Observable,\r\n\tportal?: PortalType\r\n) => (path: string[]) => Observable = (client$, culture$, portal) => path => {\r\n\treturn portal && portal === PortalType.InternalPortal\r\n\t\t? of([...path])\r\n\t\t: client$.pipe(\r\n\t\t\t\tcombineLatestWith(culture$),\r\n\t\t\t\tmap(basePaths => [...basePaths, ...path])\r\n\t\t\t);\r\n};\r\n\r\nexport const routeWithNewCulture: ({\r\n\tclient,\r\n\tportal,\r\n}: {\r\n\tclient?: string;\r\n\tportal?: PortalType;\r\n}) => (path: string[], culture: string) => string[] =\r\n\t({ client, portal }) =>\r\n\t(path, culture) => {\r\n\t\tif (portal === PortalType.InternalPortal) {\r\n\t\t\treturn [...path];\r\n\t\t}\r\n\r\n\t\treturn routeWithContext({ client, culture, portal })(path);\r\n\t};\r\n\r\nexport const routeWithNewCulture$: (\r\n\tclient$: Observable,\r\n\tportal?: PortalType\r\n) => (path: string[], culture: string) => Observable =\r\n\t(client$, portal) => (path, culture) => {\r\n\t\treturn portal && portal === PortalType.InternalPortal\r\n\t\t\t? of([...path])\r\n\t\t\t: routeWithContext$(client$, of(culture), portal)(path);\r\n\t};\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SettingsConfig } from './models/settings-config.interface';\r\n\r\nexport const SETTINGS_CONFIG = new InjectionToken('CertMetrics Settings Configuration');\r\n","import { Inject, Injectable } from '@angular/core';\nimport { HubFeature, PortalType, PortalTypeEnum } from '@ats/api/cm';\nimport { ClientConfig, ClientService } from '@cm/core/client';\nimport { Culture, CultureService } from '@cm/core/culture';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n\trouteWithContext,\n\trouteWithContext$,\n\trouteWithNewCulture,\n\trouteWithNewCulture$,\n} from '../../../../routing/src/lib/functions/routing'; // Relative to avoid dependency issues. To be removed later\nimport { Environment, SettingsConfig } from '../models';\nimport { AppEnvironment } from '../models/app-environment.interface';\nimport { SETTINGS_CONFIG } from '../settings-config.token';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class SettingsService {\n\t/**\n\t * @deprecated\n\t * Use CultureService instead\n\t */\n\treadonly existingCultures$!: Observable;\n\t/**\n\t * @deprecated\n\t * Use CultureService instead\n\t */\n\treadonly supportedCultures$!: Observable;\n\t/**\n\t * @deprecated\n\t * Use ClientService instead\n\t */\n\treadonly config$: Observable;\n\t/**\n\t * @deprecated\n\t * Use CultureService instead\n\t */\n\treadonly culture$: Observable;\n\t/**\n\t * @deprecated\n\t * Use CultureService instead\n\t */\n\treadonly cultureCode$: Observable;\n\t/**\n\t * @deprecated\n\t * Use ClientService instead\n\t */\n\treadonly client$: Observable;\n\treadonly apiWithContext$: Observable;\n\treadonly portal: PortalType;\n\treadonly portalNumeric: PortalTypeEnum;\n\treadonly api: string;\n\treadonly cpUrl: string;\n\treadonly spUrl: string;\n\t/** @deprecated Use settings.env.environment instead */\n\treadonly environment: Environment;\n\treadonly env: AppEnvironment;\n\treadonly coreFeature: HubFeature.Core | HubFeature.CandidateAccess = HubFeature.Core;\n\n\tconstructor(\n\t\t@Inject(SETTINGS_CONFIG) private readonly config: SettingsConfig,\n\t\tprivate readonly cultureService: CultureService,\n\t\tprivate readonly clientService: ClientService,\n\t) {\n\t\tthis.culture$ = this.cultureService.culture$;\n\t\tthis.cultureCode$ = this.culture$.pipe(map((culture) => culture.code));\n\t\tthis.client$ = this.clientService.client$;\n\t\tthis.portal = this.config.portal;\n\t\tthis.api = this.config.baseUrl;\n\t\tthis.cpUrl = this.config.cpUrl;\n\t\tthis.spUrl = this.config.spUrl;\n\t\tthis.environment = this.config.environment;\n\t\tthis.env = config.env;\n\t\tthis.config$ = this.clientService.config$;\n\n\t\tif (this.portal === PortalType.CandidatePortal) {\n\t\t\tthis.coreFeature = HubFeature.CandidateAccess;\n\t\t}\n\n\t\tswitch (this.portal) {\n\t\t\tcase PortalType.CandidatePortal:\n\t\t\t\tthis.portalNumeric = PortalTypeEnum.CandidatePortal;\n\t\t\t\tbreak;\n\t\t\tcase PortalType.InternalPortal:\n\t\t\t\tthis.portalNumeric = PortalTypeEnum.InternalPortal;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.portalNumeric = PortalTypeEnum.SponsorPortal;\n\t\t}\n\n\t\tthis.apiWithContext$ = this.cultureService.culture$.pipe(\n\t\t\tmap((culture) => `${this.api}/${this.clientService.clientSnapshot}/${culture.code}`),\n\t\t);\n\t\tthis.existingCultures$ = this.cultureService.existingCultures$;\n\t\tthis.supportedCultures$ = this.cultureService.supportedCultures$;\n\t}\n\n\t/**\n\t * @deprecated\n\t * Use ClientService instead\n\t */\n\tget clientSnapshot(): string | null {\n\t\treturn this.clientService.clientSnapshot;\n\t}\n\n\t/**\n\t * @deprecated\n\t * Use CultureService instead\n\t */\n\tget cultureSnapshot(): string | null {\n\t\treturn this.cultureService.cultureSnapshot;\n\t}\n\n\t/**\n\t * @deprecated\n\t * Use CmRoutingService instead\n\t */\n\trouteWithContext(path: string[]): string[] {\n\t\treturn routeWithContext({\n\t\t\tculture: this.cultureService.cultureSnapshot ?? undefined,\n\t\t\tclient: this.clientService.clientSnapshot ?? undefined,\n\t\t\tportal: this.portal,\n\t\t})(path);\n\t}\n\n\t/**\n\t * @deprecated\n\t * Use CmRoutingService instead\n\t */\n\trouteWithContext$(path: string[]): Observable {\n\t\treturn routeWithContext$(this.client$, this.cultureCode$, this.portal)(path);\n\t}\n\n\t/**\n\t * @deprecated\n\t * Use CmRoutingService instead\n\t */\n\trouteWithNewCulture(path: string[], cultureCode: string): string[] {\n\t\treturn routeWithNewCulture({\n\t\t\tclient: this.clientSnapshot ?? undefined,\n\t\t\tportal: this.portal,\n\t\t})(path, cultureCode);\n\t}\n\n\t/**\n\t * @deprecated\n\t * Use CmRoutingService instead\n\t */\n\trouteWithNewCulture$(path: string[], cultureCode: string): Observable {\n\t\treturn routeWithNewCulture$(this.client$, this.portal)(path, cultureCode);\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { CmRoutingService } from '@cm/core/routing';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { SettingsService } from '../services/settings.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ExistingCultureGuard implements CanActivate {\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly settings: SettingsService,\r\n\t\tprivate readonly cmRouting: CmRoutingService\r\n\t) {}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\tconst requestedLanguage = route.paramMap.get('lang');\r\n\r\n\t\treturn this.settings.existingCultures$.pipe(\r\n\t\t\tmap(cultures => cultures.find(cltr => cltr.code === requestedLanguage)),\r\n\t\t\tswitchMap(cultures =>\r\n\t\t\t\t!!cultures\r\n\t\t\t\t\t? of(true)\r\n\t\t\t\t\t: this.cmRouting\r\n\t\t\t\t\t\t\t.routeWithNewCulture$(\r\n\t\t\t\t\t\t\t\twindow.location.pathname\r\n\t\t\t\t\t\t\t\t\t.split('/')\r\n\t\t\t\t\t\t\t\t\t.filter(path => !!path.length)\r\n\t\t\t\t\t\t\t\t\t.slice(2),\r\n\t\t\t\t\t\t\t\t'en'\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t.pipe(map(path => this.router.createUrlTree(path)))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { CmRoutingService } from '@cm/core/routing';\r\nimport { Observable, map, of } from 'rxjs';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LanguageParamGuard implements CanActivate {\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly cmRouting: CmRoutingService\r\n\t) {}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\tconst routedCulture = route.paramMap.get('lang');\r\n\t\tconst paramCulture = route.queryParamMap.get('language');\r\n\r\n\t\treturn paramCulture && paramCulture !== routedCulture\r\n\t\t\t? this.cmRouting\r\n\t\t\t\t\t.routeWithNewCulture$(\r\n\t\t\t\t\t\twindow.location.pathname\r\n\t\t\t\t\t\t\t.split('/')\r\n\t\t\t\t\t\t\t.filter(path => !!path.length)\r\n\t\t\t\t\t\t\t.slice(2),\r\n\t\t\t\t\t\tparamCulture\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\tmap(path =>\r\n\t\t\t\t\t\t\tthis.router.createUrlTree(path, { queryParamsHandling: 'preserve' })\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t: of(true);\r\n\t}\r\n}\r\n","import { PortalType } from '@ats/api/cm';\r\nimport { LogLevel } from '@cm/core/logging';\r\nimport { of, shareReplay } from 'rxjs';\r\nimport { AppEnvironment } from '../models/app-environment.interface';\r\n\r\nexport const defaultCulture = {\r\n\tcode: 'en',\r\n\tlabel: 'English',\r\n\tnativeLabel: 'English',\r\n};\r\n\r\nexport const spCulture = {\r\n\tcode: 'spculturetest',\r\n\tlabel: 'SP Culture Test',\r\n\tnativeLabel: 'SP Culture Test',\r\n};\r\n\r\nexport const cpCulture = {\r\n\tcode: 'cpculturetest',\r\n\tlabel: 'CP Culture Test',\r\n\tnativeLabel: 'CP Culture Test',\r\n};\r\n\r\nexport const cultures = [defaultCulture, spCulture, cpCulture];\r\n\r\nexport const cultures$ = of(cultures).pipe(shareReplay(1));\r\n\r\nexport const defaultClient = 'cmdemo';\r\n\r\nexport const ip = [PortalType.InternalPortal];\r\nexport const spAndCp = [PortalType.SponsorPortal, PortalType.CandidatePortal];\r\nexport const allPortals = [...spAndCp, ...ip];\r\n\r\nexport const environment: AppEnvironment = {\r\n\tproduction: true,\r\n\tbeta: false,\r\n\tlocal: false,\r\n\tstoreDomain: 'MockDomain',\r\n\tapiUrl: 'https://someapiurl',\r\n\tgraphQLUrl: 'https://someapiurl/graphql',\r\n\tlogging: LogLevel.Trace,\r\n\tcpUrl: 'https://cpurl',\r\n\tspUrl: 'https://spUrl',\r\n\tenvironment: 'production',\r\n};\r\n\r\nexport const defaultConfig = (portal: PortalType = PortalType.SponsorPortal) => ({\r\n\tbaseUrl: environment.apiUrl,\r\n\tcpUrl: environment.cpUrl,\r\n\tspUrl: environment.spUrl,\r\n\tenvironment: environment.environment,\r\n\tenv: environment,\r\n\tportal,\r\n});\r\n","import { inject } from '@angular/core';\r\nimport { CanMatchFn, Route } from '@angular/router';\r\nimport { CmRouteData } from '@ats/cm/ui';\r\nimport { map, Observable } from 'rxjs';\r\nimport { SettingsService } from '../services/settings.service';\r\n\r\nexport const clientMatch: CanMatchFn = (route: Route): Observable => {\r\n\tconst settings = inject(SettingsService);\r\n\tconst data: CmRouteData | null = route.data ?? null;\r\n\tconst clients = data?.clients ?? [];\r\n\treturn settings.client$.pipe(map(client => clients.includes(client)));\r\n};\r\n","import { InjectionToken } from '@angular/core';\r\nexport const STORAGE_DOMAIN = new InjectionToken('CertMetrics Storage Domain Prefix');\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n\timports: [CommonModule],\n})\nexport class StorageModule {}\n","import { Inject, Injectable } from '@angular/core';\nimport { AtsDate } from '@ats/utility';\nimport { Observable, ReplaySubject, filter, map, shareReplay } from 'rxjs';\nimport { STORAGE_DOMAIN } from './storage-domain.token';\nimport { CMStorageEvent } from './storage-event.type';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class StorageService {\n\tprivate readonly storageEvent = new ReplaySubject();\n\treadonly events$: Observable = this.storageEvent.asObservable().pipe(\n\t\tshareReplay(1),\n\t\tmap(ev => (ev.data !== null ? ev.data : null))\n\t);\n\n\tconstructor(@Inject(STORAGE_DOMAIN) private readonly domain: string) {\n\t\twindow.addEventListener('storage', e => this.handleStorageEvent(e));\n\t}\n\n\tpublic getStorageItemEvents$(name: string, type?: 'DELETE' | 'SAVE') {\n\t\treturn this.storageEvent.asObservable().pipe(\n\t\t\tshareReplay(1),\n\t\t\tfilter(ev => ev.key === name && (!type || (type === 'DELETE' && !!ev.data))),\n\t\t\tmap(ev => ev.data as T)\n\t\t);\n\t}\n\n\tpublic get(name: string): T | null {\n\t\ttry {\n\t\t\tconst dataStr = localStorage.getItem(`${this.domain}-${name}`);\n\t\t\tif (dataStr) {\n\t\t\t\tconst data = JSON.parse(dataStr);\n\t\t\t\tif (AtsDate.isPast((data || {}).expiry || new Date('1985-07-03'))) {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t}\n\t\t\t\treturn data.value;\n\t\t\t}\n\t\t\tthrow new Error();\n\t\t} catch (ex) {\n\t\t\tthis.delete(name);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic delete(name: string): void {\n\t\tconst { key, timestampKey } = this.getKeys(name);\n\t\tlocalStorage.removeItem(key);\n\t\tlocalStorage.removeItem(timestampKey);\n\t\tthis.emitStorageEvent<'DELETE'>({ key: name });\n\t}\n\n\tpublic save(name: string, value: any, expiry: number = 40): void {\n\t\tconst { key, timestampKey } = this.getKeys(name);\n\t\tlocalStorage.setItem(\n\t\t\tkey,\n\t\t\tJSON.stringify({\n\t\t\t\tvalue,\n\t\t\t\texpiry: AtsDate.addMinutes(expiry, new Date()),\n\t\t\t})\n\t\t);\n\t\tlocalStorage.setItem(timestampKey, JSON.stringify(new Date().toISOString()));\n\t\tthis.emitStorageEvent<'SAVE'>({\n\t\t\tkey: name,\n\t\t\tdata: value,\n\t\t});\n\t}\n\n\tprivate getKeys(name: string): { key: string; timestampKey: string } {\n\t\treturn {\n\t\t\tkey: `${this.domain}-${name}`,\n\t\t\ttimestampKey: `${this.domain}-${name}-LastUpdate`,\n\t\t};\n\t}\n\n\tpublic emitStorageEvent(\n\t\tevent: T extends 'SAVE' ? Required : CMStorageEvent\n\t) {\n\t\tthis.storageEvent.next(event);\n\t}\n\n\tprivate handleStorageEvent = (event: StorageEvent) => {\n\t\tif (!event.key || !event.key.includes('LastUpdate')) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst key = event.key.replace(`${this.domain}-`, '').replace('-LastUpdate', '');\n\t\tconst newValue = this.get(key);\n\n\t\tif (newValue === null) {\n\t\t\tthis.emitStorageEvent<'DELETE'>({ key });\n\t\t} else {\n\t\t\tthis.emitStorageEvent<'SAVE'>({ key, data: newValue });\n\t\t}\n\t};\n}\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { APIErrorVM, AuthErrorAction, CmSystemEvent } from '../models/system-event';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CmEventService {\r\n\tprivate readonly event = new Subject();\r\n\tpublic readonly event$ = this.event.asObservable();\r\n\tconstructor() {}\r\n\r\n\thandleAPIError({ guid, id, message }: APIErrorVM): void {\r\n\t\tthis.event.next({\r\n\t\t\tid: guid ?? id,\r\n\t\t\ttype: 'API_ERROR',\r\n\t\t\traw: { guid, id, message },\r\n\t\t});\r\n\t}\r\n\r\n\thandleSystemError(id: string = 'system-error'): void {\r\n\t\tthis.event.next({ id, type: 'SYSTEM_ERROR' });\r\n\t}\r\n\r\n\thandleAuthError(id: string = 'auth-error', action?: AuthErrorAction): void {\r\n\t\tthis.event.next({ id, type: 'AUTH_ERROR', action });\r\n\t}\r\n\r\n\thandleLoadingChange(id: string, status: 'START' | 'END' = 'START'): void {\r\n\t\tthis.event.next({\r\n\t\t\tid,\r\n\t\t\ttype: status === 'END' ? 'LOAD_END' : 'LOAD_START',\r\n\t\t});\r\n\t}\r\n\r\n\trequireReload(): void {\r\n\t\tthis.event.next({ id: 'reload-required', type: 'RELOAD_REQUIRED' });\r\n\t}\r\n}\r\n","import { cpCmUiModuleLocs } from 'libs/cm/ui/src/lib/cm-ui-module.locs';\nimport { enumLocs } from 'libs/core/localization/src/data/enums/enum.locs';\nimport { cpAchievementsModuleLocs } from 'libs/cp/feature/achievements/src/lib/cp-achievements.module.locs';\nimport { cpBenefitModuleLocs } from 'libs/cp/feature/benefits/src/lib/benefits.module.locs';\nimport { catalogsModuleLocs } from 'libs/cp/feature/catalogs/src/lib/catalogs.module.locs';\nimport { cpCertModuleLocs } from 'libs/cp/feature/certs/src/lib/certs.module.locs';\nimport { cpEcommerceHistoryLocs } from 'libs/cp/feature/ecommerce/src/lib/history/components/ecommerce-history/ecommerce-history.locs';\nimport { cpEcommerceStoreLocs } from 'libs/cp/feature/ecommerce/src/lib/storefront/components/storefront/storefront.locs';\nimport { cpHistoryModuleLocs } from 'libs/cp/feature/history/src/lib/history.module.locs';\nimport { homeModuleLocs } from 'libs/cp/feature/home/src/lib/home.module.locs';\nimport { cpLoginModuleLocs } from 'libs/cp/feature/login/src/lib/login.module.locs';\nimport { cpOtherAchievementFeatureLocs } from 'libs/cp/feature/other-achievements/src/lib/components/other-achievement-feature.locs';\nimport { cpProfileModuleLocs } from 'libs/cp/feature/profile/src/lib/profile.module.locs';\nimport { selfMergeRouteLocs } from 'libs/cp/feature/profile/src/lib/self-merge/self-merge-route.locs';\nimport { selfMergeModuleLocs } from 'libs/cp/feature/profile/src/lib/self-merge/self-merge.module.locs';\nimport { cpPublicModuleLocs } from 'libs/cp/feature/public/src/lib/public.module.locs';\nimport { cpSSOEgressModuleLocs } from 'libs/cp/feature/schedule/src/lib/modules/sso-egress/sso-egress.module.locs';\nimport { cpScheduleModuleLocs } from 'libs/cp/feature/schedule/src/lib/schedule.module.locs';\nimport { shareModuleLocs } from 'libs/cp/feature/share/src/lib/share.module.locs';\nimport { cpSSOAuthLocs } from 'libs/cp/feature/sso/src/lib/components/authorize/authorize.locs';\nimport { cpDataManagerLibLocs } from 'libs/cp/shared/data-management/src/cp-data-management.locs';\nimport { cpBannedLandingPageLocs } from 'libs/cp/shared/ui/src/lib/modules/components/banned-landing-page/banned-landing-page.locs';\nimport { appointmentCardLocs } from 'libs/cp/shared/ui/src/lib/modules/dashboard/components/appointment-card/apppointment-card.locs';\nimport { cpDashboardAppointmentLocs } from 'libs/cp/shared/ui/src/lib/modules/dashboard/components/appointments/apppointment.locs';\nimport { cpProfileAffiliationFormLocs } from 'libs/cp/ui/src/lib/components/requirement-forms/profile-affiliations/profile-affiliations.locs';\nimport { cpRequirementFormLocs } from 'libs/cp/ui/src/lib/components/requirement-forms/requirement-form.locs';\nimport { cpUIModuleLocs } from 'libs/cp/ui/src/lib/cp-ui-module.locs';\nimport { cpSharedProfileAffiliationFormLocs } from 'libs/feature/affiliation/src/components/candidate-affiliation-form.cp-locs';\nimport { cpSharedPageLocs } from 'libs/shared/pages/src/library.locs';\n\nexport const preloadedCP = {};\nexport const allCP = {\n\t...cpBenefitModuleLocs,\n\t...catalogsModuleLocs,\n\t...cpAchievementsModuleLocs,\n\t...cpCertModuleLocs,\n\t...cpDataManagerLibLocs,\n\t...cpHistoryModuleLocs,\n\t...cpLoginModuleLocs,\n\t...cpOtherAchievementFeatureLocs,\n\t...cpProfileAffiliationFormLocs,\n\t...cpPublicModuleLocs,\n\t...cpRequirementFormLocs,\n\t...cpSSOAuthLocs,\n\t...cpScheduleModuleLocs,\n\t...cpSharedPageLocs,\n\t...cpSharedProfileAffiliationFormLocs,\n\t...cpUIModuleLocs,\n\t...enumLocs,\n\t...homeModuleLocs,\n\t...cpProfileModuleLocs,\n\t...selfMergeModuleLocs,\n\t...selfMergeRouteLocs,\n\t...shareModuleLocs,\n\t...cpSSOEgressModuleLocs,\n\t...cpCmUiModuleLocs,\n\t...selfMergeModuleLocs,\n\t...selfMergeRouteLocs,\n\t...cpSSOAuthLocs,\n\t...appointmentCardLocs,\n\t...cpDashboardAppointmentLocs,\n\t...cpBannedLandingPageLocs,\n\t...cpEcommerceHistoryLocs,\n\t...cpEcommerceStoreLocs,\n};\n","import { Injectable } from '@angular/core';\r\nimport { FetchPolicy } from '@apollo/client/core/watchQueryOptions';\r\nimport { CandidateAccount, HubFeature } from '@ats/api/cm';\r\nimport { CmAuthService, Guard } from '@ats/cm/core';\r\nimport { Apollo, gql } from 'apollo-angular';\r\nimport { DocumentNode } from 'graphql';\r\nimport { Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { CandidateRequirements } from '../models';\r\n\r\nconst REQUIREMENTS_QUERY = (guard: Guard): DocumentNode => gql`\r\n\t\tquery candidateAccount {\r\n\t\t\tcandidateAccount {\r\n\t\t\t\tcmcId\r\n\t\t\t\t${guard.reset().everyFeature([HubFeature.CredentialAgreementAtLogin]).all ? 'certAgreementRequired' : ''}\r\n\t\t\t\t${\r\n\t\t\t\t\tguard.reset().everyFeature([HubFeature.CandidateProfilePrimaryInformationRequireNameVerification])\r\n\t\t\t\t\t\t.all\r\n\t\t\t\t\t\t? 'candidateNameVerificationRequired'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\t\t\t\tnameUpdateRequired\r\n\t\t\t\t${\r\n\t\t\t\t\tguard\r\n\t\t\t\t\t\t.reset()\r\n\t\t\t\t\t\t.someFeatures([\r\n\t\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireMinimum,\r\n\t\t\t\t\t\t\tHubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t\t\t\t\t\t]).all\r\n\t\t\t\t\t\t? 'minimumPrimaryProfileInformationRequired'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\t\t\t\t${\r\n\t\t\t\t\tguard\r\n\t\t\t\t\t\t.reset()\r\n\t\t\t\t\t\t.someFeatures([\r\n\t\t\t\t\t\t\tHubFeature.CandidateProfileAddressesPrimaryRequireMinimum,\r\n\t\t\t\t\t\t\tHubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t\t\t\t\t\t]).all\r\n\t\t\t\t\t\t? 'minimumPrimaryAddressInformationRequired'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\t\t\t\tprimaryInformationUpdateRequired\r\n\t\t\t\t${guard.reset().everyFeature([HubFeature.CandidateProfileCustomDataSettings]).all ? 'requiredSettingsMissing' : ''}\r\n\t\t\t\t${\r\n\t\t\t\t\tguard.reset().everyFeature([HubFeature.CandidateProfilePrimaryInformationAffiliationRequired]).all\r\n\t\t\t\t\t\t? 'affiliationUpdateRequired'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\t\t\t\t${\r\n\t\t\t\t\tguard.reset().everyFeature([HubFeature.CandidateProfilePrimaryInformationRequireEmailConfirmation])\r\n\t\t\t\t\t\t.all\r\n\t\t\t\t\t\t? 'candidateEmailConfirmationRequired'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\t\t\t\t${guard.reset().everyFeature([HubFeature.CandidateProfileDateOfBirth]).all ? 'dateOfBirthInvalid' : ''}\r\n\t\t\t}\r\n\t\t}\r\n\t`;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CpCandidateRequirementsService {\r\n\tconstructor(private readonly apollo: Apollo, private readonly auth: CmAuthService) {}\r\n\r\n\tcandidateRequirements$(fetchPolicy: FetchPolicy = 'cache-first'): Observable {\r\n\t\treturn this.auth.guard$.pipe(\r\n\t\t\tswitchMap(guard =>\r\n\t\t\t\tthis.apollo\r\n\t\t\t\t\t.query<{ candidateAccount: CandidateAccount }>({\r\n\t\t\t\t\t\tquery: REQUIREMENTS_QUERY(guard),\r\n\t\t\t\t\t\tfetchPolicy,\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.pipe(map(({ data }) => (data || {}).candidateAccount))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { CmSettingsService } from '@ats/cm/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { CandidateRequirements } from '../models';\r\nimport { CpCandidateRequirementsService } from '../services/candidate-requirements.service';\r\n\r\n@Injectable()\r\nexport class CpCandidateRequirementsGuard implements CanActivateChild {\r\n\tconstructor(\r\n\t\tprivate readonly settings: CmSettingsService,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly candidateRequirements: CpCandidateRequirementsService\r\n\t) {}\r\n\r\n\tcanActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n\t\treturn this.candidateRequirements.candidateRequirements$().pipe(\r\n\t\t\tmap(candidate => {\r\n\t\t\t\tif (this.hasRequirement(candidate) && state.url !== this.getRequirementsUrl()) {\r\n\t\t\t\t\treturn this.router.createUrlTree(this.settings.route(['home', 'requirements']));\r\n\t\t\t\t} else if (!this.hasRequirement(candidate) && state.url === this.getRequirementsUrl()) {\r\n\t\t\t\t\treturn this.router.createUrlTree(this.settings.route(['home', 'dashboard']));\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getRequirementsUrl(route: string[] = ['home', 'requirements']): string {\r\n\t\treturn `/${this.settings.route(route).join('/')}`;\r\n\t}\r\n\r\n\tprivate hasRequirement(candidate: CandidateRequirements): boolean {\r\n\t\treturn (\r\n\t\t\tcandidate.certAgreementRequired ||\r\n\t\t\tcandidate.nameUpdateRequired ||\r\n\t\t\tcandidate.minimumPrimaryProfileInformationRequired ||\r\n\t\t\tcandidate.minimumPrimaryAddressInformationRequired ||\r\n\t\t\tcandidate.primaryInformationUpdateRequired ||\r\n\t\t\tcandidate.requiredSettingsMissing ||\r\n\t\t\tcandidate.affiliationUpdateRequired ||\r\n\t\t\tcandidate.candidateNameVerificationRequired ||\r\n\t\t\tcandidate.candidateEmailConfirmationRequired ||\r\n\t\t\tcandidate.dateOfBirthInvalid\r\n\t\t);\r\n\t}\r\n}\r\n","export class CpLoadModuleOnceGuard {\r\n\tconstructor(targetModule: any) {\r\n\t\tif (targetModule) {\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`${targetModule.constructor.name} has already been loaded. Import this module in the AppModule only.`\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { HubFeature } from '@ats/api/cm';\r\nimport { CmFeatureService, CmSSOService, INGRESS_TYPE, SSO_FLOW } from '@ats/cm/core';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { environment } from '@cp-env/environment';\r\nimport { Observable, of } from 'rxjs';\r\nimport { filter, first, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class CpSSOGuard implements CanActivate {\r\n\tconstructor(\r\n\t\tprivate features: CmFeatureService,\r\n\t\tprivate settingsService: SettingsService,\r\n\t\tprivate router: Router,\r\n\t\tprivate readonly ssoService: CmSSOService\r\n\t) {}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\t\treturn this.features.public$.pipe(\r\n\t\t\tfilter(features => !!features),\r\n\t\t\tfirst(),\r\n\t\t\tswitchMap(features => {\r\n\t\t\t\tconst ingressType = this.getIngressType(features);\r\n\t\t\t\treturn features.includes(HubFeature.CandidateAccessIntegrationIngress) &&\r\n\t\t\t\t\t!this.hasCorrectQueryParams(route, ingressType)\r\n\t\t\t\t\t? this.handleSso(this.settingsService.clientSnapshot, route, ingressType)\r\n\t\t\t\t\t: of(true);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks localstorage to see if we're in the middle of a SSO flow or not, saves a query param to localstorage,\r\n\t * and redirects the user to a SSO provider\r\n\t * @param client\r\n\t * @param route\r\n\t * @private\r\n\t */\r\n\tprivate handleSso(\r\n\t\tclient: string,\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\tingressType: INGRESS_TYPE\r\n\t): Observable {\r\n\t\t// If we have a redirectTo as a query param, then store it in local storage\r\n\t\tif ((route.queryParams || {}).redirectTo) {\r\n\t\t\tlocalStorage.setItem(SSO_FLOW.REDIRECT_TO, route.queryParams.redirectTo);\r\n\t\t}\r\n\r\n\t\tlet queryParams = this.ssoService.encodeQueryParams(route.queryParamMap);\r\n\t\tqueryParams = queryParams.length > 0 ? '?' + queryParams : '';\r\n\r\n\t\tlocation.href = `${environment.apiUrl}/${client}/sso/ingress/${ingressType}${queryParams}`;\r\n\t\treturn of(false);\r\n\t}\r\n\r\n\tprivate hasCorrectQueryParams(\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\tingressType: INGRESS_TYPE\r\n\t): boolean {\r\n\t\tswitch (ingressType) {\r\n\t\t\tcase INGRESS_TYPE.OIDC:\r\n\t\t\t\treturn (route.queryParams || {}).code && (route.queryParams || {}).state;\r\n\t\t\tcase INGRESS_TYPE.JWT:\r\n\t\t\t\treturn (route.queryParams || {}).jwtSso;\r\n\t\t\tcase INGRESS_TYPE.WSTRUST:\r\n\t\t\t\treturn (route.queryParams || {}).token;\r\n\t\t\tdefault:\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getIngressType(features: string[]): INGRESS_TYPE {\r\n\t\tif (features.includes(HubFeature.CandidateAccessIntegrationIngressOidc)) {\r\n\t\t\treturn INGRESS_TYPE.OIDC;\r\n\t\t} else if (features.includes(HubFeature.CandidateAccessIntegrationIngressJwt)) {\r\n\t\t\treturn INGRESS_TYPE.JWT;\r\n\t\t} else if (features.includes(HubFeature.CandidateAccessIntegrationIngressWsTrust)) {\r\n\t\t\treturn INGRESS_TYPE.WSTRUST;\r\n\t\t}\r\n\t}\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CandidateAccount, HubFeature } from '@ats/api/cm';\r\nimport {\r\n\tAppUser,\r\n\tAppUserType,\r\n\tCmAuthService,\r\n\tCmBaseUserService,\r\n\tCmFeatureService,\r\n\tCmInterceptHeaders,\r\n\tCmPublicTokenData,\r\n\tCmSettingsService,\r\n\tFirstTimeLoginRequest,\r\n\tResetPasswordRequest,\r\n} from '@ats/cm/core';\r\nimport { AtsLoggerService } from '@ats/logger';\r\nimport { Apollo, gql } from 'apollo-angular';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map, mapTo, switchMap, take } from 'rxjs/operators';\r\n\r\nconst QUERY_CURRENT_CANDIDATE = (features: string[]) => gql`\r\n\t{\r\n\t\tcandidateAccount {\r\n\t\t\tcmcId\r\n\t\t\texternalId\r\n\t\t\tcandidate {\r\n\t\t\t\tcmcId\r\n\t\t\t\tnameLast\r\n\t\t\t\tnameFirst\r\n\t\t\t\t${\r\n\t\t\t\t\tfeatures.find(\r\n\t\t\t\t\t\tfeat => feat === HubFeature.CandidateProfilePrimaryInformationPreferredName\r\n\t\t\t\t\t)\r\n\t\t\t\t\t\t? `\r\n\t\t\t\tpreferredNameLast\r\n\t\t\t\tpreferredNameFirst\r\n\t\t\t\t`\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}\r\n\r\n\t\t\t\tidentificationList(request: { allDps: true }) {\r\n\t\t\t\t\tid\r\n\t\t\t\t\texternalId\r\n\t\t\t\t\tdataProvider {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\texternalId\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nconst MUTATION_UNIMPERSONATE = gql`\r\n\tmutation ($request: GenerateShortLivedTokenRequest!) {\r\n\t\tgenerateShortLivedToken(request: $request)\r\n\t}\r\n`;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CpUserService extends CmBaseUserService {\r\n\tconstructor(\r\n\t\t_auth: CmAuthService,\r\n\t\t_settings: CmSettingsService,\r\n\t\t_features: CmFeatureService,\r\n\t\t_logger: AtsLoggerService,\r\n\t\t_http: HttpClient,\r\n\t\tprivate apollo: Apollo\r\n\t) {\r\n\t\tsuper(_auth, _settings, _features, _logger, _http);\r\n\t\tthis.queryUser$ = this.fetchCandidateQuery$();\r\n\t\tthis.monitorUserChanges$();\r\n\t}\r\n\r\n\t/**\r\n\t * Starts the login process by passing the email and password down to get a token\r\n\t * @method\r\n\t * @param {Object} obj - An object\r\n\t * @param {string} [obj.email] - The email of the candidate\r\n\t * @param {string} obj.password - The password of the candidate\r\n\t * @return {Observable} - An observable that emits true if the candidate was successfully logged in\r\n\t */\r\n\tgetUserByEmailCredentials(email: string, password: string): Observable {\r\n\t\treturn this.auth\r\n\t\t\t.login$({\r\n\t\t\t\tclientAlias: this.settings.client,\r\n\t\t\t\tcandidateEmailAddr: email,\r\n\t\t\t\tcandidatePassword: password,\r\n\t\t\t})\r\n\t\t\t.pipe(\r\n\t\t\t\ttake(1),\r\n\t\t\t\tcatchError(err => {\r\n\t\t\t\t\tif (err.status === 401 || err.status === 403) {\r\n\t\t\t\t\t\treturn of(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn throwError(err);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Starts the login process by passing the username and password down to get a token\r\n\t * @method\r\n\t * @param {Object} obj - An object\r\n\t * @param {string} [obj.username] - The username of the candidate\r\n\t * @param {string} obj.password - The password of the candidate\r\n\t * @return {Observable} - An observable that emits true if the candidate was successfully logged in\r\n\t */\r\n\tgetUserByLoginCredentials(username: string, password: string): Observable {\r\n\t\treturn this.auth\r\n\t\t\t.login$({\r\n\t\t\t\tclientAlias: this.settings.client,\r\n\t\t\t\tcandidateLoginId: username,\r\n\t\t\t\tcandidatePassword: password,\r\n\t\t\t})\r\n\t\t\t.pipe(take(1));\r\n\t}\r\n\r\n\t/**\r\n\t * Starts the login process by passing the username and password down to get a token\r\n\t * @method\r\n\t * @param {Object} obj - An object\r\n\t * @param {string} [obj.username] - The username of the candidate\r\n\t * @param {string} obj.password - The password of the candidate\r\n\t * @return {Observable} - An observable that emits true if the candidate was successfully logged in\r\n\t */\r\n\tgetUserByUsernameorEmail(username: string, password: string): Observable {\r\n\t\treturn this.auth\r\n\t\t\t.login$({\r\n\t\t\t\tclientAlias: this.settings.client,\r\n\t\t\t\tcandidateEmailOrLogin: username,\r\n\t\t\t\tcandidatePassword: password,\r\n\t\t\t})\r\n\t\t\t.pipe(take(1));\r\n\t}\r\n\r\n\t/**\r\n\t * Starts the login process by passing the username and short-term key for impersonation\r\n\t * @method\r\n\t * @param {string} token - Key provided by the SP\r\n\t * @param {string} login - The login of the candidate being impersonated\r\n\t * @param {boolean} [withLocalization] - A boolean indicating if inline localizations are enabled\r\n\t * @return {Observable} - An observable that emits true if the candidate was successfully logged in\r\n\t */\r\n\r\n\tgetUserViaImpersonation(\r\n\t\ttoken: string,\r\n\t\tlogin: string,\r\n\t\twithLocalization: boolean\r\n\t): Observable {\r\n\t\tlet url = `${this.settings.api}/impersonate?candidateLoginId=${login}&key=${token}`;\r\n\t\tif (withLocalization) {\r\n\t\t\turl += '&enableLocalization=true';\r\n\t\t}\r\n\t\treturn this.auth\r\n\t\t\t.updateTokenWithPost$(\r\n\t\t\t\turl,\r\n\t\t\t\t{},\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: { ...CmInterceptHeaders.BypassAuth },\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t\t.pipe(map(Boolean));\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a short-lived key that the SP can use to unimpersonate a candidate\r\n\t * @method\r\n\t * @return {Observable} - Returns the token generated\r\n\t */\r\n\tpublic unimpersonate(): Observable {\r\n\t\treturn this.apollo\r\n\t\t\t.mutate<{ generateShortLivedToken: string }>({\r\n\t\t\t\tmutation: MUTATION_UNIMPERSONATE,\r\n\t\t\t\tvariables: {\r\n\t\t\t\t\trequest: {\r\n\t\t\t\t\t\ttargetUrl: `${this.settings.api}/unimpersonate`,\r\n\t\t\t\t\t\ttargetMethod: 'POST',\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.pipe(map(({ data }) => data.generateShortLivedToken || ''));\r\n\t}\r\n\r\n\t/**\r\n\t * Starts the logout process\r\n\t * @method\r\n\t * @return {void} - Logs out the current candidate, then redirects to the login page\r\n\t */\r\n\tclearUser(): void {\r\n\t\tthis.auth.logout$();\r\n\t}\r\n\r\n\t/**\r\n\t * Registers first-time candidate login\r\n\t * @method\r\n\t * @param {FirstTimeLoginRequest} request - The first time login request data\r\n\t * @return {Observable} - A boolean observable that is true when successful\r\n\t */\r\n\tfirstTimeLogin(request: FirstTimeLoginRequest): Observable {\r\n\t\treturn this.settings.apiWithContext$.pipe(\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(apiWithContext =>\r\n\t\t\t\tthis.http.post(\r\n\t\t\t\t\t`${apiWithContext}/candidate/first-time-request`,\r\n\t\t\t\t\trequest,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theaders: new HttpHeaders({\r\n\t\t\t\t\t\t\t...CmInterceptHeaders.BypassAuth,\r\n\t\t\t\t\t\t\t...CmInterceptHeaders.SuppressError,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\tmapTo(true)\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the password for a first-time candidate login\r\n\t * @method\r\n\t * @param {ResetPasswordRequest} request - The password to set for the candidate\r\n\t * @return {Observable} - A boolean observable that is true when successful\r\n\t */\r\n\tfirstTimePassword(request: ResetPasswordRequest): Observable {\r\n\t\treturn this.settings.apiWithContext$.pipe(\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(apiWithContext =>\r\n\t\t\t\tthis.http.post(\r\n\t\t\t\t\t`${apiWithContext}/candidate/first-time`,\r\n\t\t\t\t\trequest,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theaders: new HttpHeaders({\r\n\t\t\t\t\t\t\t...CmInterceptHeaders.BypassAuth,\r\n\t\t\t\t\t\t\t...CmInterceptHeaders.SuppressError,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\tmapTo(true)\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers a forgotten password email using email\r\n\t * @method\r\n\t * @param {string} emailAddr - The email for the password reset\r\n\t * @returns {Observable} - Returns an observable of a boolean set to true\r\n\t */\r\n\tforgotPasswordByEmail(emailAddr: string): Observable {\r\n\t\treturn this.forgotPassword({ emailAddr }, 'candidate');\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers a forgotten password email using username\r\n\t * @method\r\n\t * @param {string} loginId - The username for the password reset\r\n\t * @returns {Observable} - Returns an observable of a boolean set to true\r\n\t */\r\n\tforgotPasswordByUsername(loginId: string): Observable {\r\n\t\treturn this.forgotPassword({ loginId }, 'candidate');\r\n\t}\r\n\r\n\t/**\r\n\t * Resets a password for a candidate\r\n\t * @method\r\n\t * @param {string} [token] - The token from the URL\r\n\t * @param {string} [newPassword] - The new password\r\n\t * @returns {Observable} - Returns an observable of a boolean set to true\r\n\t */\r\n\tpublic resetCandidatePassword(token: string, newPassword: string): Observable {\r\n\t\treturn this.resetPassword({ token, newPassword }, 'candidate');\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the web user via GraphQL\r\n\t * @private\r\n\t * @method\r\n\t * @return {Observable} - Returns an observable containing an AppUser derived from the web user\r\n\t */\r\n\tprivate fetchCandidateQuery$(): (\r\n\t\tfeatures: string[],\r\n\t\ttoken: CmPublicTokenData\r\n\t) => Observable {\r\n\t\treturn (features: string[], token: CmPublicTokenData) =>\r\n\t\t\t!features\r\n\t\t\t\t? of(null)\r\n\t\t\t\t: this.apollo\r\n\t\t\t\t\t\t.watchQuery<{ candidateAccount: CandidateAccount }>({\r\n\t\t\t\t\t\t\tquery: QUERY_CURRENT_CANDIDATE(features),\r\n\t\t\t\t\t\t\tfetchPolicy: 'network-only',\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.valueChanges.pipe(\r\n\t\t\t\t\t\t\tswitchMap(({ data }) => {\r\n\t\t\t\t\t\t\t\tif (data.candidateAccount && data.candidateAccount.candidate) {\r\n\t\t\t\t\t\t\t\t\treturn of(data.candidateAccount);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tthrowError('Unable to load user');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tmap(candidateAccount => {\r\n\t\t\t\t\t\t\t\tconst candidate = candidateAccount.candidate;\r\n\t\t\t\t\t\t\t\tconst firstName = candidate.preferredNameFirst?.length\r\n\t\t\t\t\t\t\t\t\t? candidate.preferredNameFirst\r\n\t\t\t\t\t\t\t\t\t: candidate.nameFirst;\r\n\t\t\t\t\t\t\t\tconst lastName = candidate.preferredNameLast?.length\r\n\t\t\t\t\t\t\t\t\t? candidate.preferredNameLast\r\n\t\t\t\t\t\t\t\t\t: candidate.nameLast;\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tname: `${firstName} ${lastName}`,\r\n\t\t\t\t\t\t\t\t\tusername:\r\n\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t(candidate.identificationList || []).find(\r\n\t\t\t\t\t\t\t\t\t\t\t\tid =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(id.dataProvider || {}).externalId ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t'cm.internal'\r\n\t\t\t\t\t\t\t\t\t\t\t) || {}\r\n\t\t\t\t\t\t\t\t\t\t).externalId || candidate.email,\r\n\t\t\t\t\t\t\t\t\tcmcId: candidate.cmcId,\r\n\t\t\t\t\t\t\t\t\temail: candidate.email,\r\n\t\t\t\t\t\t\t\t\tpermissions: [],\r\n\t\t\t\t\t\t\t\t\ttype: AppUserType.CANDIDATE,\r\n\t\t\t\t\t\t\t\t\tisImpersonating: token.isImpersonating,\r\n\t\t\t\t\t\t\t\t\tlocalizationEnabled: token.localizationEnabled,\r\n\t\t\t\t\t\t\t\t\tfeatures,\r\n\t\t\t\t\t\t\t\t} as AppUser;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t);\r\n\t}\r\n}\r\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CmCoreModule, CmLocalizationService } from '@ats/cm/core';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { LocalizationModule } from '@cm/core/localization';\nimport { preloadedCP } from '@cp/data/localizations';\nimport { CpCandidateRequirementsGuard } from './guards/candidate-requirements.guard';\nimport { CpLoadModuleOnceGuard } from './guards/load-once.guard';\nimport { CpSSOGuard } from './guards/sso.guard';\nimport { CpUserService } from './services/cp-user.service';\n\n@NgModule({\n\texports: [LocalizationModule],\n\timports: [CmCoreModule, LocalizationModule.forChild({ ...preloadedCP })],\n\tproviders: [\n\t\tCpUserService,\n\t\tCpCandidateRequirementsGuard,\n\t\tAtsNotificationService,\n\t\tCmLocalizationService,\n\t\tCpSSOGuard,\n\t],\n})\nexport class CpCoreModule extends CpLoadModuleOnceGuard {\n\tconstructor(@Optional() @SkipSelf() parentModule: CpCoreModule) {\n\t\tsuper(parentModule);\n\t}\n}\n","export const achievementsDPRoot = 'Credentials|Achievements';\r\n","import { achievementEcertLocs } from \"./ecert/achievement-ecert.locs\";\r\nimport { achievementLogosLocs } from \"./logos/logos.component.locs\";\r\n\r\nexport const cpAchievementsModuleLocs = {\r\n ...achievementEcertLocs,\r\n ...achievementLogosLocs,\r\n};\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\nimport { achievementsDPRoot } from '../achievements-meta';\r\n\r\nconst dpRoot = `${achievementsDPRoot}|Status`;\r\n\r\nconst sharedProps: Partial = {\r\n\tfeature: HubFeature.CredentialAchievements,\r\n\tportal: 'CP' as LocPortal,\r\n\tshared: false,\r\n\thtmlAllowed: false,\r\n};\r\n\r\nexport type AchievementEcertLoc =\r\n\t| 'CPAchievementEcertExpired'\r\n\t| 'CPAchievementEcertActive'\r\n\t| 'CPAchievementEcertNever'\r\n\t| 'CPAchievementEcertName'\r\n\t| 'CPAchievementEcertGroup'\r\n\t| 'CPAchievementEcertStatus'\r\n\t| 'CPAchievementEcertActiveDate'\r\n\t| 'CPAchievementEcertExpireDate'\r\n\t| 'CPAchievementEcertActions'\r\n\t| 'CPAchievementEcertDownloadButton'\r\n\t| 'CPAchievementEcertDownloadTooltip'\r\n\t| 'CPAchievementEcertPageTitle'\r\n\t| 'CPAchievementEcertPageDescription';\r\n\r\nexport const achievementEcertLocs: LocDefs = {\r\n\tCPAchievementEcertExpired: {\r\n\t\tdefaultValue: 'Expired',\r\n\t\tdescription: 'Content shown for the status of an achievement when it is already expired',\r\n\t\tdisplayPath: `${dpRoot}|Expired`,\r\n\t\tdisplayType: 'Content',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.Content.Expired',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertActive: {\r\n\t\tdefaultValue: 'Active',\r\n\t\tdescription: 'Content shown for the status of an achievement when it is active',\r\n\t\tdisplayPath: `${dpRoot}|Active`,\r\n\t\tdisplayType: 'Content',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.Content.Active',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertNever: {\r\n\t\tdefaultValue: 'Never',\r\n\t\tdescription: 'Content shown when there is no expire date for the achievement',\r\n\t\tdisplayPath: `${dpRoot}|Never`,\r\n\t\tdisplayType: 'Content',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.Content.Never',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertName: {\r\n\t\tdefaultValue: 'Name',\r\n\t\tdescription: 'Label for the achievement name',\r\n\t\tdisplayPath: `${dpRoot}|Name`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.FieldLabel.Name',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertGroup: {\r\n\t\tdefaultValue: 'Group',\r\n\t\tdescription: 'Label for the achievement group',\r\n\t\tdisplayPath: `${dpRoot}|Group`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.FieldLabel.Group',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertStatus: {\r\n\t\tdefaultValue: 'Status',\r\n\t\tdescription: 'Field label for status',\r\n\t\tdisplayPath: `${dpRoot}|Status`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.FieldLabel.Status',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertActiveDate: {\r\n\t\tdefaultValue: 'Active Date',\r\n\t\tdescription: 'Field label for active date',\r\n\t\tdisplayPath: `${dpRoot}|Active Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.FieldLabel.ActiveDate',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertExpireDate: {\r\n\t\tdefaultValue: 'Expire Date',\r\n\t\tdescription: 'Field label for expire date',\r\n\t\tdisplayPath: `${dpRoot}|Expire Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.FieldLabel.ExpireDate',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertActions: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Field label for actions',\r\n\t\tdisplayPath: `${dpRoot}|Actions`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertDownloadButton: {\r\n\t\tdefaultValue: 'Download',\r\n\t\tdescription: 'Default text for the download button',\r\n\t\tdisplayPath: `${dpRoot}|Download Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\tlegacyName:\r\n\t\t\t'Credential.Achievements.Certificate/Achievements.Ecertificates.Button.Download',\r\n\t\t...sharedProps,\r\n\t\tfeature: HubFeature.CredentialAchievementsCertificate,\r\n\t},\r\n\tCPAchievementEcertDownloadTooltip: {\r\n\t\tdefaultValue: 'Download E-Certificate',\r\n\t\tdescription: 'Content shown in the tooltip for the download button',\r\n\t\tdisplayPath: `${dpRoot}|Download Tooltip`,\r\n\t\tdisplayType: 'Content',\r\n\t\tlegacyName:\r\n\t\t\t'Credential.Achievements.Certificate/Credentials.Achievements.Status.Content.DownloadEcert',\r\n\t\t...sharedProps,\r\n\t\tfeature: HubFeature.CredentialAchievementsCertificate,\r\n\t},\r\n\tCPAchievementEcertPageTitle: {\r\n\t\tdefaultValue: 'Achievements',\r\n\t\tdescription: 'Page title for achievements status page. This is shared with the tab title.',\r\n\t\tdisplayPath: `${dpRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tlegacyName: 'Credential.Achievements/Credentials.Achievements.Status.Title.Pagetitle',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAchievementEcertPageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Page description for achievements status page',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\tdisplayType: 'Content',\r\n\t\tlegacyName:\r\n\t\t\t'Credential.Achievements/Credentials.Achievements.Status.Content.PageDescription',\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(achievementEcertLocs);\r\n","import { HubFeature, LocType } from \"@ats/api/cm\";\r\nimport { LocDefs, MapLocKeys } from \"@cm/core/localization\";\r\nimport { achievementsDPRoot } from \"../achievements-meta\";\r\n\r\nconst dpRoot = `${achievementsDPRoot}|Logos`;\r\n\r\nconst sharedProps = {\r\n feature: HubFeature.CredentialAchievementsLogoDownload,\r\n type: LocType.CandidatePortalString,\r\n};\r\n\r\nexport type AchievementLogosLoc =\r\n | 'CPAchievementLogosName'\r\n | 'CPAchievementLogosGroup'\r\n | 'CPAchievementLogosDownloadButton'\r\n | 'CPAchievementLogosPageTitle'\r\n | 'CPAchievementLogosPageDescription'\r\n | 'CPAchievementLogosActions';\r\n\r\nexport const achievementLogosLocs: LocDefs = {\r\n CPAchievementLogosName: {\r\n defaultValue: 'Name',\r\n description: 'Field Label for name.',\r\n displayPath: `${dpRoot}|Name`,\r\n displayType: 'Label',\r\n legacyName: 'Credential.Achievements.LogoDownload/Achievements.Logos.FieldLabel.Name',\r\n ...sharedProps,\r\n },\r\n CPAchievementLogosGroup: {\r\n defaultValue: 'Group',\r\n description: 'Field Label for group.',\r\n displayPath: `${dpRoot}|Group`,\r\n displayType: 'Label',\r\n legacyName: 'Credential.Achievements.LogoDownload/Achievements.Logos.FieldLabel.Group',\r\n ...sharedProps,\r\n },\r\n CPAchievementLogosDownloadButton: {\r\n defaultValue: 'Download',\r\n description: 'Text for the button to download achievement logo.',\r\n displayPath: `${dpRoot}|Download Button`,\r\n displayType: 'Button',\r\n legacyName: 'Credential.Achievements.LogoDownload/Credentials.Achievements.Logos.Button.Download',\r\n ...sharedProps,\r\n },\r\n CPAchievementLogosPageTitle: {\r\n defaultValue: 'Download Logos',\r\n description: 'Text for the page title of the achievements logo download page.',\r\n displayPath: `${dpRoot}|Page Title`,\r\n displayType: 'Title',\r\n legacyName: 'Credential.Achievements.LogoDownload/Credentials.Achievements.Logos.Title.Pagetitle',\r\n ...sharedProps,\r\n },\r\n CPAchievementLogosPageDescription: {\r\n defaultValue: '',\r\n description: 'Description for the download achievements logo page for candidates',\r\n displayPath: `${dpRoot}|Page Description`,\r\n displayType: 'Content',\r\n legacyName: 'Credential.Achievements.LogoDownload/Credentials.Achievements.Logos.Content.PageDescription',\r\n ...sharedProps,\r\n },\r\n CPAchievementLogosActions: {\r\n defaultValue: '',\r\n description: 'Field label for actions',\r\n displayPath: `${dpRoot}|Actions`,\r\n displayType: 'Label',\r\n ...sharedProps,\r\n },\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(achievementLogosLocs);\r\n","import { cpClaimBenefitLocs } from './components/benefit-claim/benefit-claim.locs';\nimport { cpBenefitDetailLocs } from './components/benefit-detail/benefit-detail.locs';\nimport { cpBenefitInfoLocs } from './components/benefit-info/benefit-info.locs';\nimport { cpBenefitsCatalogLocs } from './components/benefits-catalog/benefits-catalog.locs';\nimport { createLineupLocs } from './components/create-lineup/create-line-up.locs';\nimport { cpBenefitLineupModalLocs } from './components/lineup-modal/lineup-modal.locs';\n\nexport const cpBenefitModuleLocs = {\n\t...createLineupLocs,\n\t...cpClaimBenefitLocs,\n\t...cpBenefitDetailLocs,\n\t...cpBenefitInfoLocs,\n\t...cpBenefitsCatalogLocs,\n\t...cpBenefitLineupModalLocs,\n};\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type ClaimBenefitLocs = 'CPClaimBenefitButton' | 'CPClaimBenefitNoticeChangesSaved';\r\nexport const cpClaimBenefitLocs: LocDefs = {\r\n\tCPClaimBenefitButton: {\r\n\t\tdefaultValue: 'Claim Benefit',\r\n\t\tdescription: 'Button to claim benefit',\r\n\t\tdisplayPath: `Benefits|Program|Button|Claim Benefit`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Button.ClaimBenefit',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPClaimBenefitNoticeChangesSaved: {\r\n\t\tdefaultValue: 'Changes saved',\r\n\t\tdescription: 'Notice for changes saved',\r\n\t\tdisplayPath: `Benefits|Program|Notification Message|Changes Saved`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.NotificationMessage.ChangesSaved',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpClaimBenefitLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPBenefitDetailLocs =\r\n\t| 'CPBenefitDetailOptInMessage'\r\n\t| 'CPBenefitDetailLabelInstructions'\r\n\t| 'CPBenefitDetailLabelType'\r\n\t| 'CPBenefitDetailLabelToken'\r\n\t| 'CPBenefitDetailLabelUrl'\r\n\t| 'CPBenefitDetailLabelUrlPreview'\r\n\t| 'CPBenefitDetailButtonGoBack'\r\n\t| 'CPBenefitDetailTitlePage'\r\n\t| 'CPBenefitDetailContentPageDescription';\r\n\r\nexport const cpBenefitDetailLocs: LocDefs = {\r\n\tCPBenefitDetailOptInMessage: {\r\n\t\tdefaultValue: 'You have already opted in.',\r\n\t\tdescription:\r\n\t\t\t'Content shown on the benefit details page when benefit is of lineup type and candidate has already opted-in.',\r\n\t\tdisplayPath: `Benefits|Program|Already opted-in`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Content.AlreadyOptIn',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\tCPBenefitDetailLabelInstructions: {\r\n\t\tdefaultValue: 'Instructions',\r\n\t\tdescription: 'Label for the instructions field on the benefit details page.',\r\n\t\tdisplayPath: `Benefits|Program|Field Label|Instructions`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Instructions',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitDetailLabelType: {\r\n\t\tdefaultValue: 'Type',\r\n\t\tdescription: 'Label for the type field on the benefit details page.',\r\n\t\tdisplayPath: `Benefits|Program|Field Label|Type`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Type',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitDetailLabelToken: {\r\n\t\tdefaultValue: 'Token',\r\n\t\tdescription: 'Label for the token field on the benefit details page.',\r\n\t\tdisplayPath: `Benefits|Program|Field Label|Token`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Token',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitDetailLabelUrl: {\r\n\t\tdefaultValue: 'Url',\r\n\t\tdescription: 'Label for the url field on the benefit details page.',\r\n\t\tdisplayPath: `Benefits|Program|Field Label|Url`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Url',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitDetailLabelUrlPreview: {\r\n\t\tdefaultValue: 'Preview',\r\n\t\tdescription: 'Content of the button to Preview the benefit Url',\r\n\t\tdisplayPath: `Benefits|Program|Content|Preview`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.UrlPreview',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitDetailButtonGoBack: {\r\n\t\tdefaultValue: 'Go Back',\r\n\t\tdescription: 'Button to go back',\r\n\t\tdisplayPath: `Benefits|Program|Button|Go Back`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Button.GoBack',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitDetailTitlePage: {\r\n\t\tdefaultValue: 'Benefit Details',\r\n\t\tdescription: 'Title for benefit details page',\r\n\t\tdisplayPath: 'Benefits|Program|Title|Benefit Details',\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Title.BenefitDetails',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitDetailContentPageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Page description for benefit details page',\r\n\t\tdisplayPath: 'Benefits|Program|Content|Page Description',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Content.PageDescription',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: true,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpBenefitDetailLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPBenefitInfoLocs = 'CPBenefitInfoButtonMoreInfo';\r\nexport const cpBenefitInfoLocs: LocDefs = {\r\n\tCPBenefitInfoButtonMoreInfo: {\r\n\t\tdefaultValue: 'More Information',\r\n\t\tdescription: 'Button to go back',\r\n\t\tdisplayPath: `Benefits|Program|Button|More Information`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Button.MoreInfo',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpBenefitInfoLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPBenefitsCatalogLocs =\r\n\t| 'CPBenefitsCatalogLabelStatus'\r\n\t| 'CPBenefitsCatalogLabelName'\r\n\t| 'CPBenefitsCatalogLabelType'\r\n\t| 'CPBenefitsCatalogLabelExpireDate'\r\n\t| 'CPBenefitsCatalogLabelGroup'\r\n\t| 'CPBenefitsCatalogLabelToken'\r\n\t| 'CPBenefitsCatalogTitlePage'\r\n\t| 'CPBenefitsCatalogContentPageDescription'\r\n\t| 'CPBenefitsCatalogContentInvalidToken'\r\n\t| 'CPBenefitsCatalogLabelUrl'\r\n\t| 'CPBenefitsCatalogContentPreview'\r\n\t| 'CPBenefitsCatalogButtonViewMore';\r\n\r\nexport const cpBenefitsCatalogLocs: LocDefs = {\r\n\tCPBenefitsCatalogLabelStatus: {\r\n\t\tdefaultValue: 'Status',\r\n\t\tdescription: 'Label for status',\r\n\t\tdisplayPath: 'Benefits|Program|Field Label|Status',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Status',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogLabelName: {\r\n\t\tdefaultValue: 'Name',\r\n\t\tdescription: 'Label for name',\r\n\t\tdisplayPath: 'Benefits|Program|Field Label|Name',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Name',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogLabelType: {\r\n\t\tdefaultValue: 'Type',\r\n\t\tdescription: 'Label for type',\r\n\t\tdisplayPath: 'Benefits|Program|Field Label|Type',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Type',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogLabelExpireDate: {\r\n\t\tdefaultValue: 'Expire Date',\r\n\t\tdescription: 'Label for expire date',\r\n\t\tdisplayPath: 'Benefits|Program|Field Label|ExpireDate',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.ExpireDate',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogLabelGroup: {\r\n\t\tdefaultValue: 'Group',\r\n\t\tdescription: 'Label for group',\r\n\t\tdisplayPath: 'Benefits|Program|Field Label|Group',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Group',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogLabelUrl: {\r\n\t\tdefaultValue: 'Url',\r\n\t\tdescription: 'Label for url',\r\n\t\tdisplayPath: 'Benefits|Program|Field Label|Url',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Url',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogLabelToken: {\r\n\t\tdefaultValue: 'Token',\r\n\t\tdescription: 'Label for token',\r\n\t\tdisplayPath: 'Benefits|Program|Field Label|Token',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.FieldLabel.Token',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogTitlePage: {\r\n\t\tdefaultValue: 'Benefits',\r\n\t\tdescription: 'Title for benefits page',\r\n\t\tdisplayPath: 'Benefits|Program|Title|Benefits',\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Title.Benefits',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogContentPageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Page description for benefits page',\r\n\t\tdisplayPath: 'Benefits|Program|Title|Page Description',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Content.PageDescription',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\tCPBenefitsCatalogContentInvalidToken: {\r\n\t\tdefaultValue: 'Token is no longer valid',\r\n\t\tdescription: 'Content for invalid token',\r\n\t\tdisplayPath: 'Benefits|Program|Content|Invalid Token',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'CPBenefitDetailLocs',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogContentPreview: {\r\n\t\tdefaultValue: 'Preview',\r\n\t\tdescription: 'Content for preview link',\r\n\t\tdisplayPath: 'Benefits|Program|Content|Url Preview',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Content.UrlPreview',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitsCatalogButtonViewMore: {\r\n\t\tdefaultValue: 'View More',\r\n\t\tdescription: 'Button for view more',\r\n\t\tdisplayPath: 'Benefits|Program|Button|View More',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.Button.ViewMore',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpBenefitsCatalogLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Benefits|Program`;\r\n\r\nexport type CreateLineupLocs =\r\n\t| 'CPCreateLineupButton'\r\n\t| 'CPCreateLineupSuccessNotification'\r\n\t| 'CPCreateLineupFailureNotification';\r\nexport const createLineupLocs: LocDefs = {\r\n\tCPCreateLineupButton: {\r\n\t\tdefaultValue: 'Enable Lineup Opt-In',\r\n\t\tdescription: 'Label for the button to enable creating opt-in (line up)',\r\n\t\tdisplayPath: `${dpRoot}|Button|Enable Opt-In`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tshared: false,\r\n\t\thtmlAllowed: false,\r\n\t},\r\n\tCPCreateLineupSuccessNotification: {\r\n\t\tdefaultValue: 'Line up created successfully',\r\n\t\tdescription: 'Notice shown when line up is successfully created',\r\n\t\tdisplayPath: `${dpRoot}|Notification|Lineup Success`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tshared: false,\r\n\t\thtmlAllowed: false,\r\n\t},\r\n\tCPCreateLineupFailureNotification: {\r\n\t\tdefaultValue: 'Opt-in enabling failed',\r\n\t\tdescription: 'Notice shown when line up creation fails',\r\n\t\tdisplayPath: `${dpRoot}|Notification|Lineup Failure`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.Benefit,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tshared: false,\r\n\t\thtmlAllowed: false,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(createLineupLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPBenefitLineupModalLocs =\r\n\t| 'CPBenefitLineupModalNoticeChangesSaved'\r\n\t| 'CPBenefitLineupModalOptInHasLineup'\r\n\t| 'CPBenefitLineupModalButtonClose'\r\n\t| 'CPBenefitLineupModalButtonOptIn'\r\n\t| 'CPBenefitLineupModalOptInInstructions'\r\n\t| 'CPBenefitLineupModalNoEmailWarning'\r\n\t| 'CPBenefitLineupModalOptInSuccess'\r\n\t| 'CPBenefitLineupModalOptInFailure';\r\n\r\nexport const cpBenefitLineupModalLocs: LocDefs = {\r\n\tCPBenefitLineupModalNoticeChangesSaved: {\r\n\t\tdefaultValue: 'Changes saved',\r\n\t\tdescription: 'Notice for changes saved',\r\n\t\tdisplayPath: `Benefits|Program|Notification Message|Changes Saved`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit/Benefits.Program.NotificationMessage.ChangesSaved',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitLineupModalOptInHasLineup: {\r\n\t\tdefaultValue:\r\n\t\t\t'

Your account has been created at Lineup, you should receive an email shortly.

',\r\n\t\tdescription: 'Content for when the user has already opted in to Lineup',\r\n\t\tdisplayPath: `Benefits|Program|Notification Message|Changes Saved`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Content.AlreadyOptIn',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\tCPBenefitLineupModalButtonClose: {\r\n\t\tdefaultValue: 'Close',\r\n\t\tdescription: 'Button to close the modal',\r\n\t\tdisplayPath: `Benefits|Program|Button|Close`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Button.Close',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitLineupModalButtonOptIn: {\r\n\t\tdefaultValue: 'Opt-In',\r\n\t\tdescription: 'Button to opt in to Lineup',\r\n\t\tdisplayPath: `Benefits|Program|Button|OptIn`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Button.OptIn',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitLineupModalOptInInstructions: {\r\n\t\tdefaultValue:\r\n\t\t\t'

By clicking below, an email will be sent to the following email address. Please verify that the email address is correct. If not, please update your demographics.

',\r\n\t\tdescription: 'Button to opt in to Lineup',\r\n\t\tdisplayPath: `Benefits|Program|Button|OptIn`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Button.OptIn',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\tCPBenefitLineupModalNoEmailWarning: {\r\n\t\tdefaultValue:\r\n\t\t\t'

You need a valid email address in order to create a Lineup account. Please update add an email address in the My Information page under Profile.\t

',\r\n\t\tdescription: 'Warning for when the user does not have an email address',\r\n\t\tdisplayPath: `Benefits|Program|Content|No Email Warning`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Content.NoEmailWarning',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\tCPBenefitLineupModalOptInSuccess: {\r\n\t\tdefaultValue:\r\n\t\t\t'Your account has been created at Lineup, you should receive an email shortly.',\r\n\t\tdescription: 'Success message for when the user opts in to Lineup',\r\n\t\tdisplayPath: `Benefits|Program|Notification Message|OptIn Success`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Notification.OptInSuccess',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBenefitLineupModalOptInFailure: {\r\n\t\tdefaultValue:\r\n\t\t\t'There was an error connecting to Lineup. If the problem persists, please contact customer support.',\r\n\t\tdescription: 'Error message for when the user opts in to Lineup',\r\n\t\tdisplayPath: `Benefits|Program|Notification Message|OptIn Failure`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.BenefitLineup,\r\n\t\tlegacyName: 'Benefit.Lineup/Benefits.Program.Notification.OptInFailure',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpBenefitLineupModalLocs);\r\n","import { cpCertCatalogLocs } from './cert-catalog/cert-catalog.locs';\nimport { cpExamCatalogLocs } from './exam-catalog/exam-catalog.locs';\n\nexport const catalogsModuleLocs = {\n\t...cpCertCatalogLocs,\n\t...cpExamCatalogLocs,\n};\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Catalogs|Credentials';\r\n\r\nexport type CertCatalogLoc = 'CPCertCatalogFilterByGroupLabel';\r\n\r\nexport const cpCertCatalogLocs: LocDefs = {\r\n\tCPCertCatalogFilterByGroupLabel: {\r\n\t\tdefaultValue: 'Filter by Group',\r\n\t\tdisplayPath: `${dpRoot}|Filter by Group Label`,\r\n\t\tdescription: 'Label for filter by group.',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Credential,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpCertCatalogLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Catalogs|Exams';\r\n\r\nexport type ExamCatalogLoc = 'CPExamCatalogFilterByGroupLabel';\r\n\r\nexport const cpExamCatalogLocs: LocDefs = {\r\n\tCPExamCatalogFilterByGroupLabel: {\r\n\t\tdefaultValue: 'Filter by Group',\r\n\t\tdisplayPath: `${dpRoot}|Filter by Group Label`,\r\n\t\tdescription: 'Label for filter by group.',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Exam,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpExamCatalogLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Credentials|Status|';\r\nconst sharedProps = {\r\n htmlAllowed: false,\r\n shared: false,\r\n type: LocType.CandidatePortalString,\r\n feature: HubFeature.Credential,\r\n};\r\n\r\nexport type CertDetailLoc = 'CPCertDetailLabelVerificationId';\r\n\r\nexport const cpCertDetailLocs: LocDefs = {\r\n CPCertDetailLabelVerificationId: {\r\n defaultValue: 'Verification ID',\r\n displayType: 'Label',\r\n description: 'Label for the Verification ID field',\r\n displayPath: `${dpRoot}Verification ID`,\r\n ...sharedProps,\r\n },\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpCertDetailLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Credentials|Status`;\r\n\r\nconst sharedLocProps: { htmlAllowed: boolean; feature: HubFeature; portal: LocPortal } = {\r\n\thtmlAllowed: false,\r\n\tfeature: HubFeature.Credential,\r\n\tportal: 'CP',\r\n};\r\nexport type CPCertStatusPage =\r\n\t| 'CPCertStatusName'\r\n\t| 'CPCertStatusNameAbbreviation'\r\n\t| 'CPCertStatusGroupName'\r\n\t| 'CPCertStatusStatus'\r\n\t| 'CPCertStatusActiveDate'\r\n\t| 'CPCertStatusInactiveDate'\r\n\t| 'CPCertStatusExpireDate'\r\n\t| 'CPCertStatusProgramNumber'\r\n\t| 'CPCertStatusAction'\r\n\t| 'CPCertStatusEmpty'\r\n\t| 'CPCertStatusViewMore'\r\n\t| 'CPCertStatusSnowflakeBadgeId'\r\n\t| 'CPCertStatusFilterByGroupLabel';\r\n\r\nexport const cpCertStatusLocs: LocDefs = {\r\n\tCPCertStatusName: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Name',\r\n\t\tdescription: 'Column heading for the name column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Name`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.Name',\r\n\t},\r\n\tCPCertStatusNameAbbreviation: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Name Abbreviation',\r\n\t\tdescription: 'Column heading for the name abbreviation column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Name Abbreviation`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.NameAbbreviation',\r\n\t},\r\n\tCPCertStatusGroupName: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Group Name',\r\n\t\tdescription: 'Column heading for the name abbreviation column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Group Name`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.GroupName',\r\n\t},\r\n\tCPCertStatusStatus: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Status',\r\n\t\tdescription: 'Column heading for the status column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Status`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.Status',\r\n\t},\r\n\tCPCertStatusActiveDate: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Active date',\r\n\t\tdescription: 'Column heading for the active date column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Active Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.ActiveDate',\r\n\t},\r\n\tCPCertStatusInactiveDate: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Inactive date',\r\n\t\tdescription: 'Column heading for the inactive date column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Inactive Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.InactiveDate',\r\n\t},\r\n\tCPCertStatusExpireDate: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Expire date',\r\n\t\tdescription: 'Column heading for the expire date column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Expire Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.ExpireDate',\r\n\t},\r\n\tCPCertStatusProgramNumber: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Program number',\r\n\t\tdescription: 'Column heading for the program number column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Program number`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Credential/Credentials.Status.FieldLabel.ProgramNumber',\r\n\t},\r\n\tCPCertStatusAction: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Column heading for the action column.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Action`,\r\n\t\tdisplayType: 'Label',\r\n\t},\r\n\tCPCertStatusEmpty: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Never',\r\n\t\tdescription: 'Content shown when expire date never happens',\r\n\t\tdisplayPath: `${dpRoot}|Content|Never`,\r\n\t\tdisplayType: 'Content',\r\n\t},\r\n\tCPCertStatusViewMore: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'View More',\r\n\t\tdescription: 'Button to View More Information',\r\n\t\tdisplayPath: `${dpRoot}|Button|View More`,\r\n\t\tdisplayType: 'Button',\r\n\t\tlegacyName: 'Credential/Credentials.Status.Button.ViewMore',\r\n\t},\r\n\tCPCertStatusSnowflakeBadgeId: {\r\n\t\t...sharedLocProps,\r\n\t\tfeature: HubFeature.SnowflakeDisplayBadgeId,\r\n\t\tdefaultValue: 'Credential ID',\r\n\t\tdescription: 'Column heading for: Credential ID.',\r\n\t\tdisplayPath: `${dpRoot}|Column Heading|Credential ID`,\r\n\t\tdisplayType: 'Label',\r\n\t},\r\n\tCPCertStatusFilterByGroupLabel: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Filter by Group',\r\n\t\tdisplayPath: `${dpRoot}|Filter by Group Label`,\r\n\t\tdescription: 'Label for filter by group.',\r\n\t\tdisplayType: 'Label',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys({ ...cpCertStatusLocs });\r\n","import { cpCertDetailLocs } from './cert-detail/cert-detail.locs';\nimport { cpCertStatusLocs } from './cert-status/cert-status.locs';\nimport { cpAddressConfirmationLocs } from './fulfillment-history/address-confirmation/address-confirmation.locs';\n\nexport const cpCertModuleLocs = {\n\t...cpCertStatusLocs,\n\t...cpCertDetailLocs,\n\t...cpAddressConfirmationLocs,\n};\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Credentials|Fulfillment|Address Confirmation';\r\nconst sharedProps = {\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n\tportal: 'CP' as LocPortal,\r\n\tfeature: HubFeature.Credential,\r\n};\r\n\r\nexport type AddressConfirmationLoc =\r\n\t| 'CPAddressConfirmationTitle'\r\n\t| 'CPAddressConfirmationUpdateButton'\r\n\t| 'CPAddressConfirmationConfirmButton'\r\n\t| 'CPAddressConfirmationConfirmedButton'\r\n\t| 'CPAddressConfirmationCancelButton'\r\n\t| 'CPAddressConfirmationMailingAddressTitle'\r\n\t| 'CPAddressConfirmationLocalizedAddressTitle'\r\n\t| 'CPAddressConfirmationCountryLabel'\r\n\t| 'CPAddressConfirmationAddressLabel'\r\n\t| 'CPAddressConfirmationAddress2Label'\r\n\t| 'CPAddressConfirmationAddress3Label'\r\n\t| 'CPAddressConfirmationCityLabel'\r\n\t| 'CPAddressConfirmationStateLabel'\r\n\t| 'CPAddressConfirmationPostalCodeLabel'\r\n\t| 'CPAddressConfirmationPhoneLabel'\r\n\t| 'CPAddressConfirmationBusinessCheckbox'\r\n\t| 'CPAddressConfirmationSubmitButton'\r\n\t| 'CPAddressConfirmationInvalidCountryError'\r\n\t| 'CPAddressConfirmationInvalidStateError'\r\n\t| 'CPAddressConfirmationPostalCodeUSAError'\r\n\t| 'CPAddressConfirmationPostalCodeCanadaError'\r\n\t| 'CPAddressConfirmationPhoneFormatError'\r\n\t| 'CPAddressConfirmationPhoneZerosError'\r\n\t| 'CPAddressConfirmationRequiredFieldsMissing'\r\n\t| 'CPAddressConfirmationAddressRequiredError'\r\n\t| 'CPAddressConfirmationCityRequiredError'\r\n\t| 'CPAddressConfirmationStateRequiredError'\r\n\t| 'CPAddressConfirmationStateRequiredVueHint'\r\n\t| 'CPAddressConfirmationStateInvalidError'\r\n\t| 'CPAddressConfirmationPostalCodeRequiredError'\r\n\t| 'CPAddressConfirmationPhoneRequiredError'\r\n\t| 'CPAddressConfirmationPhoneUsaCanadaError'\r\n\t| 'CPAddressConfirmationCountryRequiredError'\r\n\t| 'CPAddressConfirmationBusinessCheckboxLabel'\r\n\t| 'CPAddressConfirmationLocalizedAddressTitle'\r\n\t| 'CPAddressConfirmationAddressUpdatedMessage';\r\n\r\nexport const cpAddressConfirmationLocs: LocDefs = {\r\n\tCPAddressConfirmationTitle: {\r\n\t\tdefaultValue: 'Mailing address',\r\n\t\tdisplayType: 'Title',\r\n\t\tdescription: 'Title for the address confirmation section',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tlegacyName:\r\n\t\t\t'Credential.Fulfillment/Credentials.FulfillmentHistory.Title.AddressConfirmation',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationUpdateButton: {\r\n\t\tdefaultValue: 'Update and Confirm Address',\r\n\t\tdisplayType: 'Button',\r\n\t\tdescription: 'Button text to update the address',\r\n\t\tdisplayPath: `${dpRoot}|Update Button`,\r\n\t\tlegacyName: 'Credential.Fulfillment/Credentials.FulfillmentHistory.Button.UpdateAddress',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationConfirmButton: {\r\n\t\tdefaultValue: 'Confirm address',\r\n\t\tdisplayType: 'Button',\r\n\t\tdescription: 'Button text to confirm the address',\r\n\t\tdisplayPath: `${dpRoot}|Confirm Button`,\r\n\t\tlegacyName: 'Credential.Fulfillment/Credentials.FulfillmentHistory.Button.ConfirmAddress',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationConfirmedButton: {\r\n\t\tdefaultValue: 'Confirmed',\r\n\t\tdisplayType: 'Button',\r\n\t\tdescription: 'Button text when the address is confirmed',\r\n\t\tdisplayPath: `${dpRoot}|Confirmed Button`,\r\n\t\tlegacyName: 'Credential.Fulfillment/Credentials.FulfillmentHistory.Button.ConfirmAddress2',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationCancelButton: {\r\n\t\tdefaultValue: 'Cancel',\r\n\t\tdisplayType: 'Button',\r\n\t\tdescription: 'Button text to cancel the address update',\r\n\t\tdisplayPath: `${dpRoot}|Cancel Button`,\r\n\t\tlegacyName: 'Credential.Fulfillment/Credentials.FulfillmentHistory.Button.Cancel',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationMailingAddressTitle: {\r\n\t\tdefaultValue: 'Mailing Address',\r\n\t\tdisplayType: 'Title',\r\n\t\tdescription: 'Title for the mailing address form section',\r\n\t\tdisplayPath: `${dpRoot}|Mailing Address Title`,\r\n\t\tlegacyName: 'Credential.Fulfillment/Credentials.FulfillmentHistory.Title.MailingAddress',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationLocalizedAddressTitle: {\r\n\t\tdefaultValue: 'Localized Address',\r\n\t\tdisplayType: 'Title',\r\n\t\tdescription: 'Title for the localized address form section',\r\n\t\tdisplayPath: `${dpRoot}|Localized Address Title`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.Addresses.Localized/Credentials.FulfillmentHistory.Title.LocalizedAddress',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationCountryLabel: {\r\n\t\tdefaultValue: 'Country',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the country field',\r\n\t\tdisplayPath: `${dpRoot}|Country Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.Country',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationAddressLabel: {\r\n\t\tdefaultValue: 'Address',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the address field',\r\n\t\tdisplayPath: `${dpRoot}|Address Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.Address',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationAddress2Label: {\r\n\t\tdefaultValue: 'Address (cont.)',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the second address field',\r\n\t\tdisplayPath: `${dpRoot}|Address 2 Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.Address2',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationAddress3Label: {\r\n\t\tdefaultValue: 'Address (cont.)',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the third address field',\r\n\t\tdisplayPath: `${dpRoot}|Address 3 Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.Address3',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationCityLabel: {\r\n\t\tdefaultValue: 'City',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the city field',\r\n\t\tdisplayPath: `${dpRoot}|City Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.City',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationStateLabel: {\r\n\t\tdefaultValue: 'State/Province',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the state/province field',\r\n\t\tdisplayPath: `${dpRoot}|State Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.State',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPostalCodeLabel: {\r\n\t\tdefaultValue: 'Zip/Postal Code',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the postal code field',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.PostalCode',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPhoneLabel: {\r\n\t\tdefaultValue: 'Phone',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the phone field',\r\n\t\tdisplayPath: `${dpRoot}|Phone Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.Phone',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPhoneRequiredError: {\r\n\t\tdefaultValue: 'Phone is required',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for required phone field',\r\n\t\tdisplayPath: `${dpRoot}|Phone Required Error`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneRequired',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationCountryRequiredError: {\r\n\t\tdefaultValue: 'Country is required',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for required countryfield',\r\n\t\tdisplayPath: `${dpRoot}|Country Required Error`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldError.CountryRequired',\r\n\t\t...sharedProps,\r\n\t},\r\n\r\n\tCPAddressConfirmationPhoneUsaCanadaError: {\r\n\t\tdefaultValue: 'Phone number must have 10 numbers',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for invalid USA/Canada phone number format',\r\n\t\tdisplayPath: `${dpRoot}|Phone USA/Canada Error`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneUsa',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPhoneZerosError: {\r\n\t\tdefaultValue: 'Phone number must not be all zeros',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for phone number with all zeros',\r\n\t\tdisplayPath: `${dpRoot}|Phone Zeros Error`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneZeros',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationBusinessCheckbox: {\r\n\t\tdefaultValue: 'This is a Business Address',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the business address checkbox',\r\n\t\tdisplayPath: `${dpRoot}|Business Address Checkbox`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.Business',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationSubmitButton: {\r\n\t\tdefaultValue: 'Update and Confirm Addresses',\r\n\t\tdisplayType: 'Button',\r\n\t\tdescription: 'Button text to submit the address form',\r\n\t\tdisplayPath: `${dpRoot}|Submit Button`,\r\n\t\tlegacyName: 'Credential.Fulfillment/Credentials.FulfillmentHistory.Button.UpdateAddress',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationAddressRequiredError: {\r\n\t\tdefaultValue: 'Address is required',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for required fields',\r\n\t\tdisplayPath: `${dpRoot}|Required Error`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldError.AddressRequired',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationStateRequiredError: {\r\n\t\tdefaultValue: 'State/Province is required',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for required state/province field',\r\n\t\tdisplayPath: `${dpRoot}|State Required Error`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldError.StateRequired',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationStateRequiredVueHint: {\r\n\t\tdefaultValue: 'State/Province is required. If your state is not listed, please type N/A',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error with Vue specific hint for state required.',\r\n\t\tdisplayPath: `${dpRoot}|State Required Vue Hint`,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\r\n\tCPAddressConfirmationStateInvalidError: {\r\n\t\tdefaultValue: 'Invalid state/province',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for invalid state/province selection',\r\n\t\tdisplayPath: `${dpRoot}|Invalid State Error`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldError.StateInvalid',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationInvalidCountryError: {\r\n\t\tdefaultValue: 'Invalid country',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for invalid country selection',\r\n\t\tdisplayPath: `${dpRoot}|Invalid Country Error`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldError.InvalidCountry',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationInvalidStateError: {\r\n\t\tdefaultValue: 'Invalid state/province',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for invalid state/province selection',\r\n\t\tdisplayPath: `${dpRoot}|Invalid State Error`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldError.StateInvalid',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPostalCodeRequiredError: {\r\n\t\tdefaultValue: 'Zip/Postal Code is required',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for required postal code field',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Required Error`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalRequired',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPostalCodeUSAError: {\r\n\t\tdefaultValue:\r\n\t\t\t'Zip/Postal Code must follow one of the two following formats: #####, #####-####',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for invalid USA postal code format',\r\n\t\tdisplayPath: `${dpRoot}|USA Postal Code Error`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalUsa',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPostalCodeCanadaError: {\r\n\t\tdefaultValue: 'Zip/Postal Code must follow the following format: A#A#A#',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for invalid Canada postal code format',\r\n\t\tdisplayPath: `${dpRoot}|Canada Postal Code Error`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalCanada',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationPhoneFormatError: {\r\n\t\tdefaultValue: 'Phone number must have 10 numbers',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for invalid phone number format',\r\n\t\tdisplayPath: `${dpRoot}|Phone Format Error`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneUsa',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationRequiredFieldsMissing: {\r\n\t\tdefaultValue: 'Required fields in the address are missing. Please update your address.',\r\n\t\tdisplayType: 'Notification',\r\n\t\tdescription: 'Error message for phone number with all zeros',\r\n\t\tdisplayPath: `${dpRoot}|Phone Zeros Error`,\r\n\t\tlegacyName:\r\n\t\t\t'Credential.Fulfillment/Credentials.FulfillmentHistory.Notification.RequiredFieldsMissing',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationCityRequiredError: {\r\n\t\tdefaultValue: 'City is required',\r\n\t\tdisplayType: 'Error',\r\n\t\tdescription: 'Error message for required city field',\r\n\t\tdisplayPath: `${dpRoot}|City Required Error`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldError.CityRequired',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationBusinessCheckboxLabel: {\r\n\t\tdefaultValue: 'This is a Business Address',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the business address checkbox',\r\n\t\tdisplayPath: `${dpRoot}|Business Address Checkbox Label`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.FieldLabel.Business',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPAddressConfirmationAddressUpdatedMessage: {\r\n\t\tdefaultValue: 'Changes saved',\r\n\t\tdisplayType: 'Notification',\r\n\t\tdescription: 'Notification for successful address update',\r\n\t\tdisplayPath: `${dpRoot}|Address Updated Notification`,\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Profile.Addresses.NotificationMessage.Success',\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpAddressConfirmationLocs);\r\nexport type CpAddressConfirmationLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'ECommerce|Order History';\r\nconst sharedProps = {\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n\tportal: 'CP' as LocPortal,\r\n\tfeature: HubFeature.EcommerceShowTransactionHistory,\r\n};\r\n\r\nexport type EcommerceHistoryLoc =\r\n\t| 'CPECommerceHistoryTitle'\r\n\t| 'CPECommerceHistoryPageDescription'\r\n\t| 'CPECommerceHistoryStatusLabel'\r\n\t| 'CPECommerceHistoryIdLabel'\r\n\t| 'CPECommerceHistoryDatePurchasedLabel'\r\n\t| 'CPECommerceHistoryNameLabel'\r\n\t| 'CPECommerceHistoryCodeLabel'\r\n\t| 'CPECommerceHistoryTypeLabel'\r\n\t| 'CPECommerceHistoryPriceLabel';\r\n\r\nexport const cpEcommerceHistoryLocs: LocDefs = {\r\n\tCPECommerceHistoryTitle: {\r\n\t\tdefaultValue: 'Purchase History',\r\n\t\tdisplayType: 'Title',\r\n\t\tdescription: 'Title for the Order History page',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryPageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdisplayType: 'Content',\r\n\t\tdescription: 'Page description for the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryStatusLabel: {\r\n\t\tdefaultValue: 'Status',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the status field in the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|Status Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryIdLabel: {\r\n\t\tdefaultValue: 'ID',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the ID field in the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|ID Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryDatePurchasedLabel: {\r\n\t\tdefaultValue: 'Date Purchased',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the date purchased field in the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|Date Purchased Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryNameLabel: {\r\n\t\tdefaultValue: 'Name',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the name field in the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|Name Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryCodeLabel: {\r\n\t\tdefaultValue: 'Code',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the code field in the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|Code Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryTypeLabel: {\r\n\t\tdefaultValue: 'Type',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the type field in the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|Type Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceHistoryPriceLabel: {\r\n\t\tdefaultValue: 'Price',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the price field in the Order History page.',\r\n\t\tdisplayPath: `${dpRoot}|Price Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const ecommerceHistoryLocKeys = MapLocKeys(cpEcommerceHistoryLocs);\r\nexport type CpEcommerceHistoryLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'ECommerce|Store';\r\nconst sharedProps = {\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n\tportal: 'CP' as LocPortal,\r\n\tfeature: HubFeature.Ecommerce,\r\n};\r\n\r\nexport type EcommerceStoreLoc =\r\n\t| 'CPECommerceStoreTitle'\r\n\t| 'CPECommerceStorePageDescription'\r\n\t| 'CPECommerceStoreNameLabel'\r\n\t| 'CPECommerceStoreCodeLabel'\r\n\t| 'CPECommerceStoreTypeLabel'\r\n\t| 'CPECommerceStorePriceLabel'\r\n\t| 'CPECommerceStorePurchaseButton';\r\n\r\nexport const cpEcommerceStoreLocs: LocDefs = {\r\n\tCPECommerceStoreTitle: {\r\n\t\tdefaultValue: 'Store',\r\n\t\tdisplayType: 'Title',\r\n\t\tdescription: 'Title for the store page',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceStorePageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdisplayType: 'Content',\r\n\t\tdescription: 'Page description for the store page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceStoreNameLabel: {\r\n\t\tdefaultValue: 'Name',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the name field in the store page.',\r\n\t\tdisplayPath: `${dpRoot}|Name Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceStoreCodeLabel: {\r\n\t\tdefaultValue: 'Code',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the code field in the store page.',\r\n\t\tdisplayPath: `${dpRoot}|Code Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceStoreTypeLabel: {\r\n\t\tdefaultValue: 'Type',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the type field in the store page.',\r\n\t\tdisplayPath: `${dpRoot}|Type Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceStorePriceLabel: {\r\n\t\tdefaultValue: 'Price',\r\n\t\tdisplayType: 'Label',\r\n\t\tdescription: 'Label for the price field in the store page.',\r\n\t\tdisplayPath: `${dpRoot}|Price Label`,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPECommerceStorePurchaseButton: {\r\n\t\tdefaultValue: 'Purchase',\r\n\t\tdisplayType: 'Button',\r\n\t\tdescription: 'Button for the purchase action in the store page.',\r\n\t\tdisplayPath: `${dpRoot}|Purchase Button`,\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const ecommerceStoreLocKeys = MapLocKeys(cpEcommerceStoreLocs);\r\nexport type CpEcommerceStoreLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'History|Continuing Education|';\r\n\r\nexport type CreqLoc =\r\n\t| 'CPContinuingEducationUnderReviewContent'\r\n\t| 'CPContinuingEducationInvalidContent'\r\n\t| 'CPContinuingEducationInvalidLabel'\r\n\t| 'CPContinuingEducationValidContent';\r\n\r\nexport const cpCreqLocs: LocDefs = {\r\n\tCPContinuingEducationUnderReviewContent: {\r\n\t\tdefaultValue: 'Under Review',\r\n\t\tdescription: 'Content displayed when a Continuing Education requirement is under review.',\r\n\t\tdisplayPath: `${dpRoot}Under Review Content`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPContinuingEducationInvalidContent: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdescription: 'Content displayed when a Continuing Education requirement is invalid.',\r\n\t\tdisplayPath: `${dpRoot}Invalid Content`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPContinuingEducationValidContent: {\r\n\t\tdefaultValue: 'Valid',\r\n\t\tdescription: 'Content displayed when a Continuing Education requirement is valid.',\r\n\t\tdisplayPath: `${dpRoot}Valid Content`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPContinuingEducationInvalidLabel: {\r\n\t\tdefaultValue: 'Invalid',\r\n\t\tdescription: 'Label for Continuing Education Invalid column.',\r\n\t\tdisplayPath: `${dpRoot}Invalid Label`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.CredentialContinuingEducation,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpCreqLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'History|Exams';\r\n\r\nexport type ExamsLoc =\r\n\t| 'CPExamsScaledScoreLabel'\r\n\t| 'CPExamsAlteredGradeContent'\r\n\t| 'CPExamsFilterByGroupLabel';\r\n\r\nexport const cpExamsLocs: LocDefs = {\r\n\tCPExamsScaledScoreLabel: {\r\n\t\tdefaultValue: 'Scaled Score',\r\n\t\tdescription: 'Label for scaled score.',\r\n\t\tdisplayPath: `${dpRoot}|Scaled Score`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Exam,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPExamsAlteredGradeContent: {\r\n\t\tdefaultValue: 'Completed',\r\n\t\tdisplayPath: `${dpRoot}|Altered grade`,\r\n\t\tdescription: `System value for altered grade`,\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tfeature: HubFeature.Exam,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'Exam/System.AlteredGrade',\r\n\t},\r\n\tCPExamsFilterByGroupLabel: {\r\n\t\tdefaultValue: 'Filter by Group',\r\n\t\tdisplayPath: `${dpRoot}|Filter by Group Label`,\r\n\t\tdescription: 'Label for filter by group.',\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.Exam,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpExamsLocs);\r\n","import { cpExamGradeLabelEnumLocs } from 'libs/core/localization/src/data/enums/exam-grade-label.locs';\r\nimport { cpExamStateEnumLocs } from 'libs/core/localization/src/data/enums/exam-state.locs';\r\nimport { cpCreqLocs } from './components/creq-data-manager/creq-locs';\r\nimport { cpExamsLocs } from './components/exams/exams.locs';\r\n\r\nexport const cpHistoryModuleLocs = {\r\n\t...cpExamsLocs,\r\n\t...cpExamGradeLabelEnumLocs,\r\n\t...cpExamStateEnumLocs,\r\n\t...cpCreqLocs,\r\n};\r\n","import { cpNewsArticlesLocs } from './news-articles/news-articles.locs';\n\nexport const homeModuleLocs = {\n\t...cpNewsArticlesLocs,\n};\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Home|News Articles|';\r\nconst sharedProps: Pick = {\r\n\tfeature: HubFeature.CandidateAccess,\r\n\tportal: 'CP',\r\n\tshared: false,\r\n\thtmlAllowed: false,\r\n};\r\n\r\nexport type CPNewsArticlesLocNames = 'CPNewsArticlesDate' | 'CPNewsArticlesHeadline';\r\n\r\nexport const cpNewsArticlesLocs: LocDefs = {\r\n\tCPNewsArticlesDate: {\r\n\t\tdefaultValue: 'Date',\r\n\t\tdescription: 'The text for the sort by date on the news article page.',\r\n\t\tdisplayPath: `${dpRoot}Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPNewsArticlesHeadline: {\r\n\t\tdefaultValue: 'Headline',\r\n\t\tdescription: 'The text for the sort by headline on the news article page.',\r\n\t\tdisplayPath: `${dpRoot}Headline`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpNewsArticlesLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\nimport { loginDPRoot } from '../../login-meta';\r\n\r\nconst dpRoot = `${loginDPRoot}|Forgot Password`;\r\n\r\nexport type ForgotPasswordLoc =\r\n\t| 'CPForgotPasswordMethod'\r\n\t| 'CPLoginEmailField'\r\n\t| 'CPLoginUsernameField'\r\n\t| 'CPLoginUsernameError'\r\n\t| 'CPLoginEmailRequired'\r\n\t| 'CPForgotPasswordSubmit'\r\n\t| 'CPForgotPasswordCancel'\r\n\t| 'CPForgotPasswordRequestConfirmation'\r\n\t| 'CPForgotPasswordRequestConfirmationFailure';\r\n\r\nexport const forgotPasswordLocs: LocDefs = {\r\n\tCPForgotPasswordMethod: {\r\n\t\tdefaultValue: 'Reset password using',\r\n\t\tdescription: 'Label for the dropdown to select how the candidate would like to reset password',\r\n\t\tdisplayPath: `${dpRoot}|Method`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.CandidateAccessLoginEmail,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPLoginEmailField: {\r\n\t\tdefaultValue: 'Email',\r\n\t\tdescription: 'Label for the email field',\r\n\t\tdisplayPath: `${dpRoot}|Email Field`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.CandidateAccessLoginEmail,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPLoginUsernameField: {\r\n\t\tdefaultValue: 'Username',\r\n\t\tdescription: 'Label for the username field',\r\n\t\tdisplayPath: `${dpRoot}|Username Field`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.CandidateAccessLogin,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPLoginUsernameError: {\r\n\t\tdefaultValue: 'Please enter your username',\r\n\t\tdescription: 'Error saying that the username is required.',\r\n\t\tdisplayPath: `${dpRoot}|Username Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.CandidateAccessLogin,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPLoginEmailRequired: {\r\n\t\tdefaultValue: 'Please enter your email',\r\n\t\tdescription: 'Error message if email field is empty',\r\n\t\tdisplayPath: `${dpRoot}|Email Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.CandidateAccessLoginEmail,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPForgotPasswordSubmit: {\r\n\t\tdefaultValue: 'Submit',\r\n\t\tdescription: 'The submit button text for the forgot password feature on the login page.',\r\n\t\tdisplayPath: `${dpRoot}|Submit`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessLogin,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPForgotPasswordCancel: {\r\n\t\tdefaultValue: 'Cancel',\r\n\t\tdescription: 'The cancel button text for the forgot password feature on the login page.',\r\n\t\tdisplayPath: `${dpRoot}|Cancel`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessLogin,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPForgotPasswordRequestConfirmation: {\r\n\t\tdefaultValue:\r\n\t\t\t'If the information entered is valid, an email will be sent to your email address which contains information that will allow you to log into the system. If the email does not arrive within 2 hours please check your spam folder.',\r\n\t\tdescription:\r\n\t\t\t'The confirmation text for when a password reset was successfully requested when using the forgot password feature on the login page.',\r\n\t\tdisplayPath: `${dpRoot}|Request Confirmation`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessLogin,\r\n\t\thtmlAllowed: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPForgotPasswordRequestConfirmationFailure: {\r\n\t\tdefaultValue:\r\n\t\t\t'If the information entered is valid, an email will be sent to your email address which contains information thatIf the information entered is valid, an email will be sent to your email address which contains information that will allow you to log into the system. If the email does not arrive within 2 hours please check your spam folder.',\r\n\t\tdescription:\r\n\t\t\t'Contents of the confirmation message shown to candidates whose forgot password request does not succeed.',\r\n\t\tdisplayPath: `${dpRoot}|Failure`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessLogin,\r\n\t\thtmlAllowed: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(forgotPasswordLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Login';\r\n\r\nconst sharedProps = {\r\n\tportal: 'CP' as LocPortal,\r\n\tfeature: HubFeature.CandidateAccessLogin,\r\n};\r\n\r\nexport type LoginLoc =\r\n\t| 'CPLoginNewCandidateRegister'\r\n\t| 'CPLoginMethodLabel'\r\n\t| 'CPLoginEmailLabel'\r\n\t| 'CPLoginUsernameLabel'\r\n\t| 'CPLoginUsernameOrEmailLabel'\r\n\t| 'CPLoginUsernameFieldError'\r\n\t| 'CPLoginEmailRequiredError'\r\n\t| 'CPLoginEmailInvalidError'\r\n\t| 'CPLoginUsernameorEmailRequiredError'\r\n\t| 'CPLoginPasswordLabel'\r\n\t| 'CPLoginPasswordFieldError'\r\n\t| 'CPLoginSubmitButton'\r\n\t| 'CPLoginForgotPasswordButton'\r\n\t| 'CPLoginRegisterButton'\r\n\t| 'CPLoginCustomMessage';\r\n\r\nexport const loginLocs: LocDefs = {\r\n\tCPLoginNewCandidateRegister: {\r\n\t\tdefaultValue: 'New Candidate Register',\r\n\t\tdescription: 'Link to the registration page for new candidates',\r\n\t\tdisplayPath: `${dpRoot}|New Candidate Register`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessLoginSelfRegistration,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPLoginMethodLabel: {\r\n\t\tdefaultValue: 'Log in using',\r\n\t\tdescription: 'Label for the login method selection',\r\n\t\tdisplayPath: `${dpRoot}|Method Selection`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.CandidateAccessLoginEmail,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tlegacyName: 'CandidateAccess.Login.Email/_View.Login.FieldLabel.Method',\r\n\t},\r\n\tCPLoginEmailLabel: {\r\n\t\tdefaultValue: 'Email',\r\n\t\tdescription: 'Email field label',\r\n\t\tdisplayPath: `${dpRoot}|Email`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.CandidateAccessLoginEmail,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tlegacyName: 'CandidateAccess.Login.Email/_View.Login.FieldLabel.Email',\r\n\t},\r\n\tCPLoginUsernameLabel: {\r\n\t\tdefaultValue: 'Username',\r\n\t\tdescription: 'Label for the username input.',\r\n\t\tdisplayPath: `${dpRoot}|Username`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'CandidateAccess.Login/_View.Login.FieldLabel.Username',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginUsernameOrEmailLabel: {\r\n\t\tdefaultValue: 'Username/Email',\r\n\t\tdescription: 'Label for the username input.',\r\n\t\tdisplayPath: `${dpRoot}|Username or Email`,\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessLoginUsernameOrEmail,\r\n\t},\r\n\tCPLoginUsernameorEmailRequiredError: {\r\n\t\tdefaultValue: 'Please enter your username/email',\r\n\t\tdescription: 'Error saying that the username/email is required.',\r\n\t\tdisplayPath: `${dpRoot}|Username/Email required Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessLoginUsernameOrEmail,\r\n\t},\r\n\tCPLoginUsernameFieldError: {\r\n\t\tdefaultValue: 'Please enter your username',\r\n\t\tdescription: 'Error saying that the username is required.',\r\n\t\tdisplayPath: `${dpRoot}|Username Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\tlegacyName: 'CandidateAccess.Login/_View.Login.FieldError.Username',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginEmailRequiredError: {\r\n\t\tdefaultValue: 'Please enter your email',\r\n\t\tdescription: 'Error message if email field is empty',\r\n\t\tdisplayPath: `${dpRoot}|Email Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\tlegacyName: 'CandidateAccess.Login.Email/_View.Login.FieldError.EmailRequired',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginEmailInvalidError: {\r\n\t\tdefaultValue: 'Please use a valid email address',\r\n\t\tdescription: 'Error message if the email address is invalid',\r\n\t\tdisplayPath: `${dpRoot}|Email Invalid`,\r\n\t\tdisplayType: 'Error',\r\n\t\tlegacyName: 'CandidateAccess.Login.Email/_View.Login.FieldError.EmailInvalid',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginPasswordLabel: {\r\n\t\tdefaultValue: 'Password',\r\n\t\tdescription: 'Label for the password input.',\r\n\t\tdisplayPath: `${dpRoot}|Password`,\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'CandidateAccess.Login/_View.Login.FieldLabel.Password',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginPasswordFieldError: {\r\n\t\tdefaultValue: 'Please enter your password',\r\n\t\tdescription: 'Error saying that the password is required.',\r\n\t\tdisplayPath: `${dpRoot}|Password Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\tlegacyName: 'CandidateAccess.Login/_View.Login.FieldError.Password',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginSubmitButton: {\r\n\t\tdefaultValue: 'Log In',\r\n\t\tdescription: 'Log in button.',\r\n\t\tdisplayPath: `${dpRoot}|Submit`,\r\n\t\tdisplayType: 'Button',\r\n\t\tlegacyName: 'CandidateAccess.Login/_View.Login.Button.Submit',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginForgotPasswordButton: {\r\n\t\tdefaultValue: 'Forgot password?',\r\n\t\tdescription: 'Forgot password button.',\r\n\t\tdisplayPath: `${dpRoot}|Forgot Password`,\r\n\t\tdisplayType: 'Button',\r\n\t\tlegacyName: 'CandidateAccess.Login/_View.Login.Button.ForgotPassword',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginRegisterButton: {\r\n\t\tdefaultValue: 'Never logged in before?',\r\n\t\tdescription: 'Button to take candidates to the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Never Logged In`,\r\n\t\tdisplayType: 'Button',\r\n\t\tlegacyName: 'CandidateAccess.Login/_View.Login.Button.Register',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPLoginCustomMessage: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Custom message for login page',\r\n\t\tdisplayPath: `${dpRoot}|Custom Message`,\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: true,\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(loginLocs);\r\n","import { forgotPasswordLocs } from \"./components/forgot-password/forgot-password.locs\";\r\nimport { loginLocs } from \"./components/login/login.locs\";\r\n\r\nexport const cpLoginModuleLocs = {\r\n ...forgotPasswordLocs,\r\n ...loginLocs,\r\n}\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Other Achievements|Add Other Achievements`;\r\n\r\nconst sharedLocProps: { htmlAllowed: boolean; feature: HubFeature; portal: LocPortal; shared: boolean } = {\r\n\thtmlAllowed: false,\r\n\tfeature: HubFeature.CandidateAccessLoginEmcOtherAchievements,\r\n\tportal: 'CP',\r\n\tshared: false,\r\n};\r\nexport type CPOtherAchievementsAddPage = 'CPOtherAchievementsAddSectionTitle';\r\n\r\nexport const cpOtherAchievementAddLocs: LocDefs = {\r\n\tCPOtherAchievementsAddSectionTitle: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Add Industry Certification',\r\n\t\tdescription: 'Title for the other achievements add section.',\r\n\t\tdisplayPath: `${dpRoot}|Page section Title`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpOtherAchievementAddLocs);\r\nexport type CPOtherAchievementsAddLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Other Achievements|Edit Other Achievements|`;\r\n\r\nconst sharedLocProps: { htmlAllowed: boolean; feature: HubFeature; portal: LocPortal; shared: boolean } = {\r\n\thtmlAllowed: false,\r\n\tfeature: HubFeature.CandidateAccessLoginEmcOtherAchievements,\r\n\tportal: 'CP',\r\n\tshared: false,\r\n};\r\nexport type CPOtherAchievementsEditPage = 'CPOtherAchievementsEditSectionTitle';\r\n\r\nexport const cpOtherAchievementEditLocs: LocDefs = {\r\n\tCPOtherAchievementsEditSectionTitle: {\r\n\t\t...sharedLocProps,\r\n\t\tdefaultValue: 'Edit Industry Certification',\r\n\t\tdescription: 'Title for the other achievements add section.',\r\n\t\tdisplayPath: `${dpRoot}Page section Title`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpOtherAchievementEditLocs);\r\nexport type CPOtherAchievementsEditLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap } from '@cm/core/localization';\r\n\r\nconst pathStart = 'Candidate|Program History|Other Achievements Form';\r\nconst sharedProperties: Pick = {\r\n\tshared: false,\r\n\thtmlAllowed: false,\r\n\tfeature: HubFeature.CandidateAccessLoginEmcOtherAchievements,\r\n\tportal: 'CP',\r\n};\r\nconst fieldLabelDescriptionStart = 'Label for form field: ';\r\n\r\nconst AGREEMENT_CONTENT = `

\r\n\t\t\tAs an employee of Dell Technologies, I agree to abide by all published Dell Technologies rules and\r\n\t\t\tregulations, including those regarding non-disclosure of Dell Technologies private information. I also agree\r\n\t\t\tthat if requested, I will supply proof of credentials I am entering. I give Dell Technologies permission to\r\n\t\t\tshare my industry credentials with Dell Technologies Management.\r\n\t\t

\r\n\t\t

\r\n\t\t\tNote: This website tracks internal certifications so that your skill profile can be complete and accurate.\r\n\t\t\tInformation provided on industry certifications achieved will be used by Dell Technologies management to\r\n\t\t\tassess overall field skill sets and qualifications. List only certifications received and current (i.e. do\r\n\t\t\tnot include any certifications that have expired). Self reported certifications may be audited to verify\r\n\t\t\taccuracy and validity\r\n\t\t

`;\r\n\r\ntype LocNameStart = 'CPOtherAchievementForm';\r\nexport type CPOtherAchievementFormLocNames =\r\n\t| `${LocNameStart}LabelVendor`\r\n\t| `${LocNameStart}LabelVerificationUrl`\r\n\t| `${LocNameStart}ErrorVerificationUrl`\r\n\t| `${LocNameStart}ErrorVendorRequired`\r\n\t| `${LocNameStart}LabelName`\r\n\t| `${LocNameStart}ErrorNameRequired`\r\n\t| `${LocNameStart}LabelExpirationDate`\r\n\t| `${LocNameStart}LabelDateTaken`\r\n\t| `${LocNameStart}LabelActiveDate`\r\n\t| `${LocNameStart}LabelExpireDate`\r\n\t| `${LocNameStart}ErrorActiveDate`\r\n\t| `${LocNameStart}ErrorDateTaken`\r\n\t| `${LocNameStart}LabelExternalId`\r\n\t| `${LocNameStart}ErrorExternalId`\r\n\t| `${LocNameStart}ContentExpireHint`\r\n\t| `${LocNameStart}ContentUrlHint`\r\n\t| `${LocNameStart}ContentAgreement`\r\n\t| `${LocNameStart}ButtonCancel`\r\n\t| `${LocNameStart}ButtonAddCert`\r\n\t| `${LocNameStart}ButtonUpdateCert`\r\n\t| `${LocNameStart}NotificationSuccess`\r\n\t| `${LocNameStart}ErrorActiveDateMax`\r\n\t| `${LocNameStart}ErrorDateComparison`;\r\n\r\nexport const cpOtherAchievementForm: LocDefs = {\r\n\tCPOtherAchievementFormLabelVendor: {\r\n\t\tdefaultValue: 'Vendor/Sponsor',\r\n\t\tdescription: `${fieldLabelDescriptionStart}Vendor/Sponsor.`,\r\n\t\tdisplayPath: `${pathStart}|Vendor`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorVendorRequired: {\r\n\t\tdefaultValue: 'Vendor/Sponsor is required',\r\n\t\tdescription: `Error shown when Vendor/Sponsor is not selected.`,\r\n\t\tdisplayPath: `${pathStart}|Vendor/Sponsor required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormLabelName: {\r\n\t\tdefaultValue: 'Industry Certification Name',\r\n\t\tdescription: `${fieldLabelDescriptionStart}Name.`,\r\n\t\tdisplayPath: `${pathStart}|Name`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorNameRequired: {\r\n\t\tdefaultValue: 'Industry certification name is required',\r\n\t\tdescription: `Error shown when industry certification name is not selected.`,\r\n\t\tdisplayPath: `${pathStart}|Industry certification name required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormLabelExpirationDate: {\r\n\t\tdefaultValue: 'Expiration Date',\r\n\t\tdescription: `${fieldLabelDescriptionStart}Expiration date.`,\r\n\t\tdisplayPath: `${pathStart}|Name`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormLabelDateTaken: {\r\n\t\tdefaultValue: 'Date Taken',\r\n\t\tdescription: `${fieldLabelDescriptionStart}Date taken.`,\r\n\t\tdisplayPath: `${pathStart}|Date taken`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormLabelExternalId: {\r\n\t\tdefaultValue: 'Certification ID',\r\n\t\tdescription: `${fieldLabelDescriptionStart}External Id.`,\r\n\t\tdisplayPath: `${pathStart}|External Id`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorExternalId: {\r\n\t\tdefaultValue: 'Certification ID is required',\r\n\t\tdescription: `Error shown when external id is not provided.`,\r\n\t\tdisplayPath: `${pathStart}|External Id Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormLabelActiveDate: {\r\n\t\tdefaultValue: 'Date Achieved',\r\n\t\tdescription: `${fieldLabelDescriptionStart}Date achieved.`,\r\n\t\tdisplayPath: `${pathStart}|Achieved Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorActiveDate: {\r\n\t\tdefaultValue: 'Achievement date is required',\r\n\t\tdescription: `Error shown when industry certification name is not selected.`,\r\n\t\tdisplayPath: `${pathStart}|Industry certification name required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorActiveDateMax: {\r\n\t\tdefaultValue: 'Achievement date cannot be in the future',\r\n\t\tdescription: `Error shown when achievement date is in the future.`,\r\n\t\tdisplayPath: `${pathStart}|Achievement Date Future`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorDateTaken: {\r\n\t\tdefaultValue: 'Date taken is required',\r\n\t\tdescription: `Error shown when taken date is not selected.`,\r\n\t\tdisplayPath: `${pathStart}|Date Taken Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormLabelExpireDate: {\r\n\t\tdefaultValue: 'Expiration Date',\r\n\t\tdescription: `${fieldLabelDescriptionStart}Expiration Date.`,\r\n\t\tdisplayPath: `${pathStart}|Expiration Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormContentExpireHint: {\r\n\t\tdefaultValue: 'Leave this blank if the certification does not expire',\r\n\t\tdescription: 'Hint for expiration date field.',\r\n\t\tdisplayPath: `${pathStart}|Expiration Date Hint`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormContentUrlHint: {\r\n\t\tdefaultValue:\r\n\t\t\t'Link to where this can be validated. Example: https://www.youracclaim.com/badges/1234567890',\r\n\t\tdescription: 'Hint for expiration date field.',\r\n\t\tdisplayPath: `${pathStart}|Url Hint`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormLabelVerificationUrl: {\r\n\t\tdefaultValue: 'Verification Url',\r\n\t\tdescription: `${fieldLabelDescriptionStart}Verification Url.`,\r\n\t\tdisplayPath: `${pathStart}|Verification Url`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorVerificationUrl: {\r\n\t\tdefaultValue: 'Verification Url is required',\r\n\t\tdescription: `Error shown when verification url is not provided.`,\r\n\t\tdisplayPath: `${pathStart}|Verification Url Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormContentAgreement: {\r\n\t\tdefaultValue: AGREEMENT_CONTENT,\r\n\t\tdescription: 'Agreement content by Dell.',\r\n\t\tdisplayPath: `${pathStart}|AgreementContent`,\r\n\t\tdisplayType: 'Content',\r\n\t\tshared: false,\r\n\t\thtmlAllowed: true,\r\n\t\tfeature: HubFeature.CandidateAccessLoginEmcOtherAchievements,\r\n\t\tportal: 'SP',\r\n\t},\r\n\tCPOtherAchievementFormButtonCancel: {\r\n\t\tdefaultValue: 'Cancel',\r\n\t\tdescription: `Button to cancel the form.`,\r\n\t\tdisplayPath: `${pathStart}|Cancel Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormButtonAddCert: {\r\n\t\tdefaultValue: 'Add Certification',\r\n\t\tdescription: `Button to add certification.`,\r\n\t\tdisplayPath: `${pathStart}|Add Certification Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormButtonUpdateCert: {\r\n\t\tdefaultValue: 'Update Certification',\r\n\t\tdescription: `Button to update certification.`,\r\n\t\tdisplayPath: `${pathStart}|Update Certification Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormNotificationSuccess: {\r\n\t\tdefaultValue: 'Changes saved',\r\n\t\tdescription: `Succeess notification for creating/editing other achievements.`,\r\n\t\tdisplayPath: `${pathStart}|SUccess`,\r\n\t\tdisplayType: 'Notification',\r\n\t\t...sharedProperties,\r\n\t},\r\n\tCPOtherAchievementFormErrorDateComparison: {\r\n\t\tdefaultValue: 'Expiration date must be after achievement date',\r\n\t\tdescription: `Error shown when expiration date is before achievement date.`,\r\n\t\tdisplayPath: `${pathStart}|Invalid Date Combination`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProperties,\r\n\t},\r\n};\r\n\r\nexport type CPOtherAchievementFormLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\nconst dpRoot = 'Other Achievements';\r\n\r\nconst sharedProps = {\r\n\tfeature: HubFeature.CandidateAccessLoginEmcOtherAchievements,\r\n\tportal: 'CP' as LocPortal,\r\n};\r\n\r\nexport type CPOtherAchievementsLocs =\r\n\t| 'CPOtherAchievementsName'\r\n\t| 'CPOtherAchievementsPageTitle'\r\n\t| 'CPOtherAchievementsVendor'\r\n\t| 'CPOtherAchievementsDateAchieved'\r\n\t| 'CPOtherAchievementsCertId'\r\n\t| 'CPOtherAchievementsExpireDate'\r\n\t| 'CPOtherAchievementsStatus'\r\n\t| 'CPOtherAchievementsAdd'\r\n\t| 'CPOtherAchievementsEdit';\r\n\r\nexport const cpOtherAchievementLocs: LocDefs = {\r\n\tCPOtherAchievementsPageTitle: {\r\n\t\tdefaultValue: 'Industry Certifications',\r\n\t\tdescription: 'Title for Industry Certifications page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsName: {\r\n\t\tdefaultValue: 'Industry Certification Name',\r\n\t\tdescription: 'Label for industry certification name.',\r\n\t\tdisplayPath: `${dpRoot}|Name`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsVendor: {\r\n\t\tdefaultValue: 'Vendor',\r\n\t\tdescription: 'Label for group.',\r\n\t\tdisplayPath: `${dpRoot}|Vendor`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsStatus: {\r\n\t\tdefaultValue: 'Status',\r\n\t\tdescription: 'Label for status.',\r\n\t\tdisplayPath: `${dpRoot}|Status`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsDateAchieved: {\r\n\t\tdefaultValue: 'Date Achieved',\r\n\t\tdescription: 'Label for Date achieved.',\r\n\t\tdisplayPath: `${dpRoot}|Date Achieved`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsExpireDate: {\r\n\t\tdefaultValue: 'Expiration Date',\r\n\t\tdescription: 'Label for Expiration Date.',\r\n\t\tdisplayPath: `${dpRoot}|Expiration Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsCertId: {\r\n\t\tdefaultValue: 'Certification ID',\r\n\t\tdescription: 'Label for Certification ID.',\r\n\t\tdisplayPath: `${dpRoot}|Certification ID`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsAdd: {\r\n\t\tdefaultValue: 'Add Certification',\r\n\t\tdescription: 'Label for Add button.',\r\n\t\tdisplayPath: `${dpRoot}|Add Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPOtherAchievementsEdit: {\r\n\t\tdefaultValue: 'Edit',\r\n\t\tdescription: 'Label for Add button.',\r\n\t\tdisplayPath: `${dpRoot}|Edit Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpOtherAchievementLocs);\r\nexport type CpOtherAchievementsLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\nimport { AddressFormLocs } from 'libs/cm/ui/src/lib/components/cm-address-form/address-form.type';\r\n\r\ntype CPProfileAddressFormLocs =\r\n\t| 'CPProfileAddressFormLabelCountry'\r\n\t| 'CPProfileAddressFormErrorCountryRequired'\r\n\t| 'CPProfileAddressFormErrorInvalidCountry'\r\n\t| 'CPProfileAddressFormLabelAddress'\r\n\t| 'CPProfileAddressFormLabelCity'\r\n\t| 'CPProfileAddressFormLabelState'\r\n\t| 'CPProfileAddressFormLabelPostal'\r\n\t| 'CPProfileAddressFormLabelPhone'\r\n\t| 'CPProfileAddressFormLabelFax'\r\n\t| 'CPProfileAddressFormErrorPhoneRequired'\r\n\t| 'CPProfileAddressFormErrorPhoneVueUsaCanada'\r\n\t| 'CPProfileAddressFormErrorPhoneVueNoZeros'\r\n\t| 'CPProfileAddressFormErrorPostalRequired'\r\n\t| 'CPProfileAddressFormErrorPostalVueUSA'\r\n\t| 'CPProfileAddressFormErrorPostalVueCanada'\r\n\t| 'CPProfileAddressFormErrorPostalMaxLength'\r\n\t| 'CPProfileAddressFormErrorStateRequired'\r\n\t| 'CPProfileAddressFormErrorStateRequiredVueHint'\r\n\t| 'CPProfileAddressFormErrorStateInvalid'\r\n\t| 'CPProfileAddressFormErrorCityRequired'\r\n\t| 'CPProfileAddressFormLabelAddressContinued1'\r\n\t| 'CPProfileAddressFormLabelAddressContinued2'\r\n\t| 'CPProfileAddressFormLabelBusinessAddress'\r\n\t| 'CPProfileAddressFormButtonUpdateAddress'\r\n\t| 'CPProfileAddressFormButtonCancel'\r\n\t| 'CPProfileAddressFormErrorAddressRequired';\r\n\r\nconst dpRoot = 'Profile|Addresses';\r\n\r\nconst sharedLocDefs = {\r\n\tfeature: HubFeature.CandidateProfileAddresses,\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n\tportal: 'CP' as LocPortal,\r\n};\r\n\r\nexport const cpProfileAddressFormLocs: LocDefs = {\r\n\tCPProfileAddressFormLabelAddress: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Address',\r\n\t\tdefaultValue: 'Address',\r\n\t\tdescription: 'Label for address.',\r\n\t\tdisplayPath: `${dpRoot}|Address`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelAddressContinued1: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Address2',\r\n\t\tdefaultValue: 'Address (cont.)',\r\n\t\tdescription: 'Label for address second line.',\r\n\t\tdisplayPath: `${dpRoot}|Address (line 2)`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelAddressContinued2: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Address3',\r\n\t\tdefaultValue: 'Address (cont.)',\r\n\t\tdescription: 'Label for address third line.',\r\n\t\tdisplayPath: `${dpRoot}|Address (line 3)`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelBusinessAddress: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Business',\r\n\t\tdefaultValue: 'This is a Business Address',\r\n\t\tdescription: 'Label for the business address checkbox.',\r\n\t\tdisplayPath: `${dpRoot}|Is Business`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelCity: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.City',\r\n\t\tdefaultValue: 'City',\r\n\t\tdescription: 'Error saying the city is required.',\r\n\t\tdisplayPath: `${dpRoot}|City`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelCountry: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Country',\r\n\t\tdefaultValue: 'Country',\r\n\t\tdescription: 'Label for country.',\r\n\t\tdisplayPath: `${dpRoot}|Country`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelFax: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Fax',\r\n\t\tdefaultValue: 'Fax',\r\n\t\tdescription: 'Label for fax.',\r\n\t\tdisplayPath: `${dpRoot}|Fax`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelPhone: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Phone',\r\n\t\tdefaultValue: 'Phone',\r\n\t\tdescription: 'Label for phone.',\r\n\t\tdisplayPath: `${dpRoot}|Phone`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelPostal: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.PostalCode',\r\n\t\tdefaultValue: 'Zip/Postal Code',\r\n\t\tdescription: 'Label for zip.',\r\n\t\tdisplayPath: `${dpRoot}|Zip/Postal Code`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormLabelState: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.State',\r\n\t\tdefaultValue: 'State/Province',\r\n\t\tdescription: 'Label for state.',\r\n\t\tdisplayPath: `${dpRoot}|State`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormErrorAddressRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.AddressRequired',\r\n\t\tdefaultValue: 'Address is required',\r\n\t\tdescription: 'Error saying the address is required.',\r\n\t\tdisplayPath: `${dpRoot}|Address Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormErrorCityRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.CityRequired',\r\n\t\tdefaultValue: 'City is required',\r\n\t\tdescription: 'Error saying city is required.',\r\n\t\tdisplayPath: `${dpRoot}|City Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormErrorCountryRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.CountryRequired',\r\n\t\tdefaultValue: 'Country is required',\r\n\t\tdescription: 'Error saying country is required.',\r\n\t\tdisplayPath: `${dpRoot}|Country Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormErrorInvalidCountry: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.InvalidCountry',\r\n\t\tdefaultValue: 'Invalid country',\r\n\t\tdescription: 'Error saying the selected country is invalid.',\r\n\t\tdisplayPath: `${dpRoot}|Invalid Country`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormErrorStateInvalid: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.StateInvalid',\r\n\t\tdefaultValue: 'Invalid state/province',\r\n\t\tdescription: 'Error saying the selected state is invalid.',\r\n\t\tdisplayPath: `${dpRoot}|Invalid State`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormErrorStateRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.StateRequired',\r\n\t\tdefaultValue: 'State/Province is required',\r\n\t\tdescription: 'Error saying state is required.',\r\n\t\tdisplayPath: `${dpRoot}|State Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormErrorStateRequiredVueHint: {\r\n\t\tdefaultValue: 'State is required. If your state is not listed, please type N/A',\r\n\t\tdescription: 'Error with Vue specific hint for state required.',\r\n\t\tdisplayPath: `${dpRoot}|State Required Vue Hint`,\r\n\t\tdisplayType: 'Error',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPProfileAddressFormErrorPostalRequired: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalRequired',\r\n\t\tdefaultValue: 'Zip/Postal Code is required',\r\n\t\tdescription: 'Error saying the postal code is required.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPProfileAddressFormErrorPostalVueUSA: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalUsa',\r\n\t\tdefaultValue:\r\n\t\t\t'Zip/Postal Code must follow one of the two following formats: #####, #####-####',\r\n\t\tdescription:\r\n\t\t\t'Error saying the postal code must follow one of the two following formats: #####, #####-####.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code USA Format`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPProfileAddressFormErrorPostalVueCanada: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalCanada',\r\n\t\tdefaultValue: 'Zip/Postal Code must follow the following format: A#A#A#',\r\n\t\tdescription: 'Error saying the postal code must follow the following format: a#a#a#.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Canada Format`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPProfileAddressFormErrorPhoneRequired: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneRequired',\r\n\t\tdefaultValue: 'Phone number is required',\r\n\t\tdescription: 'Error saying the phone number is required.',\r\n\t\tdisplayPath: `${dpRoot}|Phone Number Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPProfileAddressFormErrorPhoneVueUsaCanada: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneUsa',\r\n\t\tdefaultValue: 'Phone number must have 10 numbers',\r\n\t\tdescription: 'Error saying the phone number must have 10 numbers.',\r\n\t\tdisplayPath: `${dpRoot}|Phone Number USA Canada Format`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPProfileAddressFormErrorPhoneVueNoZeros: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneZeros',\r\n\t\tdefaultValue: 'Phone number must not be all zeros',\r\n\t\tdescription: 'Error saying the phone number must not be all zeros.',\r\n\t\tdisplayPath: `${dpRoot}|Phone Number No Zeros`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPProfileAddressFormErrorPostalMaxLength: {\r\n\t\tdefaultValue: 'Maximum number of allowed characters in postal code are: ',\r\n\t\tdescription: 'Error describing the maximum number of characters in the postal code.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Length`,\r\n\t\tdisplayType: 'Error',\r\n\t},\r\n\tCPProfileAddressFormButtonCancel: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.Button.Cancel',\r\n\t\tdefaultValue: 'Cancel',\r\n\t\tdescription:\r\n\t\t\t'Button to cancel editing of candidate addresses. This is shared between mailing address, localized address and the other address fields.',\r\n\t\tdisplayPath: `${dpRoot}|Cancel`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPProfileAddressFormButtonUpdateAddress: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.Button.UpdateAddress',\r\n\t\tdefaultValue: 'Update Address',\r\n\t\tdescription: 'Button to update the address.',\r\n\t\tdisplayPath: `${dpRoot}|Save`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n};\r\n\r\nexport const PROFILE_ADDRESS_FORM_LOC_KEYS =\r\n\tMapLocKeys(cpProfileAddressFormLocs);\r\nexport type CPProfileAddressFormLocKeys = LocMap;\r\n\r\nexport const mappedAddressFormLocs: AddressFormLocs = {\r\n\tAddressFormLabelCountry: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelCountry,\r\n\tAddressFormLabelFax: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelFax,\r\n\tAddressFormErrorCountryRequired:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorCountryRequired,\r\n\tAddressFormErrorInvalidCountry:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorInvalidCountry,\r\n\tAddressFormLabelAddress: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelAddress,\r\n\tAddressFormLabelCity: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelCity,\r\n\tAddressFormLabelState: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelState,\r\n\tAddressFormLabelPostal: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelPostal,\r\n\tAddressFormLabelPhone: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelPhone,\r\n\tAddressFormErrorPhoneRequired:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorPhoneRequired,\r\n\tAddressFormErrorPhoneVueUsaCanada:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorPhoneVueUsaCanada,\r\n\tAddressFormErrorPhoneVueNoZeros:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorPhoneVueNoZeros,\r\n\tAddressFormErrorPostalRequired:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorPostalRequired,\r\n\tAddressFormErrorPostalVueUSA:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorPostalVueUSA,\r\n\tAddressFormErrorPostalVueCanada:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorPostalVueCanada,\r\n\tAddressFormErrorPostalMaxLength:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorPostalMaxLength,\r\n\tAddressFormErrorStateRequired:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorStateRequired,\r\n\tAddressFormErrorStateInvalid:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorStateInvalid,\r\n\tAddressFormErrorStateRequiredVueHint:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorStateRequiredVueHint,\r\n\tAddressFormErrorCityRequired:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorCityRequired,\r\n\tAddressFormLabelAddressContinued2:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelAddressContinued1,\r\n\tAddressFormLabelAddressContinued3:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelAddressContinued2,\r\n\tAddressFormLabelBusinessAddress:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormLabelBusinessAddress,\r\n\tAddressFormButtonUpdateAddress:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormButtonUpdateAddress,\r\n\tAddressFormButtonCancel: PROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormButtonCancel,\r\n\tAddressFormErrorAddressRequired:\r\n\t\tPROFILE_ADDRESS_FORM_LOC_KEYS.CPProfileAddressFormErrorAddressRequired,\r\n};\r\n","import { HubFeature } from \"@ats/api/cm\";\r\nimport { LocDefs, MapLocKeys } from \"@cm/core/localization\";\r\n\r\nconst dpRoot = 'Profile|My Information'\r\n\r\nexport type MyInformationLoc = \r\n | 'CPProfileMyInformationLabelDataProvider';\r\n\r\nexport const myInformationLocs: LocDefs = {\r\n CPProfileMyInformationLabelDataProvider: {\r\n defaultValue: 'Certmetrics',\r\n description: 'Label for data provider.',\r\n displayPath: `${dpRoot}|Data Provider`,\r\n displayType: 'Label',\r\n feature: HubFeature.CandidateProfileExternalIds,\r\n portal: 'CP',\r\n },\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(myInformationLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst sharedData: Pick = {\r\n\tfeature: HubFeature.CandidateProfilePrimaryInformationAffiliation,\r\n\tportal: 'CP',\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n};\r\n\r\ntype CpProfileRouteLocs = 'CPProfileAffiliationTitle' | 'CPProfileAffiliationPageDescription';\r\n\r\nexport const cpProfileRouteLocs: LocDefs = {\r\n\tCPProfileAffiliationTitle: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliations',\r\n\t\tdescription: 'Page title for candidate profile affiliation page.',\r\n\t\tdisplayPath: 'Profile|Affiliation|Page Title',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.Title.PageTitle',\r\n\t},\r\n\tCPProfileAffiliationPageDescription: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: null,\r\n\t\tdescription: 'Title for the personal information section.',\r\n\t\tdisplayPath: 'Profile|Information|Personal Information',\r\n\t\thtmlAllowed: true,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.Content.PageDescription',\r\n\t},\r\n};\r\n\r\nexport const CpProfileRouteLocs = MapLocKeys(cpProfileRouteLocs);\r\n","import { cpProfileAddressFormLocs } from './mailing-addresses/cp-profile-address-form.locs';\nimport { myInformationLocs } from './my-information/my-information.locs';\nimport { cpProfileRouteLocs } from './profile-routing.module.locs';\nimport { selfMergeRouteLocs } from './self-merge/self-merge-route.locs';\n\nexport const cpProfileModuleLocs = {\n\t...myInformationLocs,\n\t...cpProfileRouteLocs,\n\t...cpProfileAddressFormLocs,\n\t...cpProfileRouteLocs,\n\t...selfMergeRouteLocs,\n};\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\nexport const selfMergeDPRoot = `Profile|Self Merge`;\r\nexport type SelfMergeRouteLocs = 'CPSelfMergeRouteTitle' | 'CPSelfMergeRoutePageDescription';\r\n\r\nexport const selfMergeRouteLocs: LocDefs = {\r\n\tCPSelfMergeRouteTitle: {\r\n\t\tdefaultValue: 'Merge Accounts',\r\n\t\tdescription: 'Title displayed on self merge account request and validation pages.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.MergeCandidatesCandidateSelfMerge,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPSelfMergeRoutePageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Description displayed on self merge page.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Page Description`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.MergeCandidatesCandidateSelfMerge,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\thtmlAllowed: true,\r\n\t},\r\n};\r\nexport const LOC_KEYS = MapLocKeys(selfMergeRouteLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\nimport { selfMergeDPRoot } from '../self-merge-route.locs';\r\n\r\nconst type = LocType.CandidatePortalString;\r\nconst feature = HubFeature.MergeCandidatesCandidateSelfMerge;\r\n\r\nexport type SelfMergeValidateLocs =\r\n\t| 'CPSelfMergeValidateSectionTitle'\r\n\t| 'CPSelfMergeValidateSuccess'\r\n\t| 'CPSelfMergeValidateError';\r\nexport const selfMergeValidateLocs: LocDefs = {\r\n\tCPSelfMergeValidateSectionTitle: {\r\n\t\tdefaultValue: 'Verifying Merge Request',\r\n\t\tdescription: 'Section title for the candidate self merge validation page.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Validation|Section Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeValidateSuccess: {\r\n\t\tdefaultValue: 'You have successfully merged accounts.',\r\n\t\tdescription: 'Message displayed after successfully validating the merge request.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Validation|Success`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeValidateError: {\r\n\t\tdefaultValue: 'There was a problem merging the requested account. Please contact support.',\r\n\t\tdescription: 'Message displayed after an error occurred validating the merge request.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Validation|Error`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n};\r\n\r\nexport type SelfMergeValidateLocType = LocMap;\r\nexport const LOC_KEYS = MapLocKeys(selfMergeValidateLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\nimport { selfMergeDPRoot } from '../self-merge-route.locs';\r\n\r\nconst type = LocType.CandidatePortalString;\r\nconst feature = HubFeature.MergeCandidatesCandidateSelfMerge;\r\n\r\nexport type SelfMergeLocs =\r\n\t| 'CPSelfMergeSearchSectionTitle'\r\n\t| 'CPSelfMergeSearchLabel'\r\n\t| 'CPSelfMergeEmailAddressLabel'\r\n\t| 'CPSelfMergeIDLabel'\r\n\t| 'CPSelfMergeEmailRequired'\r\n\t| 'CPSelfMergeIDRequired'\r\n\t| 'CPSelfMergeEmailInvalid'\r\n\t| 'CPSelfMergeExternalIdInvalid'\r\n\t| 'CPSelfMergeEmailAccessConfirmation'\r\n\t| 'CPSelfMergeSubmit'\r\n\t| 'CPSelfMergeSuccessCheckEmail'\r\n\t| 'CPSelfMergeSuccessContactSupport'\r\n\t| 'CPSelfMergeSuccessNotification';\r\n\r\nexport const selfMergeLocs: LocDefs = {\r\n\tCPSelfMergeSearchSectionTitle: {\r\n\t\tdefaultValue: 'Request Account Merge',\r\n\t\tdescription: 'Title for the panel containing the merge request form.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Section Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeSearchLabel: {\r\n\t\tdefaultValue: 'Search By',\r\n\t\tdescription: 'Label for the self merge search by dropdown.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Search By Label`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeEmailAddressLabel: {\r\n\t\tdefaultValue: 'Email Address',\r\n\t\tdescription: 'Label for the email address field.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Email Address Label`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeIDLabel: {\r\n\t\tdefaultValue: 'Username',\r\n\t\tdescription: 'Label for the username field.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Username Label`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeEmailRequired: {\r\n\t\tdefaultValue: 'Email is required',\r\n\t\tdescription: 'Error displayed when email is not provided.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Email Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeIDRequired: {\r\n\t\tdefaultValue: 'Username is required',\r\n\t\tdescription: 'Error displayed when username is not provided.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Username Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeEmailInvalid: {\r\n\t\tdefaultValue: 'Invalid email address',\r\n\t\tdescription: 'Error displayed when email is invalid.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Invalid Email`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeExternalIdInvalid: {\r\n\t\tdefaultValue: 'Invalid username',\r\n\t\tdescription: 'Error displayed when the candidate puts in their own username.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Invalid Username`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeEmailAccessConfirmation: {\r\n\t\tdefaultValue: 'I have access to the email address associated with this account.',\r\n\t\tdescription:\r\n\t\t\t'Checkbox for candidate to confirm they can access the email address associated with the account they are attempting to merge.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Access to Email Label`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeSubmit: {\r\n\t\tdefaultValue: 'Request Account Merge',\r\n\t\tdescription: 'Text displayed on the form submit button.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Submit Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeSuccessCheckEmail: {\r\n\t\tdefaultValue: 'Please check the email associated with the account to complete the merge.',\r\n\t\tdescription: 'Message displayed after requesting a merge with access to email address.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Success - Check Email`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeSuccessContactSupport: {\r\n\t\tdefaultValue:\r\n\t\t\t'A merge for this account has been requested. If you need any further help, please contact support.',\r\n\t\tdescription: 'Message displayed after requesting a merge with no access to email address.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Success - Contact Support`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n\tCPSelfMergeSuccessNotification: {\r\n\t\tdefaultValue: 'Merge successfully requested.',\r\n\t\tdescription: 'Notification shown on successful submission of the request form.',\r\n\t\tdisplayPath: `${selfMergeDPRoot}|Success Notification`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature,\r\n\t\ttype,\r\n\t},\r\n};\r\n\r\nexport type SelfMergeLocType = LocMap;\r\nexport const LOC_KEYS = MapLocKeys(selfMergeLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Candidate Access|Login|Employee Registration`;\r\n\r\nconst sharedProps = {\r\n\tfeature: HubFeature.CandidateAccessLoginEmcEmployeeRegistration,\r\n\tportal: 'CP' as LocPortal,\r\n};\r\n\r\nexport type CPEmployeeRegistration = 'CPEmployeeRegistrationCharacterExclusionError';\r\n\r\nexport const cpEmployeeRegistrationLocs: LocDefs = {\r\n\tCPEmployeeRegistrationCharacterExclusionError: {\r\n\t\tdefaultValue: 'Special character ? is not allowed at the start',\r\n\t\tdescription: 'Error message shown when the string contains a \"?\"',\r\n\t\tdisplayPath: `${dpRoot}|String Exclusion Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpEmployeeRegistrationLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\nimport { publicDPRoot } from '../../public-meta';\r\n\r\nconst dpRoot = `${publicDPRoot}|First Time Login`;\r\n\r\nconst sharedProps = {\r\n\tfeature: HubFeature.CandidateAccessLogin,\r\n\ttype: LocType.CandidatePortalString,\r\n};\r\n\r\nexport type FirstTimeLoginLoc =\r\n\t| 'CPFirstTimeLoginPasswordRequirements'\r\n\t| 'CPFirstTimeLoginTokenExpired'\r\n\t| 'CPFirstTimeLoginCandidateDataNotFound'\r\n\t| 'CPFirstTimeLoginRequestConfirmation'\r\n\t| 'CPFirstTimeLoginValidationDataNotFound'\r\n\t| 'CPFirstTimeLoginPasswordConfirmation'\r\n\t| 'CPFirstTimeLoginPageTitle'\r\n\t| 'CPFirstTimeLoginRegisterButton'\r\n\t| 'CPFirstTimeLoginLoggedInBefore'\r\n\t| 'CPFirstTimeLoginTextAbove'\r\n\t| 'CPFirstTimeLoginMethod'\r\n\t| 'CPFirstTimeLoginEmailMenuItem'\r\n\t| 'CPFirstTimeLoginScoreReportRegNumber'\r\n\t| 'CPFirstTimeLoginScoreReportTestId'\r\n\t| 'CPFirstTimeLoginLastName'\r\n\t| 'CPFirstTimeLoginLastNameRequired'\r\n\t| 'CPFirstTimeLoginRegistrationNumber'\r\n\t| 'CPFirstTimeLoginTestingId'\r\n\t| 'CPFirstTimeLoginUsernameError'\r\n\t| 'CPFirstTimeLoginEmailField'\r\n\t| 'CPFirstTimeLoginNewEmailField'\r\n\t| 'CPFirstTimeLoginEmailRequired'\r\n\t| 'CPFirstTimeLoginInvalidEmail'\r\n\t| 'CPFirstTimeLoginNewPasswordField'\r\n\t| 'CPFirstTimeLoginPasswordField'\r\n\t| 'CPFirstTimeLoginPasswordNameLogin'\r\n\t| 'CPFirstTimeLoginPasswordRequired'\r\n\t| 'CPFirstTimeLoginPasswordMinLength'\r\n\t| 'CPFirstTimeLoginPasswordMaxLength'\r\n\t| 'CPFirstTimeLoginPasswordsDontMatch'\r\n\t| 'CPFirstTimeLoginConfirmPassword'\r\n\t| 'CPFirstTimeLoginPasswordConfirmationRequired'\r\n\t| 'CPFirstTimeLoginSubmit'\r\n\t| 'CPFirstTimeLoginConfirmationMessage';\r\n\r\nexport const firstTimeLoginLocs: LocDefs = {\r\n\tCPFirstTimeLoginPasswordRequirements: {\r\n\t\tdefaultValue: \"Password doesn't meet our requirements\",\r\n\t\tdescription: 'Error shown when a candidate has their name or login in their password.',\r\n\t\tdisplayPath: `${dpRoot}|Password Requirements`,\r\n\t\tdisplayType: 'Notification',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginTokenExpired: {\r\n\t\tdefaultValue: 'The link is expired or invalid, please start the process again',\r\n\t\tdescription:\r\n\t\t\t'The error text for when a first time login attempt has taken too long, and the associated token has expired when using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Token Expired`,\r\n\t\tdisplayType: 'Notification',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginCandidateDataNotFound: {\r\n\t\tdefaultValue:\r\n\t\t\t'If you have an account in our system you will get an email. If you do not receive an email shortly, please contact support.',\r\n\t\tdescription:\r\n\t\t\t'The error text for when unfound candidate data was submitted when using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Candidate Data Not Found`,\r\n\t\tdisplayType: 'Notification',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginRequestConfirmation: {\r\n\t\tdefaultValue:\r\n\t\t\t'An email has been sent to the provided email address. Follow the instructions in the email to proceed. Please allow several minutes for the email to arrive.',\r\n\t\tdescription:\r\n\t\t\t'The confirmation text for when a first time login request was completed successfully when using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Login Request Confirmation`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginValidationDataNotFound: {\r\n\t\tdefaultValue: 'Validation data not found',\r\n\t\tdescription:\r\n\t\t\t'The error text for when unfound validation data was submitted when using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Validation Data Not Found`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordConfirmation: {\r\n\t\tdefaultValue: 'Password successfully set.',\r\n\t\tdescription:\r\n\t\t\t'The confirmation text for when a first time login password was successfully set when using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Password Confirmation`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPageTitle: {\r\n\t\tdefaultValue: 'First Time Login',\r\n\t\tdescription: 'Page title for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginRegisterButton: {\r\n\t\tdefaultValue: 'Register',\r\n\t\tdescription: 'Button to take candidates to self registration.',\r\n\t\tdisplayPath: `${dpRoot}|Register`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessLoginSelfRegistration,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPFirstTimeLoginLoggedInBefore: {\r\n\t\tdefaultValue: 'Logged in before?',\r\n\t\tdescription:\r\n\t\t\t'The button text for the button that returns to the login page from the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Logged In Before`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginTextAbove: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription:\r\n\t\t\t'The text area above the first time login page, typically used for instructions or providing more information to candidates.',\r\n\t\tdisplayPath: `${dpRoot}|Text Above`,\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: true,\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginMethod: {\r\n\t\tdefaultValue: 'Using',\r\n\t\tdescription: 'The field label text for the method selection for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Method`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginEmailMenuItem: {\r\n\t\tdefaultValue: 'Email',\r\n\t\tdescription:\r\n\t\t\t'The text for the email menu option under the method select for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Email Menu Item`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginScoreReportRegNumber: {\r\n\t\tdefaultValue: 'Score Report Registration Number',\r\n\t\tdescription:\r\n\t\t\t'The text for the score report registration number menu option under the method select for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Score Report Reg Number`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginScoreReportTestId: {\r\n\t\tdefaultValue: 'Score Report Testing ID',\r\n\t\tdescription:\r\n\t\t\t'The text for the score report testing id menu option under the method select for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Score Report Test ID`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginLastName: {\r\n\t\tdefaultValue: 'Last Name',\r\n\t\tdescription: 'The field label text for the last name field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Last Name`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginLastNameRequired: {\r\n\t\tdefaultValue: 'Please enter your last name',\r\n\t\tdescription:\r\n\t\t\t'The error text message that displays when the last name field is left blank for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Last Name Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginRegistrationNumber: {\r\n\t\tdefaultValue: 'Registration Number',\r\n\t\tdescription:\r\n\t\t\t'The field label text for the registration number field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Registration Number`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginTestingId: {\r\n\t\tdefaultValue: 'Testing ID',\r\n\t\tdescription: 'The field label text for the testing id field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Testing ID`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginUsernameError: {\r\n\t\tdefaultValue: 'Please enter a value',\r\n\t\tdescription:\r\n\t\t\t'The error text message that displays when the username field is left blank for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Username Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginEmailField: {\r\n\t\tdefaultValue: 'Email',\r\n\t\tdescription: 'The field label text for the email field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Email Field`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginNewEmailField: {\r\n\t\tdefaultValue: 'New Email',\r\n\t\tdescription: 'The field label text for the new email field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|New Email`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginEmailRequired: {\r\n\t\tdefaultValue: 'Please enter your email',\r\n\t\tdescription:\r\n\t\t\t'The error text message that displays when the email or new email field is left blank for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Email Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginInvalidEmail: {\r\n\t\tdefaultValue: 'Please use a valid email address',\r\n\t\tdescription:\r\n\t\t\t'The error text message that displays when the entered email is invalid in the email or new email field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Invalid Email`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginNewPasswordField: {\r\n\t\tdefaultValue: 'New Password',\r\n\t\tdescription:\r\n\t\t\t'The field label text for the new password field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|New Password Field`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordField: {\r\n\t\tdefaultValue: 'Password',\r\n\t\tdescription: 'The field label text for the password field for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Password Field`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordNameLogin: {\r\n\t\tdefaultValue: 'Password must not contain login or name',\r\n\t\tdescription: \"Hint to show what is not allowed in the candidate's password.\",\r\n\t\tdisplayPath: `${dpRoot}|Password Name Login`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordRequired: {\r\n\t\tdefaultValue: 'Password is required',\r\n\t\tdescription:\r\n\t\t\t'The error message that displays when the password field is left blank when entering in a new password while using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Password Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordMinLength: {\r\n\t\tdefaultValue: 'Password must contain at least 12 characters',\r\n\t\tdescription:\r\n\t\t\t\"The error message that displays when the entered password doesn't meet the minimum 12 character count when entering in a new password while using the first time login page.\",\r\n\t\tdisplayPath: `${dpRoot}|Password Min Length`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordMaxLength: {\r\n\t\tdefaultValue: 'Password cannot contain more than 50 characters',\r\n\t\tdescription:\r\n\t\t\t\"The error message that displays when the entered password doesn't meet the maximum 50 character count when entering in a new password while using the first time login page.\",\r\n\t\tdisplayPath: `${dpRoot}|Password Max Length`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordsDontMatch: {\r\n\t\tdefaultValue: 'Passwords do not match',\r\n\t\tdescription:\r\n\t\t\t'The error message that displays when the entered passwords do not match when entereing in a new password while using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Passwords Dont Match`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginConfirmPassword: {\r\n\t\tdefaultValue: 'Confirm Password',\r\n\t\tdescription:\r\n\t\t\t'The confirm password field label that shows on the login while using the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Confirm Password`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginPasswordConfirmationRequired: {\r\n\t\tdefaultValue: 'Confirm Password is required',\r\n\t\tdescription: 'Error to show the input is required.',\r\n\t\tdisplayPath: `${dpRoot}|Confirmation Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginSubmit: {\r\n\t\tdefaultValue: 'Submit',\r\n\t\tdescription: 'The button text for the submit button for the first time login page.',\r\n\t\tdisplayPath: `${dpRoot}|Submit`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPFirstTimeLoginConfirmationMessage: {\r\n\t\tdefaultValue:\r\n\t\t\t'If the information provided matches our records, an email will be sent to the provided email address. If you do not receive an email, please contact customer support.',\r\n\t\tdescription: 'The message confirming the first time login form was submitted.',\r\n\t\tdisplayPath: `${dpRoot}|Confirmation Message`,\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: true,\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(firstTimeLoginLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\nimport { BadgeDetailViewLocs } from 'libs/cp/ui/src/lib/components/badge-detail-view/badge-detail-view.locs';\r\n\r\nconst dpRoot = 'Public|Badge';\r\n\r\nconst sharedLocDefs = {\r\n\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n\tportal: 'CP' as LocPortal,\r\n};\r\n\r\ntype CPPublicBadgePageLocKeys = 'CPPublicBadgeNotFound' | 'CPPublicBadgeCriteriaButton';\r\n\r\nexport const cpPublicBadgePageLocs: LocDefs = {\r\n\tCPPublicBadgeNotFound: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.NotFound',\r\n\t\tdefaultValue: 'Badge not found',\r\n\t\tdescription: 'Message displayed when the badge is not found',\r\n\t\tdisplayPath: `${dpRoot}|Badge Not Found`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeCriteriaButton: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.CriteriaButton',\r\n\t\tdefaultValue: 'Criteria',\r\n\t\tdescription: 'Button to view criteria on public badge',\r\n\t\tdisplayPath: `${dpRoot}|Criteria`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n};\r\n\r\nexport type PublicBadgeDetailLocKeys =\r\n\t| 'CPPublicBadgeContentImageAltTag'\r\n\t| 'CPPublicBadgeContentVisit'\r\n\t| 'CPPublicBadgeLabelOrganization'\r\n\t| 'CPPublicBadgeLabelUrl'\r\n\t| 'CPPublicBadgeTitleBadgeDetails'\r\n\t| 'CPPublicBadgeLabelIssuedTo'\r\n\t| 'CPPublicBadgeLabelIssuer'\r\n\t| 'CPPublicBadgeLabelViews'\r\n\t| 'CPPublicBadgeLabelDateEarned'\r\n\t| 'CPPublicBadgeLabelLastAdjustmentDate'\r\n\t| 'CPPublicBadgeLabelValidThrough'\r\n\t| 'CPPublicBadgeLabelCriteria'\r\n\t| 'CPPublicBadgeLabelDescription';\r\n\r\nexport const cpPublicBadgeDetailLocs: LocDefs = {\r\n\tCPPublicBadgeContentImageAltTag: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.ImageInfo.BadgeAltTag',\r\n\t\tdefaultValue: 'Badge logo',\r\n\t\tdescription: 'Badge image text used for accessibility',\r\n\t\tdisplayPath: `${dpRoot}|Issuer Details`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelDescription: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.Description',\r\n\t\tdefaultValue: 'Description',\r\n\t\tdescription: 'Label for the description field',\r\n\t\tdisplayPath: `${dpRoot}|Description`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelDateEarned: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.DateEarned',\r\n\t\tdefaultValue: 'Date Earned',\r\n\t\tdescription: 'Label for the active date field',\r\n\t\tdisplayPath: `${dpRoot}|Date Earned`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelIssuedTo: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.IssuedTo',\r\n\t\tdefaultValue: 'Issued To',\r\n\t\tdescription: 'Label for the issued to field',\r\n\t\tdisplayPath: `${dpRoot}|Issued To`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelIssuer: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.Issuer',\r\n\t\tdefaultValue: 'Issuer Details',\r\n\t\tdescription: 'Label for the issuers field',\r\n\t\tdisplayPath: `${dpRoot}|Issuer`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelLastAdjustmentDate: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.LastAdjustmentDate',\r\n\t\tdefaultValue: 'Last Extension Date',\r\n\t\tdescription: 'Label for the last adjustment date',\r\n\t\tdisplayPath: `${dpRoot}|Last Extension Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelValidThrough: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.ValidThrough',\r\n\t\tdefaultValue: 'Valid Through',\r\n\t\tdescription: 'Label for the valid through field',\r\n\t\tdisplayPath: `${dpRoot}|Valid Through`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeTitleBadgeDetails: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.Title.PageTitle',\r\n\t\tdefaultValue: 'Badge',\r\n\t\tdescription: 'Page title for the badge sharing page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n\tCPPublicBadgeLabelOrganization: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.Organization',\r\n\t\tdefaultValue: 'Issuer',\r\n\t\tdescription: 'The field label for the issuing organization',\r\n\t\tdisplayPath: `${dpRoot}|Organization`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n\tCPPublicBadgeLabelUrl: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.Url',\r\n\t\tdefaultValue: 'URL',\r\n\t\tdescription: 'The field label for the url to the issuing organization',\r\n\t\tdisplayPath: `${dpRoot}|URL`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n\tCPPublicBadgeContentVisit: {\r\n\t\tdefaultValue: 'Visit',\r\n\t\tdescription: 'Content shown for visiting a different page',\r\n\t\tdisplayPath: `${dpRoot}|Visit`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelViews: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.ViewCount',\r\n\t\tdefaultValue: 'Views',\r\n\t\tdisplayPath: `${dpRoot}|Views`,\r\n\t\tdescription: 'The field label for the number of badge views',\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPPublicBadgeLabelCriteria: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.Criteria',\r\n\t\tdefaultValue: 'Criteria',\r\n\t\tdisplayPath: `${dpRoot}|Criteria`,\r\n\t\tdescription:\r\n\t\t\t'The field label for the criteria url. This url will link to the page that provides the criteria for obtaining the badge',\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n};\r\n\r\nexport const BADGE_DETAIL_LOC_KEYS = MapLocKeys(cpPublicBadgeDetailLocs);\r\nexport const LOC_KEYS = MapLocKeys(cpPublicBadgePageLocs);\r\n\r\nexport const mapBadgeDetailLocs: BadgeDetailViewLocs = {\r\n\tBadgeDetailViewContentImageAltTag: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeContentImageAltTag,\r\n\tBadgeDetailViewContentVisit: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeContentVisit,\r\n\tBadgeDetailViewLabelOrganization: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelOrganization,\r\n\tBadgeDetailViewLabelUrl: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelUrl,\r\n\tBadgeDetailViewTitleBadgeDetails: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeTitleBadgeDetails,\r\n\tBadgeDetailViewLabelIssuedTo: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelIssuedTo,\r\n\tBadgeDetailViewLabelIssuer: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelIssuer,\r\n\tBadgeDetailViewLabelViews: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelViews,\r\n\tBadgeDetailViewLabelDateEarned: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelDateEarned,\r\n\tBadgeDetailViewLabelLastAdjustmentDate:\r\n\t\tBADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelLastAdjustmentDate,\r\n\tBadgeDetailViewLabelValidThrough: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelValidThrough,\r\n\tBadgeDetailViewLabelCriteria: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelCriteria,\r\n\tBadgeDetailViewLabelDescription: BADGE_DETAIL_LOC_KEYS.CPPublicBadgeLabelDescription,\r\n};\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Candidate Access|Login|Self Registration`;\r\n\r\nconst sharedProps = {\r\n\tfeature: HubFeature.CandidateAccessLoginSelfRegistration,\r\n\tportal: 'CP' as LocPortal,\r\n};\r\n\r\nexport type CPSelfRegistrationLocs =\r\n\t| 'CPSelfRegistrationFormEmailHint'\r\n\t| 'CPSelfRegistrationFormPostalCodeRequired'\r\n\t| 'CPSelfRegistrationFormPostalCodeVueUSA'\r\n\t| 'CPSelfRegistrationFormPostalCodeVueCanada'\r\n\t| 'CPSelfRegistrationFormPhoneRequired'\r\n\t| 'CPSelfRegistrationFormPhoneVueUsaCanada'\r\n\t| 'CPSelfRegistrationFormPhoneVueNoZeros'\r\n\t| 'CPSelfRegistrationFormCharacterExclusionError';\r\n\r\nexport const cpSelfRegistrationLocs: LocDefs = {\r\n\tCPSelfRegistrationFormEmailHint: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Hint shown for the email field',\r\n\t\tdisplayPath: `${dpRoot}|Email Hint`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPSelfRegistrationFormPostalCodeRequired: {\r\n\t\tdefaultValue: 'Zip/Postal Code is required',\r\n\t\tdescription: 'Error message shown when the postal code field is required',\r\n\t\tdisplayPath: `${dpRoot}|Field Error|Postal Code Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPSelfRegistrationFormPostalCodeVueUSA: {\r\n\t\tdefaultValue: 'Invalid postal code for USA',\r\n\t\tdescription: 'Error message shown when the postal code is invalid for the US',\r\n\t\tdisplayPath: `${dpRoot}|Field Error|Postal Code Invalid in USA`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPSelfRegistrationFormPostalCodeVueCanada: {\r\n\t\tdefaultValue: 'Invalid postal code for Canada',\r\n\t\tdescription: 'Error message shown when the postal code is invalid for Canada',\r\n\t\tdisplayPath: `${dpRoot}|Field Error|Postal Code Invalid in Canada`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPSelfRegistrationFormPhoneRequired: {\r\n\t\tdefaultValue: 'Phone number is required',\r\n\t\tdescription: 'Error message shown when the phone number field is required',\r\n\t\tdisplayPath: `${dpRoot}|Field Error|Phone Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPSelfRegistrationFormPhoneVueUsaCanada: {\r\n\t\tdefaultValue: 'Invalid phone number for USA or Canada',\r\n\t\tdescription: 'Error message shown when the phone number is invalid for the US or Canada',\r\n\t\tdisplayPath: `${dpRoot}|Field Error|Phone Invalid in USA or Canada`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPSelfRegistrationFormPhoneVueNoZeros: {\r\n\t\tdefaultValue: 'Phone number must not contain all zeros',\r\n\t\tdescription: 'Error message shown when the phone number contains all zeros',\r\n\t\tdisplayPath: `${dpRoot}|Field Error|Phone All Zeros`,\r\n\t\tdisplayType: 'Error',\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPSelfRegistrationFormCharacterExclusionError: {\r\n\t\tdefaultValue: 'Special character ? is not allowed at the start',\r\n\t\tdescription: 'Error message shown when the string contains a \"?\"',\r\n\t\tdisplayPath: `${dpRoot}|String Exclusion Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.CandidateAccessLoginSelfRegistration,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpSelfRegistrationLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\nimport { publicDPRoot } from '../../public-meta';\r\n\r\nconst dpRoot = `${publicDPRoot}|SSO`;\r\n\r\nexport type CPSSOErrorLoc =\r\n\t| 'CPSSOErrorMessage'\r\n\t| 'CPSSOErrorCustomVueEgress'\r\n\t| 'CPSSOErrorTryAgain'\r\n\t| 'CPSSOErrorCustomVueSupport';\r\n\r\nexport const cpSSOErrorLocs: LocDefs = {\r\n\tCPSSOErrorMessage: {\r\n\t\tdefaultValue: 'There was a problem logging in.',\r\n\t\tdescription: 'Error message displayed when there is a problem logging via SSO.',\r\n\t\tdisplayPath: `${dpRoot}|Error Message`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegration,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Ingress/Login.SSO.Content.ErrorMessage',\r\n\t},\r\n\tCPSSOErrorTryAgain: {\r\n\t\tdefaultValue: 'Try Again',\r\n\t\tdescription: 'Try again button for the SSO error page.',\r\n\t\tdisplayPath: `${dpRoot}|Try Again`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessIntegration,\r\n\t\tportal: 'CP',\r\n\t\tlegacyName: 'CandidateAccess.Integration.Ingress/Login.SSO.Button.ErrorTryAgain',\r\n\t},\r\n\tCPSSOErrorCustomVueEgress: {\r\n\t\tdefaultValue: 'There was a problem with your account at Pearson Vue',\r\n\t\tdescription:\r\n\t\t\t'Error message displayed when there is a problem logging via SSO due to specific Pearson Vue block.',\r\n\t\tdisplayPath: `${dpRoot}|SSO Vue Error Message`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPSSOErrorCustomVueSupport: {\r\n\t\tdefaultValue: 'Contact Pearson Vue',\r\n\t\tdescription: 'HTML content for Pearson Vue support link.',\r\n\t\tdisplayPath: `${dpRoot}|Pearson Vue Support Content`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpSSOErrorLocs);\r\n\r\nexport type CPSSOErrorLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\nimport { publicDPRoot } from '../../public-meta';\r\n\r\nconst dpRoot = `${publicDPRoot}|SSO Ingress`;\r\n\r\nexport type CPSSOIngressErrorLoc =\r\n\t| 'CPSSOIngressErrorMessage'\r\n\t| 'CPSSOIngressErrorTryAgain'\r\n\t| 'CPSSOIngressErrorPageTitle';\r\n\r\nexport const cpSSOIngressErrorLocs: LocDefs = {\r\n\tCPSSOIngressErrorMessage: {\r\n\t\tdefaultValue: 'There was a problem logging in.',\r\n\t\tdescription: 'Error message displayed when there is an SSO ingress problem logging in.',\r\n\t\tdisplayPath: `${dpRoot}|Error Message`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationIngress,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\tCPSSOIngressErrorTryAgain: {\r\n\t\tdefaultValue: 'Try Again',\r\n\t\tdescription: 'Try again button for the SSO ingress error page.',\r\n\t\tdisplayPath: `${dpRoot}|Try Again`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationIngress,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPSSOIngressErrorPageTitle: {\r\n\t\tdefaultValue: 'SSO Error',\r\n\t\tdescription: 'Page title for SSO ingress error page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationIngress,\r\n\t\tportal: 'CP',\r\n\t}\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpSSOIngressErrorLocs);\r\n\r\nexport type CPSSOIngressErrorLocType = LocMap;\r\n","export const publicDPRoot = 'Public';\r\n","import { cpEmployeeRegistrationLocs } from './components/employee-registration/employee-registration.locs';\r\nimport { firstTimeLoginLocs } from './components/first-time-login/first-time-login.locs';\r\nimport {\r\n\tcpPublicBadgeDetailLocs,\r\n\tcpPublicBadgePageLocs,\r\n} from './components/public-badge/public-badge.locs';\r\nimport { cpSelfRegistrationLocs } from './components/self-registration/self-registration.locs';\r\nimport { cpSSOErrorLocs } from './components/sso-error/sso-error.locs';\r\nimport { cpSSOIngressErrorLocs } from './components/sso-ingress-error/sso-ingress-error.locs';\r\n\r\nexport const cpPublicModuleLocs = {\r\n\t...firstTimeLoginLocs,\r\n\t...cpPublicBadgeDetailLocs,\r\n\t...cpSSOErrorLocs,\r\n\t...cpSSOIngressErrorLocs,\r\n\t...cpPublicBadgeDetailLocs,\r\n\t...cpPublicBadgePageLocs,\r\n\t...cpSelfRegistrationLocs,\r\n\t...cpEmployeeRegistrationLocs,\r\n};\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Exam Scheduling|Schedule|';\r\n\r\nexport type ScheduleExamLoc =\r\n\t| 'CPScheduleExamIntellumAction'\r\n\t| 'CPScheduleExamAuthorizationError'\r\n\t| 'CPScheduleExamAuthorizationUnauthorized'\r\n\t| 'CPScheduleExamAuthorizationAuthorized'\r\n\t| 'CPScheduleExamAuthorizationAuthError'\r\n\t| 'CPScheduleExamAuthorizationAuthSuccess'\r\n\t| 'CPScheduleExamLabelFilterByGroup';\r\n\r\nexport const scheduleExamLocs: LocDefs = {\r\n\tCPScheduleExamAuthorizationError: {\r\n\t\tdefaultValue: 'Authorization Error: Please contact support',\r\n\t\tdescription: 'Message when an exam scheduling authorization error occurs.',\r\n\t\tdisplayPath: `${dpRoot}Authorization Error`,\r\n\t\tdisplayType: 'Error',\r\n\t\tfeature: HubFeature.ExamAuthorization,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t},\r\n\tCPScheduleExamAuthorizationUnauthorized: {\r\n\t\tdefaultValue: 'Schedule',\r\n\t\tdescription: 'Content shown when an exam needs authorization before scheduling.',\r\n\t\tdisplayPath: `${dpRoot}Unauthorized`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ExamAuthorization,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tlegacyName: 'Exam.Authorization/ScheduleExam.Content.Unauthorized',\r\n\t},\r\n\tCPScheduleExamAuthorizationAuthorized: {\r\n\t\tdefaultValue: 'Schedule',\r\n\t\tdescription: 'Content shown when an exam is authorized.',\r\n\t\tdisplayPath: `${dpRoot}Authorized`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ExamAuthorization,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tlegacyName: 'Exam.Authorization/ScheduleExam.Content.Authorized',\r\n\t},\r\n\tCPScheduleExamAuthorizationAuthError: {\r\n\t\tdefaultValue: 'There was a problem authorizing this exam',\r\n\t\tdescription: 'Notification message shown when an exam authorization error occurs.',\r\n\t\tdisplayPath: `${dpRoot}Authorization Error Notification`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.ExamAuthorization,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t\tlegacyName: 'Exam.Authorization/ScheduleExam.NotificationMessage.AuthError',\r\n\t},\r\n\tCPScheduleExamAuthorizationAuthSuccess: {\r\n\t\tdefaultValue:\r\n\t\t\t'Thank you for your patience as we authorize this exam. This may take a few minutes.',\r\n\t\tdescription: 'Notification message shown when an exam authorization is in progress.',\r\n\t\tdisplayPath: `${dpRoot}Authorization Loading Notification`,\r\n\t\tdisplayType: 'Notification',\r\n\t\tfeature: HubFeature.ExamAuthorization,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'Exam.Authorization/ScheduleExam.NotificationMessage.Success',\r\n\t},\r\n\tCPScheduleExamIntellumAction: {\r\n\t\tdefaultValue: 'Schedule',\r\n\t\tdescription: 'Intellum Schedule Action',\r\n\t\tdisplayPath: `${dpRoot}Intellum Action`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.ExamSchedulingIntellum,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t},\r\n\tCPScheduleExamLabelFilterByGroup: {\r\n\t\tdefaultValue: 'Filter by Group',\r\n\t\tdescription: 'Label for the group filter for the exam data.',\r\n\t\tdisplayPath: `${dpRoot}Label Filter by Group`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAuthorization,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: true,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(scheduleExamLocs);\r\n","import { scheduleExamLocs } from './components/schedule-exam/schedule-exam.locs';\r\n\r\nexport const cpExamSchedulingModuleLocs = {\r\n ...scheduleExamLocs,\r\n};\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Scheduling|Schedule an Exam|Certiverse';\r\n\r\nexport type SSOEgressCertiverse =\r\n\t| 'CPSSOEgressCertiverseButton'\r\n\t| 'CPSSOEgressCertiverseTabTitle'\r\n\t| 'CPSSOEgressCertiversePageTitle'\r\n\t| 'CPSSOEgressCertiversePageDescription';\r\n\r\nexport const ssoEgressCertiverseLocs: LocDefs = {\r\n\tCPSSOEgressCertiverseButton: {\r\n\t\tdefaultValue: 'SSO to Certiverse',\r\n\t\tdescription: 'Button to SSO to Certiverse.',\r\n\t\tdisplayPath: `${dpRoot}|SSO Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressOidcEgressCertiverse,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t},\r\n\tCPSSOEgressCertiverseTabTitle: {\r\n\t\tdefaultValue: 'Schedule an Exam',\r\n\t\tdescription: 'Tab title of certiverse SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Tab Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressOidcEgressCertiverse,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t},\r\n\tCPSSOEgressCertiversePageTitle: {\r\n\t\tdefaultValue: 'Certiverse SSO',\r\n\t\tdescription: 'Title of certiverse SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressOidcEgressCertiverse,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t},\r\n\tCPSSOEgressCertiversePageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Title of certiverse SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressOidcEgressCertiverse,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(ssoEgressCertiverseLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Scheduling|Schedule an Exam|Kryterion';\r\n\r\nexport type SSOEgressKryterion =\r\n\t| 'CPSSOEgressKryterionButton'\r\n\t| 'CPSSOEgressKryterionTabTitle'\r\n\t| 'CPSSOEgressKryterionPageTitle'\r\n\t| 'CPSSOEgressKryterionPageDescription';\r\n\r\nexport const ssoEgressKryterionLocs: LocDefs = {\r\n\tCPSSOEgressKryterionButton: {\r\n\t\tdefaultValue: 'SSO to Kryterion',\r\n\t\tdescription: 'Button to SSO to Kryterion.',\r\n\t\tdisplayPath: `${dpRoot}|SSO Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressKryterionScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t},\r\n\tCPSSOEgressKryterionTabTitle: {\r\n\t\tdefaultValue: 'Schedule an Exam',\r\n\t\tdescription: 'Tab title of Kryterion SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Tab Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressKryterionScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Egress.Kryterion/Scheduling.Exam.Title.TabTitle',\r\n\t},\r\n\tCPSSOEgressKryterionPageTitle: {\r\n\t\tdefaultValue: 'Kryterion SSO',\r\n\t\tdescription: 'Title of Kryterion SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressKryterionScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Egress.Kryterion/Scheduling.Exam.Title.PageTitle',\r\n\t},\r\n\tCPSSOEgressKryterionPageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Title of Kryterion SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressKryterionScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.Kryterion/Scheduling.Exam.Content.PageDescription',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(ssoEgressKryterionLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'SSO|Egress';\r\n\r\nexport type SSOEgressTestwise =\r\n\t| 'CPSSOEgressTestwiseButton'\r\n\t| 'CPSSOEgressTestwiseTabTitle'\r\n\t| 'CPSSOEgressTestwisePageTitle'\r\n\t| 'CPSSOEgressTestwisePageDescription';\r\n\r\nexport const ssoTestwiseEgressLocs: LocDefs = {\r\n\tCPSSOEgressTestwiseButton: {\r\n\t\tdefaultValue: 'SSO to Testwise',\r\n\t\tdescription: 'Button to SSO to Testwise.',\r\n\t\tdisplayPath: `${dpRoot}|Testwise`,\r\n\t\tdisplayType: 'Button',\r\n\t\thtmlAllowed: false,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressTestWise,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPSSOEgressTestwiseTabTitle: {\r\n\t\tdefaultValue: 'Schedule an Exam',\r\n\t\tdescription: 'Tab title of Testwise SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Tab Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressTestWise,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Egress.Testwise/Scheduling.Exam.Title.TabTitle',\r\n\t},\r\n\tCPSSOEgressTestwisePageTitle: {\r\n\t\tdefaultValue: 'Testwise SSO',\r\n\t\tdescription: 'Title of Testwise SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressTestWise,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Egress.Testwise/Scheduling.Exam.Title.PageTitle',\r\n\t},\r\n\tCPSSOEgressTestwisePageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Page description for the Testwise SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressTestWise,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.Testwise/Scheduling.Exam.Content.PageDescription',\r\n\t},\r\n};\r\nexport const LOC_KEYS = MapLocKeys(ssoTestwiseEgressLocs);\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Scheduling|Schedule an Exam|Vue';\r\n\r\nexport type SSOEgressVue =\r\n\t| 'CPSSOEgressVueButton'\r\n\t| 'CPSSOEgressVueLoadingMessage'\r\n\t| 'CPSSOEgressVueRedirectFailure'\r\n\t| 'CPSSOEgressVueTabTitle'\r\n\t| 'CPSSOEgressVuePageTitle'\r\n\t| 'CPSSOEgressVuePageDescription';\r\n\r\nexport const ssoEgressVueLocs: LocDefs = {\r\n\tCPSSOEgressVueButton: {\r\n\t\tdefaultValue: 'SSO to Vue',\r\n\t\tdescription: 'Button to SSO to Vue.',\r\n\t\tdisplayPath: `${dpRoot}|SSO Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVueScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Egress.PearsonVue/Scheduling.Exam.Button.SsoToVue',\r\n\t},\r\n\tCPSSOEgressVueLoadingMessage: {\r\n\t\tdefaultValue: 'Connecting to provider',\r\n\t\tdescription: 'Message displayed while SSO is in flight.',\r\n\t\tdisplayPath: `${dpRoot}|SSO Loading Message`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVueScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t},\r\n\tCPSSOEgressVueRedirectFailure: {\r\n\t\tdefaultValue:\r\n\t\t\t'You should be automatically redirected in a moment, but if you are not, please click the button below.',\r\n\t\tdescription: 'Message displayed if auto redirect fails.',\r\n\t\tdisplayPath: `${dpRoot}|SSO Redirect Failure`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVueScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t},\r\n\tCPSSOEgressVueTabTitle: {\r\n\t\tdefaultValue: 'Schedule an Exam',\r\n\t\tdescription: 'Tab title of Vue SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Tab Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVueScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Egress.Vue/Scheduling.Exam.Title.TabTitle',\r\n\t},\r\n\tCPSSOEgressVuePageTitle: {\r\n\t\tdefaultValue: 'Vue SSO',\r\n\t\tdescription: 'Title of Vue SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVueScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: false,\r\n\t\tlegacyName: 'CandidateAccess.Integration.Egress.Vue/Scheduling.Exam.Title.PageTitle',\r\n\t},\r\n\tCPSSOEgressVuePageDescription: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Title of Vue SSO page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVueScheduling,\r\n\t\tportal: 'CP',\r\n\t\thtmlAllowed: true,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.Vue/Scheduling.Exam.Content.PageDescription',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(ssoEgressVueLocs);\r\n","import { ssoEgressCertiverseLocs } from './components/sso-certiverse/sso-certiverse.component.locs';\r\nimport { ssoEgressKryterionLocs } from './components/sso-kryterion/sso-kryterion.locs';\r\nimport { ssoTestwiseEgressLocs } from './components/sso-testwise/sso-testwise.locs';\r\nimport { ssoEgressVueLocs } from './components/sso-vue/sso-vue.locs';\r\n\r\nexport const cpSSOEgressModuleLocs = {\r\n\t...ssoTestwiseEgressLocs,\r\n\t...ssoEgressCertiverseLocs,\r\n\t...ssoEgressKryterionLocs,\r\n\t...ssoEgressVueLocs,\r\n};\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocPortal, MapLocKeys } from '@cm/core/localization';\r\nimport { BadgeDetailViewLocs } from 'libs/cp/ui/src/lib/components/badge-detail-view/badge-detail-view.locs';\r\n\r\nconst dpRoot = 'Share|Badges';\r\n\r\nexport type CPBadgeDetailPageLocKeys =\r\n\t| 'CPBadgeDetailBackButton'\r\n\t| 'CPBadgeDetailShareButton'\r\n\t| 'CPBadgeDetailPageTitle';\r\n\r\nconst sharedLocDefs = {\r\n\tfeature: HubFeature.ShareCertMetricsBadging,\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n\tportal: 'CP' as LocPortal,\r\n};\r\n\r\nexport const cpBadgeDetailPageLocs: LocDefs = {\r\n\tCPBadgeDetailBackButton: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Button.Back',\r\n\t\tdefaultValue: 'Go back',\r\n\t\tdescription: 'The back button in the top right of the badge details screen',\r\n\t\tdisplayPath: `${dpRoot}|Back Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailShareButton: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Button.Share',\r\n\t\tdefaultValue: 'Share',\r\n\t\tdescription: 'Share menu button',\r\n\t\tdisplayPath: `${dpRoot}|Share Button`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailPageTitle: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Title.PageTitle',\r\n\t\tdefaultValue: 'Badges',\r\n\t\tdescription: 'Page and tab title for the share badges page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n};\r\n\r\nexport type BadgeDetailLocKeys =\r\n\t| 'CPBadgeDetailContentImageAltTag'\r\n\t| 'CPBadgeDetailContentVisit'\r\n\t| 'CPBadgeDetailLabelOrganization'\r\n\t| 'CPBadgeDetailLabelUrl'\r\n\t| 'CPBadgeDetailTitleBadgeDetails'\r\n\t| 'CPBadgeDetailLabelIssuedTo'\r\n\t| 'CPBadgeDetailLabelIssuer'\r\n\t| 'CPBadgeDetailLabelViews'\r\n\t| 'CPBadgeDetailLabelDateEarned'\r\n\t| 'CPBadgeDetailLabelLastAdjustmentDate'\r\n\t| 'CPBadgeDetailLabelValidThrough'\r\n\t| 'CPBadgeDetailLabelCriteria'\r\n\t| 'CPBadgeDetailLabelDescription';\r\n\r\nexport const cpBadgeDetailLocs: LocDefs = {\r\n\tCPBadgeDetailContentImageAltTag: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.ImageInfo.BadgeAltTag',\r\n\t\tdefaultValue: 'Badge logo',\r\n\t\tdescription: 'Badge image text used for accessibility',\r\n\t\tdisplayPath: `${dpRoot}|Issuer Details`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelDescription: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.Description',\r\n\t\tdefaultValue: 'Description',\r\n\t\tdescription: 'Label for the description field',\r\n\t\tdisplayPath: `${dpRoot}|Description`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelDateEarned: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.DateEarned',\r\n\t\tdefaultValue: 'Date Earned',\r\n\t\tdescription: 'Label for the active date field',\r\n\t\tdisplayPath: `${dpRoot}|Date Earned`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelIssuedTo: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.IssuedTo',\r\n\t\tdefaultValue: 'Issued To',\r\n\t\tdescription: 'Label for the issued to field',\r\n\t\tdisplayPath: `${dpRoot}|Issued To`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelIssuer: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.Issuer',\r\n\t\tdefaultValue: 'Issuer Details',\r\n\t\tdescription: 'Label for the issuers field',\r\n\t\tdisplayPath: `${dpRoot}|Issuer`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelLastAdjustmentDate: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.LastAdjustmentDate',\r\n\t\tdefaultValue: 'Last Extension Date',\r\n\t\tdescription: 'Label for the last adjustment date',\r\n\t\tdisplayPath: `${dpRoot}|Last Extension Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelValidThrough: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.FieldLabel.ValidThrough',\r\n\t\tdefaultValue: 'Valid Through',\r\n\t\tdescription: 'Label for the valid through field',\r\n\t\tdisplayPath: `${dpRoot}|Valid Through`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailTitleBadgeDetails: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Public.Badge.Title.PageTitle',\r\n\t\tdefaultValue: 'Badge',\r\n\t\tdescription: 'Page title for the badge sharing page.',\r\n\t\tdisplayPath: `${dpRoot}|Page Title`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n\tCPBadgeDetailLabelOrganization: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.Organization',\r\n\t\tdefaultValue: 'Issuer',\r\n\t\tdescription: 'The field label for the issuing organization',\r\n\t\tdisplayPath: `${dpRoot}|Organization`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n\tCPBadgeDetailLabelUrl: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.Url',\r\n\t\tdefaultValue: 'URL',\r\n\t\tdescription: 'The field label for the url to the issuing organization',\r\n\t\tdisplayPath: `${dpRoot}|URL`,\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n\tCPBadgeDetailContentVisit: {\r\n\t\tdefaultValue: 'Visit',\r\n\t\tdescription: 'Content shown for visiting a different page',\r\n\t\tdisplayPath: `${dpRoot}|Visit`,\r\n\t\tdisplayType: 'Content',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelViews: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.ViewCount',\r\n\t\tdefaultValue: 'Views',\r\n\t\tdisplayPath: `${dpRoot}|Views`,\r\n\t\tdescription: 'The field label for the number of badge views',\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPBadgeDetailLabelCriteria: {\r\n\t\tlegacyName: 'Share.CertMetricsBadging/Share.Badges.Details.FieldLabel.Criteria',\r\n\t\tdefaultValue: 'Criteria',\r\n\t\tdisplayPath: `${dpRoot}|Criteria`,\r\n\t\tdescription:\r\n\t\t\t'The field label for the criteria url. This url will link to the page that provides the criteria for obtaining the badge',\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n};\r\nexport const BADGE_DETAIL_LOC_KEYS = MapLocKeys(cpBadgeDetailLocs);\r\nexport const LOC_KEYS = MapLocKeys(cpBadgeDetailPageLocs);\r\n\r\nexport const mapBadgeDetailLocs: BadgeDetailViewLocs = {\r\n\tBadgeDetailViewContentImageAltTag: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailContentImageAltTag,\r\n\tBadgeDetailViewContentVisit: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailContentVisit,\r\n\tBadgeDetailViewLabelOrganization: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelOrganization,\r\n\tBadgeDetailViewLabelUrl: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelUrl,\r\n\tBadgeDetailViewTitleBadgeDetails: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailTitleBadgeDetails,\r\n\tBadgeDetailViewLabelIssuedTo: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelIssuedTo,\r\n\tBadgeDetailViewLabelIssuer: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelIssuer,\r\n\tBadgeDetailViewLabelViews: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelViews,\r\n\tBadgeDetailViewLabelDateEarned: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelDateEarned,\r\n\tBadgeDetailViewLabelLastAdjustmentDate:\r\n\t\tBADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelLastAdjustmentDate,\r\n\tBadgeDetailViewLabelValidThrough: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelValidThrough,\r\n\tBadgeDetailViewLabelCriteria: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelCriteria,\r\n\tBadgeDetailViewLabelDescription: BADGE_DETAIL_LOC_KEYS.CPBadgeDetailLabelDescription,\r\n};\r\n","import { cpBadgeDetailLocs, cpBadgeDetailPageLocs } from './badge-detail/badge-detail.locs';\n\nexport const shareModuleLocs = {\n\t...cpBadgeDetailPageLocs,\n\t...cpBadgeDetailLocs,\n};\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPSSOEgressAuthLoc = 'CPSSOEgressAuthorizationOIDC';\r\n\r\nexport const cpSSOAuthLocs: LocDefs = {\r\n\tCPSSOEgressAuthorizationOIDC: {\r\n\t\tdefaultValue: 'Authorizing',\r\n\t\tdescription: 'Page title displayed while loading on the SSO egress authorization page',\r\n\t\tdisplayPath: `SSO|Egress|OIDC Authorization Loading`,\r\n\t\tdisplayType: 'Title',\r\n\t\thtmlAllowed: false,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressOidcEgress,\r\n\t\tshared: false,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpSSOAuthLocs);\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPTableDataEmptyLoc = 'CPTableDataEmptyContent';\r\n\r\nexport const cpTableDataEmptyLocs: LocDefs = {\r\n\tCPTableDataEmptyContent: {\r\n\t\tdefaultValue: 'No data to show',\r\n\t\tdescription: 'Text displayed when the data table or grid has no data to display',\r\n\t\tdisplayPath: 'Data View|No Data Found',\r\n\t\tdisplayType: 'Content',\r\n\t\tshared: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpTableDataEmptyLocs);\r\nexport type CPTableDataEmptyLocType = LocMap;\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPTableDataFilterLoc =\r\n\t| 'CPTableDataHideFiltersTooltip'\r\n\t| 'CPTableDataShowFiltersTooltip'\r\n\t| 'CPTableDataClearFiltersTooltip'\r\n\t| 'CPTableDataSearchLabel';\r\n\r\nexport const cpTableDataFilterLocs: LocDefs = {\r\n\tCPTableDataHideFiltersTooltip: {\r\n\t\tdefaultValue: 'Hide filterable fields',\r\n\t\tdescription: 'Assistive text displayed on the toggle to hide filterable fields',\r\n\t\tdisplayPath: 'Data View|Hide Filterable Fields',\r\n\t\tdisplayType: 'Content',\r\n\t\tshared: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n\tCPTableDataShowFiltersTooltip: {\r\n\t\tdefaultValue: 'Show filterable fields',\r\n\t\tdescription: 'Assistive text displayed on the toggle to show filterable fields',\r\n\t\tdisplayPath: 'Data View|Show Filterable Fields',\r\n\t\tdisplayType: 'Content',\r\n\t\tshared: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n\tCPTableDataClearFiltersTooltip: {\r\n\t\tdefaultValue: 'Clear',\r\n\t\tdescription: 'Assistive text displayed on the clear filters button',\r\n\t\tdisplayPath: 'Data View|Clear Filters',\r\n\t\tdisplayType: 'Content',\r\n\t\tshared: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n\tCPTableDataSearchLabel: {\r\n\t\tdefaultValue: 'Search',\r\n\t\tdescription: 'Default label for the search field',\r\n\t\tdisplayPath: 'Data View|Search Field Label',\r\n\t\tdisplayType: 'Label',\r\n\t\tshared: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpTableDataFilterLocs);\r\nexport type CPTableDataFilterLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst sharedProps: Pick = {\r\n\thtmlAllowed: false,\r\n\tshared: true,\r\n\tfeature: HubFeature.Core,\r\n\tportal: 'SP',\r\n};\r\n\r\nexport type CPTableDataPaginationLoc =\r\n\t| 'CPTableDataPaginationLabel'\r\n\t| 'CPTableDataPaginationLabelOptions'\r\n\t| 'CPTableDataPaginationLabelFirstPage'\r\n\t| 'CPTableDataPaginationLabelLastPage'\r\n\t| 'CPTableDataPaginationLabelNextPage'\r\n\t| 'CPTableDataPaginationLabelPreviousPage';\r\n\r\nexport const cpTableDataPaginationLocs: LocDefs = {\r\n\tCPTableDataPaginationLabel: {\r\n\t\tdefaultValue: 'Pagination',\r\n\t\tdescription: 'Assistive label for the data pagination controls',\r\n\t\tdisplayPath: 'Data View|Pagination Label',\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPTableDataPaginationLabelOptions: {\r\n\t\tdefaultValue: 'Items per page:',\r\n\t\tdescription: 'Label for the pagination options menu.',\r\n\t\tdisplayPath: 'Data View|Pagination Options',\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Core/System.Table.Label.PaginationOptions',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPTableDataPaginationLabelFirstPage: {\r\n\t\tdefaultValue: 'First Page',\r\n\t\tdescription: 'Label for the pagination first page button.',\r\n\t\tdisplayPath: 'Data View|Pagination First Page',\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Core/System.Table.Button.PaginationFirstPage',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPTableDataPaginationLabelLastPage: {\r\n\t\tdefaultValue: 'Last Page',\r\n\t\tdescription: 'Label for the pagination last page button.',\r\n\t\tdisplayPath: 'Data View|Pagination Last Page',\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Core/System.Table.Button.PaginationLastPage',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPTableDataPaginationLabelNextPage: {\r\n\t\tdefaultValue: 'Next Page',\r\n\t\tdescription: 'Label for the pagination next page button.',\r\n\t\tdisplayPath: 'Data View|Pagination Next Page',\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Core/System.Table.Button.PaginationNextPage',\r\n\t\t...sharedProps,\r\n\t},\r\n\tCPTableDataPaginationLabelPreviousPage: {\r\n\t\tdefaultValue: 'Previous Page',\r\n\t\tdescription: 'Label for the pagination previous page button.',\r\n\t\tdisplayPath: 'Data View|Pagination Previous Page',\r\n\t\tdisplayType: 'Label',\r\n\t\tlegacyName: 'Core/System.Table.Button.PaginationPreviousPage',\r\n\t\t...sharedProps,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpTableDataPaginationLocs);\r\nexport type CPTableDataPaginationLocType = LocMap;\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPTableDataViewToggleLoc = 'CPTableDataViewToggleGridTooltip' | 'CPTableDataViewToggleTableTooltip';\r\n\r\nexport const cpTableDataViewToggleLocs: LocDefs = {\r\n\tCPTableDataViewToggleGridTooltip: {\r\n\t\tdefaultValue: 'View as a grid',\r\n\t\tdescription: 'Assistive text displayed on the view as grid button',\r\n\t\tdisplayPath: 'Data View|Toggle to Grid',\r\n\t\tdisplayType: 'Content',\r\n\t\tshared: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n\tCPTableDataViewToggleTableTooltip: {\r\n\t\tdefaultValue: 'View as a table',\r\n\t\tdescription: 'Assistive text displayed on the view as table button',\r\n\t\tdisplayPath: 'Data View|Toggle to Table',\r\n\t\tdisplayType: 'Content',\r\n\t\tshared: true,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpTableDataViewToggleLocs);\r\nexport type CPTableDataViewToggleLocType = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Login|Banned Landing Page`;\r\n\r\nexport type CPBannedLandingPageLocs = 'CPBannedLandingPageTitle' | 'CPBannedLandingPageDescription';\r\n\r\nexport const cpBannedLandingPageLocs: LocDefs = {\r\n\tCPBannedLandingPageTitle: {\r\n\t\tdefaultValue: 'Account Banned',\r\n\t\tdescription: 'Title for dashboard page of candidates with banned account',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccessBannedLandingPage,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPBannedLandingPageDescription: {\r\n\t\tdefaultValue: `

Your account has been banned due to anomalous activity. If you have any questions, please contact support.

`,\r\n\t\tdescription: 'Description for dashboard page of candidates with banned account',\r\n\t\tdisplayPath: `${dpRoot}|Page Description`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccessBannedLandingPage,\r\n\t\thtmlAllowed: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpBannedLandingPageLocs);\r\nexport type CPBannedLandingPageLocKeys = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Home|Dashboard|Appointments|`;\r\n\r\nexport type CpAppointmentCardLoc =\r\n\t| 'CPDashboardAppointmentsCardLabelDate'\r\n\t| 'CPDashboardAppointmentsCardContentEdit'\r\n\t| 'CPDashboardAppointmentsCardButtonReschedule'\r\n\t| 'CPDashboardAppointmentsCardButtonCancel';\r\n\r\nexport const appointmentCardLocs: LocDefs = {\r\n\tCPDashboardAppointmentsCardLabelDate: {\r\n\t\tdefaultValue: 'Appointment Date',\r\n\t\tdescription: 'Label for date',\r\n\t\tdisplayPath: `${dpRoot}|Date`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentsCardContentEdit: {\r\n\t\tdefaultValue: 'Edit Appointment',\r\n\t\tdescription: 'Tooltip for edit button',\r\n\t\tdisplayPath: `${dpRoot}|Edit Content`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentsCardButtonReschedule: {\r\n\t\tdefaultValue: 'Reschedule',\r\n\t\tdescription: 'Tooltip for reschedule button',\r\n\t\tdisplayPath: `${dpRoot}|Reschedule`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentsCardButtonCancel: {\r\n\t\tdefaultValue: 'Cancel',\r\n\t\tdescription: 'Tooltip for cancel button',\r\n\t\tdisplayPath: `${dpRoot}|Cancel`,\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(appointmentCardLocs);\r\nexport type CpAppointmentCardLocKeys = LocMap;\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = `Home|Dashboard|Appointments`;\r\n\r\nexport type CpDashboardAppointmentLoc =\r\n\t| 'CPDashboardAppointmentTitleAppointments'\r\n\t| 'CPDashboardAppointmentButtonViewAll'\r\n\t| 'CPDashboardAppointmentContentPreviousSection'\r\n\t| 'CPDashboardAppointmentContentNextSection'\r\n\t| 'CPDashboardAppointmentPageSectionTitle'\r\n\t| 'CPDashboardAppointmentSchedulingButton'\r\n\t| 'CPDashboardAppointmentCustomContent';\r\n\r\nexport const cpDashboardAppointmentLocs: LocDefs = {\r\n\tCPDashboardAppointmentTitleAppointments: {\r\n\t\tdefaultValue: 'Appointments',\r\n\t\tdescription: 'Title for the appointments section',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentButtonViewAll: {\r\n\t\tdefaultValue: 'View All',\r\n\t\tdescription: 'Button to view all appointments',\r\n\t\tdisplayPath: `${dpRoot}|View All`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentContentPreviousSection: {\r\n\t\tdefaultValue: 'Previous Appointments Section',\r\n\t\tdescription: 'Button to view previous appointments',\r\n\t\tdisplayPath: `${dpRoot}|View Previous`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentContentNextSection: {\r\n\t\tdefaultValue: 'Next Appointments Section',\r\n\t\tdescription: 'Button to view next appointments',\r\n\t\tdisplayPath: `${dpRoot}|View Next`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentPageSectionTitle: {\r\n\t\tdefaultValue: 'Upcoming Appointments',\r\n\t\tdescription: 'Title for the appointments page section',\r\n\t\tdisplayPath: `${dpRoot}|Page Section|Title`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentSchedulingButton: {\r\n\t\tdefaultValue: 'Scheduling',\r\n\t\tdescription: 'Button to view the scheduling page',\r\n\t\tdisplayPath: `${dpRoot}|Scheduling Button`,\r\n\t\tdisplayType: 'Label',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n\tCPDashboardAppointmentCustomContent: {\r\n\t\tdefaultValue: '',\r\n\t\tdescription: 'Custom content for the appointments section on the candidate dashboard.',\r\n\t\tdisplayPath: `${dpRoot}|Custom Appointment Instructions`,\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.ExamAppointmentsExamAppointmentsDashboardUpcomingAppointments,\r\n\t\thtmlAllowed: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpDashboardAppointmentLocs);\r\nexport type CpDashboardAppointmentLocKeys = LocMap;\r\n","import { Component } from '@angular/core';\nimport { AGREEMENT_LOC } from '@cm/core/localization';\n\n@Component({\n selector: 'cp-latest-agreement-modal',\n templateUrl: './latest-agreement-modal.component.html',\n styleUrls: ['./latest-agreement-modal.component.scss'],\n standalone: false\n})\nexport class CpLatestAgreementModalComponent {\n\tagreementLoc = AGREEMENT_LOC.SPCredentialAgreement;\n}\n","

\n\t\n\t\tLatest Agreement\n\t\n

\n
\n\t

\n\t\t\n\t\t\t\n\t\t\n\t

\n
\n
\n\t\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CmAuthService, CmSettingsService } from '@ats/cm/core';\n\n@Component({\n selector: 'cp-logout',\n templateUrl: './logout.component.html',\n styleUrls: ['./logout.component.scss'],\n standalone: false\n})\nexport class CpLogoutComponent implements OnInit {\n\tconstructor(\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly router: Router,\n\t\tprivate readonly settings: CmSettingsService\n\t) {}\n\n\tngOnInit() {\n\t\tif (this.auth.getAuthToken()) {\n\t\t\tthis.auth.logout$();\n\t\t} else {\n\t\t\tthis.router.navigate(this.settings.route(['login']));\n\t\t}\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { LocalizedText } from '@ats/cm/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CpPageDescriptionService {\r\n\treadonly pageDescription$: Observable;\r\n\tprivate readonly pageDescriptionSubject = new BehaviorSubject(null);\r\n\r\n\tconstructor(private readonly router: Router, private readonly route: ActivatedRoute) {\r\n\t\tthis.pageDescription$ = this.pageDescriptionSubject.asObservable();\r\n\r\n\t\tthis.router.events\r\n\t\t\t.pipe(\r\n\t\t\t\tuntilDestroyed(this),\r\n\t\t\t\tfilter(nav => nav instanceof NavigationEnd)\r\n\t\t\t)\r\n\t\t\t.subscribe(() => this.handleNavEnd());\r\n\t}\r\n\r\n\tprivate handleNavEnd(): void {\r\n\t\tconst description = this.getRouteData(this.route.snapshot, 'description');\r\n\t\tthis.pageDescriptionSubject.next(description);\r\n\t}\r\n\r\n\tprivate getRouteData(route: ActivatedRouteSnapshot, key: string, currentValue: T = null): T {\r\n\t\tconst newValue = ((route.data || {}).page || {})[key] as T;\r\n\t\tif (newValue) {\r\n\t\t\tcurrentValue = newValue;\r\n\t\t}\r\n\t\tif (route.firstChild) {\r\n\t\t\tconst foundData = this.getRouteData(route.firstChild, key, currentValue);\r\n\t\t\tif (foundData) {\r\n\t\t\t\tcurrentValue = foundData;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn currentValue;\r\n\t}\r\n}\r\n","import { Injectable, TemplateRef } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CpPageActionService {\r\n\tactions$: Observable[]>;\r\n\r\n\tprivate readonly actions = new BehaviorSubject<{ [key: string]: TemplateRef }>({});\r\n\r\n\tconstructor() {\r\n\t\tthis.actions$ = this.actions.asObservable().pipe(map(action => Object.keys(action).map(key => action[key])));\r\n\t}\r\n\r\n\taddAction(key: string, tpl: TemplateRef): void {\r\n\t\tconst actions = this.actions.getValue();\r\n\t\tif (!actions[key]) {\r\n\t\t\tthis.actions.next({\r\n\t\t\t\t...actions,\r\n\t\t\t\t[key]: tpl,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tclearAction(keys: string | string[]): void {\r\n\t\tif (!Array.isArray(keys)) {\r\n\t\t\tkeys = [keys];\r\n\t\t}\r\n\t\tconst actions = this.actions.getValue();\r\n\t\tkeys.forEach(key => {\r\n\t\t\tif (Object.hasOwnProperty.call(actions, key)) {\r\n\t\t\t\tdelete actions[key];\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.actions.next(actions);\r\n\t}\r\n}\r\n","\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n","import { ChangeDetectionStrategy, Component, OnInit, TemplateRef } from '@angular/core';\nimport { LocalizedText } from '@ats/cm/core';\nimport { LocalizationService } from '@cm/core/localization';\nimport { LocalizationViewService } from '@cm/ui/localize';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CpPageActionService } from '../../services/page-action.service';\nimport { CpPageDescriptionService } from '../../services/page-description.service';\n\n@Component({\n selector: 'cp-page-description',\n templateUrl: './page-description.component.html',\n styleUrls: ['./page-description.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CpPageDescriptionComponent implements OnInit {\n\tpageDescription$: Observable;\n\tpageActions$: Observable[]>;\n\tisLocalizing$: Observable;\n\thasActions$: Observable;\n\thasValue$: Observable;\n\n\tconstructor(\n\t\tprivate locService: LocalizationService,\n\t\tprivate locViewService: LocalizationViewService,\n\t\tprivate pageDescriptionService: CpPageDescriptionService,\n\t\tprivate readonly pageActionService: CpPageActionService\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis.pageDescription$ = this.pageDescriptionService.pageDescription$;\n\t\tthis.pageActions$ = this.pageActionService.actions$;\n\t\tthis.isLocalizing$ = this.locViewService.inlineEnabled$;\n\n\t\tthis.hasActions$ = this.pageActions$.pipe(map(actions => (actions || []).length > 0));\n\n\t\tthis.hasValue$ = this.pageDescriptionService.pageDescription$.pipe(\n\t\t\tswitchMap(localization => {\n\t\t\t\tif (!localization) {\n\t\t\t\t\treturn of(false);\n\t\t\t\t} else if (typeof localization !== 'string') {\n\t\t\t\t\tif (localization.defaultValue) {\n\t\t\t\t\t\treturn of(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this.locService.findValue$(localization.key).pipe(map(Boolean));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn this.locService.findValue$(localization).pipe(map(Boolean));\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n}\n","import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'cp-view-footer',\n templateUrl: './view-footer.component.html',\n styleUrls: ['./view-footer.component.scss'],\n standalone: false\n})\nexport class CpViewFooterComponent {\n\treadonly client$: Observable;\n\treadonly footerDateCurrentYear = new Date().getFullYear();\n\n\tconstructor() {}\n}\n","
\n\t\n\t© 2019–{{ footerDateCurrentYear }} Alpine Testing Inc.\n\t\n
\n","
\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\n\t\t\n\t\t\n\n\t\t

\n\t\t\t\n\t\t

\n\n\t\t
\n\t\t\t\n\n\t\t\t\n\t\t
\n\t
\n\n\t

\n\t\t\n\t

\n
\n\n\n\t\n\t 1\">\n\t\t\n\t\n\t\n\t\n\n\n\n\t\n\n\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\n\n","import { Location } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { HubFeature } from '@ats/api/cm';\nimport { AppUser, CmAuthService, CmCulture, CmLocalizationService, LocalizedText } from '@ats/cm/core';\nimport { CmNavigationService } from '@ats/cm/navigation';\nimport { CmPageHeaderService, CmUIService } from '@ats/cm/ui';\nimport { CpUserService } from '@ats/cp/core';\nimport { AtsResponsiveService } from '@ats/utility';\nimport { SettingsService } from '@cm/core/settings';\nimport { environment } from '@cp-env/environment';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, first, map, switchMap, take, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'cp-view-header',\n templateUrl: './view-header.component.html',\n styleUrls: ['./view-header.component.scss'],\n standalone: false\n})\nexport class CpViewHeaderComponent {\n\treadonly hideUI$: Observable;\n\treadonly pageHeading$: Observable;\n\n\treadonly isProd = environment.production;\n\treadonly user$: Observable;\n\treadonly impersonating$: Observable;\n\treadonly culture$: Observable;\n\treadonly cultures$: Observable;\n\treadonly navState$: Observable;\n\treadonly navDisabled$: Observable;\n\treadonly isMobile$: Observable;\n\treadonly showUsername$: Observable;\n\n\tconstructor(\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly location: Location,\n\t\tprivate readonly navigation: CmNavigationService,\n\t\tprivate readonly localization: CmLocalizationService,\n\t\tprivate readonly headingService: CmPageHeaderService,\n\t\tprivate readonly settings: SettingsService,\n\t\tprivate readonly user: CpUserService,\n\t\tprivate readonly ui: CmUIService,\n\t\tprivate readonly responsiveService: AtsResponsiveService\n\t) {\n\t\tthis.hideUI$ = this.ui.hideUI$;\n\t\tthis.user$ = this.user.user$;\n\t\tthis.culture$ = this.settings.culture$;\n\t\tthis.cultures$ = this.settings.existingCultures$;\n\t\tthis.navState$ = this.navigation.navVisible$;\n\t\tthis.impersonating$ = this.user.impersonating$;\n\t\tthis.pageHeading$ = this.headingService.heading$.pipe(\n\t\t\tmap(heading => (typeof heading === 'string' ? heading : heading?.key))\n\t\t);\n\t\tthis.navDisabled$ = this.navigation.navDisabled$;\n\t\tthis.isMobile$ = this.responsiveService.breakpoints$.pipe(map(breakpoints => breakpoints.mobile));\n\t\tthis.showUsername$ = this.auth.guard$.pipe(\n\t\t\tmap(guard => guard.reset().everyFeature([HubFeature.CandidateAccessCmIdCpNavigation]).all)\n\t\t);\n\t}\n\n\tgoBack(): void {\n\t\tthis.location.back();\n\t}\n\n\ttoggleNav(): void {\n\t\tthis.navigation.toggleNav();\n\t}\n\n\tselectCulture(culture: CmCulture): void {\n\t\tconst paths = window.location.pathname.split('/');\n\t\tif (paths.length > 2) {\n\t\t\tpaths[2] = culture.code;\n\t\t\tlocation.href = this.settings.cpUrl + paths.join('/');\n\t\t}\n\t}\n\n\tlogout(): void {\n\t\tthis.user.clearUser();\n\t}\n\n\tunimpersonate(): void {\n\t\tthis.user$\n\t\t\t.pipe(\n\t\t\t\tfirst(),\n\t\t\t\tmap(user => user.cmcId),\n\t\t\t\tswitchMap(cmcId => this.user.unimpersonate().pipe(map(token => ({ cmcId, token })))),\n\t\t\t\twithLatestFrom(this.settings.culture$),\n\t\t\t\twithLatestFrom(this.settings.client$),\n\t\t\t\tmap(([[{ cmcId, token }, culture], client]) => ({\n\t\t\t\t\tcmcId,\n\t\t\t\t\ttoken,\n\t\t\t\t\tclient: client,\n\t\t\t\t\tlanguage: culture.code,\n\t\t\t\t})),\n\t\t\t\tcatchError(err => {\n\t\t\t\t\tthis.localization.popLocalizedSystemError('unimpersonate-error');\n\t\t\t\t\treturn throwError(err);\n\t\t\t\t}),\n\t\t\t\ttake(1)\n\t\t\t)\n\t\t\t.subscribe(({ cmcId, token, client, language }) => {\n\t\t\t\tif (cmcId) {\n\t\t\t\t\twindow.location.href = `${environment.spUrl}/${client}/${language}/login/unimpersonate?t=${token}&candidate=${cmcId}`;\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n","import { HubFeature, HubPermission } from '@ats/api/cm';\r\nimport { Guard } from '@ats/cm/core';\r\nimport { NavFilter } from './nav-filter.interface';\r\n\r\nexport const filterNav: NavFilter = {\r\n\t['/schedule']: (guard: Guard) =>\r\n\t\tguard\r\n\t\t\t.reset()\r\n\t\t\t.someFeatures([\r\n\t\t\t\tHubFeature.ExamScheduling,\r\n\t\t\t\tHubFeature.ExamAppointments,\r\n\t\t\t\tHubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t\t\t\tHubFeature.CandidateAccessIntegrationEgressKryterion,\r\n\t\t\t\tHubFeature.CandidateAccessIntegrationEgressTestWise,\r\n\t\t\t]).any,\r\n\t['/schedule/sso/kryterion']: (guard: Guard) =>\r\n\t\tguard\r\n\t\t\t.reset()\r\n\t\t\t.everyFeature([\r\n\t\t\t\tHubFeature.CandidateAccessIntegrationEgressKryterion,\r\n\t\t\t\tHubFeature.CandidateAccessIntegrationEgressKryterionScheduling,\r\n\t\t\t]).all,\r\n\t['/profile/addresses']: (guard: Guard) =>\r\n\t\tguard\r\n\t\t\t.reset()\r\n\t\t\t.everyFeature([HubFeature.CandidateProfileAddresses])\r\n\t\t\t.someFeatures([\r\n\t\t\t\tHubFeature.CandidateProfileAddressesLocalized,\r\n\t\t\t\tHubFeature.CandidateProfileAddressesPrimary,\r\n\t\t\t\tHubFeature.CandidateProfileAddressesSecondary,\r\n\t\t\t]).all,\r\n\t['/profile/options']: (guard: Guard) =>\r\n\t\tguard\r\n\t\t\t.reset()\r\n\t\t\t.someFeatures([\r\n\t\t\t\tHubFeature.CandidatePreferencesDisableEmails,\r\n\t\t\t\tHubFeature.CandidatePreferencesCandidateEmailLanguage,\r\n\t\t\t]).all,\r\n\t['/certs/ecert-downloads']: (guard: Guard) =>\r\n\t\tguard.reset().everyFeature([HubFeature.CredentialElectronicCertificate]).all,\r\n\t['/profile/merge']: (guard: Guard) =>\r\n\t\tguard.reset().everyFeature([HubFeature.MergeCandidatesCandidateSelfMerge]).all,\r\n\t['/benefits/program']: (guard: Guard) => guard.reset().everyFeature([HubFeature.Benefit]).all,\r\n\r\n\t['/achievements/logo']: (guard: Guard) =>\r\n\t\tguard.reset().everyFeature([HubFeature.CredentialAchievementsLogoDownload]).all,\r\n\t['/achievements/status']: (guard: Guard) =>\r\n\t\tguard.reset().everyFeature([HubFeature.CredentialAchievements]).all,\r\n\t['/share/sso/accredible']: (guard: Guard) =>\r\n\t\tguard\r\n\t\t\t.reset()\r\n\t\t\t.everyFeature([HubFeature.ShareAccredibleBadging, HubFeature.ShareAccredibleBadgingSso])\r\n\t\t\t.everyPermission([HubPermission.AccredibleBadgingCatalogView]).all,\r\n\t['/home/announcements']: (guard: Guard) =>\r\n\t\tguard.reset().everyFeature([HubFeature.AnnouncementPage]).all,\r\n\t['/store']: (guard: Guard) =>\r\n\t\tguard\r\n\t\t\t.reset()\r\n\t\t\t.someFeatures([HubFeature.Ecommerce, HubFeature.EcommerceShowTransactionHistory]).all,\r\n\t['/store/history']: (guard: Guard) =>\r\n\t\tguard.reset().everyFeature([HubFeature.EcommerceShowTransactionHistory]).all,\r\n};\r\n","\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Navigation } from '@ats/api/cm';\nimport { CmAuthService } from '@ats/cm/core';\nimport { NavNode } from '@ats/cm/navigation';\nimport { AtsResponsiveService, atsSort } from '@ats/utility';\nimport { SettingsService } from '@cm/core/settings';\nimport { Apollo, gql } from 'apollo-angular';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap } from 'rxjs/operators';\nimport { filterNav } from '../../models/filter-nav';\nimport { LOC_KEYS } from './navigation.locs';\n\nconst NAV_QUERY = gql`\n\tquery navigation($request: NavigationListRequestVm) {\n\t\tnavigation(request: $request) {\n\t\t\tid\n\t\t\tparentId\n\t\t\tlabel\n\t\t\turl\n\t\t\tcultureInfoName\n\t\t\tdisplayOrder\n\t\t}\n\t}\n`;\n\n@Component({\n selector: 'cp-navigation',\n templateUrl: './navigation.component.html',\n styleUrls: ['./navigation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CpNavigationComponent {\n\treadonly NavNodes$: Observable;\n\tisMobile$: Observable;\n\treadonly isClient$: Observable<{ cisco?: boolean; amazon?: boolean }>;\n\tlocs = LOC_KEYS;\n\n\tconstructor(\n\t\tprivate readonly settings: SettingsService,\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly router: Router,\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly responsiveService: AtsResponsiveService\n\t) {\n\t\tthis.NavNodes$ = this.getNavNodes$();\n\t\tthis.isMobile$ = this.responsiveService.breakpoints$.pipe(\n\t\t\tmap(breakpoints => breakpoints.mobile)\n\t\t);\n\t\tthis.isClient$ = this.settings.client$.pipe(\n\t\t\tmap(client => ({\n\t\t\t\tcisco: client === 'cisco',\n\t\t\t\tamazon: client === 'amazon',\n\t\t\t}))\n\t\t);\n\t}\n\n\tgetNavParents(items: NavNode[]): NavNode[] {\n\t\treturn items.filter(item => !item.parentId);\n\t}\n\n\tgetNavChildren(items: NavNode[], parent: number): NavNode[] {\n\t\treturn items.filter(item => item.parentId === parent);\n\t}\n\n\tisActiveUrl(url: string): boolean {\n\t\tconst activeUrl = '/' + this.settings.routeWithContext([url]).join('/');\n\t\treturn this.router.isActive(activeUrl, {\n\t\t\tpaths: 'exact',\n\t\t\tqueryParams: 'ignored',\n\t\t\tfragment: 'exact',\n\t\t\tmatrixParams: 'ignored',\n\t\t});\n\t}\n\n\tprivate getNavNodes$(): Observable {\n\t\tconst url$: Observable = this.router.events.pipe(\n\t\t\tfilter(event => event instanceof NavigationEnd),\n\t\t\tmap((event: NavigationEnd) => event.url),\n\t\t\tstartWith(this.router.url),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\n\t\treturn this.auth.token$.pipe(\n\t\t\tfilter(token => !!token),\n\t\t\tswitchMap(() => combineLatest([this.fetchNav$(), url$, this.auth.guard$])),\n\t\t\tmap(([nav, url, guard]) =>\n\t\t\t\tnav\n\t\t\t\t\t.filter(node => {\n\t\t\t\t\t\treturn Object.prototype.hasOwnProperty.call(filterNav, node.url)\n\t\t\t\t\t\t\t? filterNav[node.url](guard)\n\t\t\t\t\t\t\t: true;\n\t\t\t\t\t})\n\t\t\t\t\t.map(\n\t\t\t\t\t\tnode =>\n\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\t...node,\n\t\t\t\t\t\t\t\turl: this.stripURLSlash(node.url),\n\t\t\t\t\t\t\t\texpanded: this.hasActiveChildren(node.url),\n\t\t\t\t\t\t\t\tdisplayOrder: node.displayOrder ? +node.displayOrder : 9999999999,\n\t\t\t\t\t\t\t}) as NavNode\n\t\t\t\t\t)\n\t\t\t\t\t.filter(node => node.label !== '' && node.label !== null)\n\t\t\t),\n\t\t\tatsSort('displayOrder')\n\t\t);\n\t}\n\n\tprivate hasActiveChildren(url: string): boolean {\n\t\tconst routedUrl = '/' + this.settings.routeWithContext([this.stripURLSlash(url)]).join('/');\n\t\tconst hasActiveChildren = this.router.isActive(routedUrl, {\n\t\t\tpaths: 'subset',\n\t\t\tqueryParams: 'ignored',\n\t\t\tfragment: 'exact',\n\t\t\tmatrixParams: 'ignored',\n\t\t});\n\n\t\treturn hasActiveChildren;\n\t}\n\n\tprivate fetchNav$(): Observable {\n\t\treturn this.settings.culture$.pipe(\n\t\t\tswitchMap(\n\t\t\t\tculture =>\n\t\t\t\t\tthis.apollo.watchQuery<{ navigation: Navigation[] }>({\n\t\t\t\t\t\tquery: NAV_QUERY,\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\ttype: this.settings.portal,\n\t\t\t\t\t\t\t\tculture: culture.code,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}).valueChanges\n\t\t\t),\n\t\t\tmap(results => (results.data || {}).navigation || [])\n\t\t);\n\t}\n\n\tprivate stripURLSlash(URL: string): string {\n\t\treturn URL ? URL.slice(1, URL.length) : '';\n\t}\n}\n","
\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t\tLocalize\n\t\t\t\n\t\t\n\t\n
\n","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, Renderer2 } from '@angular/core';\nimport { CmLocalizationService } from '@ats/cm/core';\nimport { CpUserService } from '@ats/cp/core';\nimport { ClientService } from '@cm/core/client';\nimport { LocalizationViewService } from '@cm/ui/localize';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n\tselector: 'cp-view-sidebar',\n\ttemplateUrl: './view-sidebar.component.html',\n\tstyleUrls: ['./view-sidebar.component.scss'],\n\tstandalone: false,\n})\nexport class CpViewSidebarComponent {\n\treadonly logo$: Observable = this.clientService.theme$.pipe(map(theme => theme.logo));\n\treadonly canLocalize$: Observable;\n\treadonly isLocalizing$: Observable;\n\n\tconstructor(\n\t\tprivate readonly locView: LocalizationViewService,\n\t\tprivate readonly legacyLocService: CmLocalizationService,\n\t\tprivate readonly userService: CpUserService,\n\t\tprivate readonly clientService: ClientService,\n\t\tprivate readonly renderer: Renderer2,\n\t\t@Inject(DOCUMENT) private readonly doc: Document\n\t) {\n\t\tthis.isLocalizing$ = this.locView.inlineEnabled$;\n\t\tthis.canLocalize$ = this.userService.canLocalize$;\n\t}\n\n\ttoggleLocalization(): void {\n\t\tconst isLocalizingClass = 'is-localizing';\n\t\tthis.doc.body.classList.contains(isLocalizingClass)\n\t\t\t? this.renderer.removeClass(this.doc.body, isLocalizingClass)\n\t\t\t: this.renderer.addClass(this.doc.body, isLocalizingClass);\n\t\tthis.locView.toggleInline();\n\t\tthis.legacyLocService.toggleLocalization();\n\t}\n}\n","
\n\t\n
\n
\n\t
\n\t\t{{ environment }}\n\t
\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\n\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n\n\n\n\n\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport { Component, DestroyRef, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n\tAppUser,\n\tCmCookiePolicyService,\n\tCmCulture,\n\tCmLocalizationService,\n\tCmSettingsService,\n\tCmTimeoutService,\n\tPublicLocalization,\n} from '@ats/cm/core';\nimport { CmNavigationService } from '@ats/cm/navigation';\nimport { CmCookieModalComponent, CmLocalizeModalComponent, CmUIService } from '@ats/cm/ui';\nimport { CpUserService } from '@ats/cp/core';\nimport { AtsResponsiveService } from '@ats/utility';\nimport { LocalizationViewService } from '@cm/ui/localize';\nimport { environment } from '@cp-env/environment';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\n\n@Component({\n\tselector: 'cp-view',\n\ttemplateUrl: './view.component.html',\n\tstyleUrls: ['./view.component.scss'],\n\tstandalone: false,\n})\nexport class CpViewComponent implements OnInit {\n\tlocDialog: MatDialogRef;\n\treadonly authenticated$: Observable;\n\treadonly user$: Observable;\n\treadonly navVisible$: Observable;\n\treadonly isFocused$: Observable;\n\treadonly hideUI$: Observable;\n\treadonly isLocal: boolean = false;\n\treadonly canLocalize$: Observable;\n\treadonly isLocalizing$ = this.locViewService.inlineEnabled$;\n\treadonly footerDateCurrentYear = new Date().getFullYear();\n\treadonly environment: 'local' | 'beta' | 'prod';\n\treadonly isFirefox: boolean;\n\treadonly cultures$: Observable;\n\tprivate readonly activeLocalization$: Observable;\n\n\tconstructor(\n\t\tprivate readonly navService: CmNavigationService,\n\t\tprivate readonly dialog: MatDialog,\n\t\tprivate readonly router: Router,\n\t\tprivate readonly route: ActivatedRoute,\n\t\tprivate readonly responsiveService: AtsResponsiveService,\n\t\tprivate readonly ui: CmUIService,\n\t\tprivate readonly cookiePolicy: CmCookiePolicyService,\n\t\tprivate readonly user: CpUserService,\n\t\tprivate readonly announcer: LiveAnnouncer,\n\t\tprivate readonly platform: Platform,\n\t\tprivate readonly settings: CmSettingsService,\n\t\tprivate readonly legacyLocService: CmLocalizationService,\n\t\tprivate readonly locViewService: LocalizationViewService,\n\t\tprivate readonly timeoutService: CmTimeoutService,\n\t\tprivate readonly destroyRef: DestroyRef\n\t) {\n\t\tthis.isLocal = environment.local;\n\t\tthis.navVisible$ = this.navService.navVisible$;\n\t\tthis.user$ = this.user.user$;\n\t\tthis.authenticated$ = this.user.authenticated$;\n\t\tthis.isFocused$ = this.focus$();\n\t\tthis.canLocalize$ = this.user.canLocalize$;\n\n\t\tthis.hideUI$ = this.ui.hideUI$;\n\t\tthis.environment = this.setEnvironment();\n\t\tthis.cultures$ = this.settings.clientCultures$;\n\t\tthis.isFirefox = this.platform.FIREFOX;\n\t\tthis.activeLocalization$ = this.legacyLocService.activeLocalization$;\n\t\tthis.activeLocalization$.subscribe(loc => this.handleActiveLocalization(loc));\n\t}\n\n\tngOnInit() {\n\t\tthis.setupPolicyCookieModal();\n\t}\n\n\tfocusMainEl(): void {\n\t\tconst h1 = document.getElementById('main-content') as HTMLElement;\n\t\th1.focus();\n\t\tthis.locViewService.locService\n\t\t\t.findValue$('CandidateAccess/System.Global.Content.FocusedMainContent')\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(message => this.announcer.announce(message));\n\t}\n\n\ttoggleSidebar(): void {\n\t\tthis.navService.toggleNav();\n\t}\n\n\tselectCulture(culture: CmCulture): void {\n\t\tlet paths = [...this.route.snapshot.url.map(url => url.path)];\n\t\tpaths[1] = culture.code;\n\t\tthis.route.snapshot.children.forEach(child => {\n\t\t\tif (child.url) {\n\t\t\t\tpaths = [...paths, ...child.url.map(childUrl => childUrl.path)];\n\t\t\t}\n\t\t});\n\t\tthis.router.navigate(paths);\n\t}\n\n\tlogout(): void {\n\t\tthis.user.clearUser();\n\t}\n\n\tfocus$(): Observable {\n\t\treturn combineLatest([\n\t\t\tthis.responsiveService.breakpoints$,\n\t\t\tthis.navService.navVisible$,\n\t\t]).pipe(switchMap(([breakpoints, navVisible]) => of(breakpoints.mobile && navVisible)));\n\t}\n\n\ttoggleLocalization(): void {\n\t\tthis.legacyLocService.toggleLocalization();\n\t}\n\n\thandleActiveLocalization(localization?: PublicLocalization): void {\n\t\tif (this.locDialog) {\n\t\t\tthis.locDialog.close();\n\t\t}\n\n\t\tif (localization) {\n\t\t\tthis.locDialog = this.dialog.open(CmLocalizeModalComponent, {\n\t\t\t\tdata: { ...localization },\n\t\t\t});\n\n\t\t\tthis.locDialog\n\t\t\t\t.afterClosed()\n\t\t\t\t.pipe(take(1))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tthis.legacyLocService.triggerLocalization(null);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tprivate setupPolicyCookieModal(): void {\n\t\tthis.user$\n\t\t\t.pipe(\n\t\t\t\tfilter(user => !!user),\n\t\t\t\ttakeUntilDestroyed(this.destroyRef)\n\t\t\t)\n\t\t\t.subscribe(({ cmcId, isImpersonating }) => {\n\t\t\t\tif (!isImpersonating && !this.cookiePolicy.hasCookieBeenAccepted(cmcId)) {\n\t\t\t\t\tthis.dialog.open(CmCookieModalComponent, {\n\t\t\t\t\t\twidth: '80%',\n\t\t\t\t\t\tposition: { bottom: '61px' },\n\t\t\t\t\t\tariaLabelledBy: 'Cookie policy modal',\n\t\t\t\t\t\thasBackdrop: false,\n\t\t\t\t\t\tdata: { id: cmcId },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate setEnvironment(): 'local' | 'beta' | 'prod' {\n\t\tif (environment.local) {\n\t\t\treturn 'local';\n\t\t}\n\t\tif (environment.beta) {\n\t\t\treturn 'beta';\n\t\t}\n\t\treturn 'prod';\n\t}\n\n\tresetTimeout() {\n\t\tthis.timeoutService.resetCountdown();\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { CmLocalizePipe } from '@ats/cm/core';\r\nimport { AtsObject, atsSortFn } from '@ats/utility';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\r\nimport { CGConfig } from '../models/cg-config.interface';\r\nimport { CGFilter } from '../models/cg-filter.interface';\r\nimport { CGSort } from '../models/cg-sort.interface';\r\n\r\nconst enum CardGridActionTypes {\r\n\tSET_SEARCH_KEYS = 'Set card grid search keys',\r\n\tUPDATE_VISIBLE = 'Update card grid visible data',\r\n\tUPDATE_DATA = 'Update card grid dataset',\r\n\tUPDATE_SORT = 'Update card grid sorting',\r\n\tUPDATE_FILTER = 'Update card grid filter',\r\n\tUPDATE_SEARCH = 'Update card grid search',\r\n\tTOGGLE_LOADING = 'Update card grid loading indicator',\r\n}\r\n\r\ninterface CardGridAction {\r\n\treadonly type: CardGridActionTypes;\r\n\treadonly payload: any[] | CGSort | CGFilter | string;\r\n}\r\n\r\nclass CardGridState {\r\n\tdata: any[] = null;\r\n\tvisible: any[] = null;\r\n\tsort: CGSort = null;\r\n\tfilter: CGFilter = null;\r\n\tsearch: string = '';\r\n\tsearchKeys: string[] = [];\r\n\tloaders = [];\r\n}\r\n\r\nconst reduce = (state: CardGridState, action: CardGridAction) => {\r\n\tswitch (action.type) {\r\n\t\tcase CardGridActionTypes.UPDATE_DATA:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tdata: [...(action.payload as any[])].map(datum => ({ ...datum })),\r\n\t\t\t};\r\n\t\tcase CardGridActionTypes.SET_SEARCH_KEYS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsearchKeys: [...(action.payload as string[])],\r\n\t\t\t};\r\n\t\tcase CardGridActionTypes.UPDATE_VISIBLE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tvisible: [...(action.payload as any[]).map(datum => ({ ...datum }))],\r\n\t\t\t};\r\n\t\tcase CardGridActionTypes.UPDATE_FILTER:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tfilter: action.payload as CGFilter,\r\n\t\t\t};\r\n\t\tcase CardGridActionTypes.UPDATE_SORT:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsort: action.payload as CGSort,\r\n\t\t\t};\r\n\t\tcase CardGridActionTypes.UPDATE_SEARCH:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsearch: action.payload.toString(),\r\n\t\t\t};\r\n\t\tcase CardGridActionTypes.TOGGLE_LOADING:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tloaders: [...(action.payload as string[])],\r\n\t\t\t};\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n};\r\n\r\nconst EMPTY_SORT: CGSort = {\r\n\tlabel: 'Default',\r\n\tkey: '',\r\n\tdir: 'asc',\r\n};\r\n\r\nconst EMPTY_FILTER: CGFilter = {\r\n\tlabel: 'All',\r\n\tkey: '',\r\n\tvalue: '',\r\n};\r\n\r\n@Injectable()\r\nexport class CpCardGridService {\r\n\treadonly data$: Observable;\r\n\treadonly filter$: Observable;\r\n\treadonly sort$: Observable;\r\n\treadonly search$: Observable;\r\n\treadonly loading$: Observable;\r\n\treadonly visibilityChange$: Observable;\r\n\r\n\tprivate state = new CardGridState();\r\n\tprivate config$: Observable;\r\n\tprivate searchConfig$: Observable;\r\n\tprivate readonly dispatcher = new BehaviorSubject(this.state);\r\n\tprivate readonly dispatch = this.dispatcher.asObservable().pipe(filter(state => !!state.data && !!state.sort));\r\n\tprivate readonly visiblityChangeSubj = new Subject();\r\n\r\n\tconstructor(private localize: CmLocalizePipe) {\r\n\t\tthis.data$ = this.dispatch.pipe(\r\n\t\t\tmap(state => state.visible),\r\n\t\t\tfilter(data => !this.state.loaders.length && !!data)\r\n\t\t);\r\n\r\n\t\tthis.filter$ = this.dispatch.pipe(\r\n\t\t\tmap(state => state.filter),\r\n\t\t\tfilter(fltr => !!fltr)\r\n\t\t);\r\n\r\n\t\tthis.sort$ = this.dispatch.pipe(\r\n\t\t\tmap(state => state.sort),\r\n\t\t\tfilter(sort => !!sort)\r\n\t\t);\r\n\r\n\t\tthis.visibilityChange$ = this.visiblityChangeSubj.asObservable();\r\n\r\n\t\tthis.search$ = this.dispatch.pipe(map(state => state.search));\r\n\r\n\t\tthis.loading$ = this.dispatch.pipe(map(state => !!state.loaders.length));\r\n\t}\r\n\r\n\tconfig(config$: Observable, search$: Observable) {\r\n\t\tthis.watchForDataChanges();\r\n\t\tthis.config$ = config$;\r\n\r\n\t\tthis.config$.subscribe(({ data, searchKeys, filters, sorts }) => {\r\n\t\t\tthis.state.data = data.slice();\r\n\r\n\t\t\t// Set up the keys for searching\r\n\t\t\tif ((!this.state.searchKeys || !this.state.searchKeys.length) && searchKeys && searchKeys.length) {\r\n\t\t\t\tthis.state.searchKeys = searchKeys.slice();\r\n\t\t\t}\r\n\r\n\t\t\t// Set the default sort\r\n\t\t\tif (!this.state.sort) {\r\n\t\t\t\tlet defaultSort = sorts.find(sort => sort.default);\r\n\t\t\t\tif (!defaultSort && !!sorts.length) {\r\n\t\t\t\t\tdefaultSort = sorts[0];\r\n\t\t\t\t} else if (!defaultSort) {\r\n\t\t\t\t\tdefaultSort = {\r\n\t\t\t\t\t\t...EMPTY_SORT,\r\n\t\t\t\t\t\tlabel: this.localize.transform(\r\n\t\t\t\t\t\t\t'Default',\r\n\t\t\t\t\t\t\t'CandidateAccess/_Shared.CardGrid.MenuItem.SortDefault'\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.state.sort = {\r\n\t\t\t\t\t...defaultSort,\r\n\t\t\t\t\tdir: defaultSort.dir ? defaultSort.dir : 'asc',\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.state.filter) {\r\n\t\t\t\tthis.state.filter = {\r\n\t\t\t\t\t...EMPTY_FILTER,\r\n\t\t\t\t\tlabel: this.localize.transform('All', 'CandidateAccess/_Shared.CardGrid.MenuItem.FilterAll'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tthis.visiblityChangeSubj.next('init');\r\n\t\t});\r\n\r\n\t\tthis.searchConfig$ = search$;\r\n\t\tthis.searchConfig$\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter(search => this.state.search !== search),\r\n\t\t\t\tdistinctUntilChanged()\r\n\t\t\t)\r\n\t\t\t.subscribe(search => {\r\n\t\t\t\tconst type = CardGridActionTypes.UPDATE_SEARCH;\r\n\t\t\t\tconst action = { payload: search, type };\r\n\t\t\t\tthis.dispatcher.next((this.state = reduce(this.state, action)));\r\n\t\t\t\tthis.visiblityChangeSubj.next('searching');\r\n\t\t\t});\r\n\r\n\t\treturn this.data$;\r\n\t}\r\n\r\n\ttoggleFilter(fltr: CGFilter): void {\r\n\t\tconst type = CardGridActionTypes.UPDATE_FILTER;\r\n\t\tconst action = { payload: fltr, type };\r\n\t\tthis.dispatcher.next((this.state = reduce(this.state, action)));\r\n\t\tthis.visiblityChangeSubj.next('filtering');\r\n\t}\r\n\r\n\ttoggleSort(sort: CGSort): void {\r\n\t\tconst type = CardGridActionTypes.UPDATE_SORT;\r\n\t\tconst action = { payload: sort, type };\r\n\t\tthis.dispatcher.next((this.state = reduce(this.state, action)));\r\n\t\tthis.visiblityChangeSubj.next('sorting');\r\n\t}\r\n\r\n\tprivate watchForDataChanges(): void {\r\n\t\tthis.visibilityChange$.subscribe(loader => {\r\n\t\t\tthis.toggleLoading(loader);\r\n\t\t\tthis.updateCardVisibility(loader);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate updateCardVisibility(loader?: string): void {\r\n\t\tif (!this.state.data || !this.state.sort || !this.state.filter) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet data = this.state.data.slice();\r\n\t\t// Apply any filtering\r\n\t\tif (this.state.filter && this.state.filter.key) {\r\n\t\t\tdata = data.filter(\r\n\t\t\t\tdatum =>\r\n\t\t\t\t\t!!datum &&\r\n\t\t\t\t\tAtsObject.deepValue(datum, this.state.filter.key).toLowerCase() ===\r\n\t\t\t\t\t\tthis.state.filter.value.toLowerCase()\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Apply the search\r\n\t\tif (this.state.search.length && this.state.searchKeys.length) {\r\n\t\t\tdata = data.filter(\r\n\t\t\t\tdatum =>\r\n\t\t\t\t\t!!datum &&\r\n\t\t\t\t\tthis.state.searchKeys.some(key =>\r\n\t\t\t\t\t\tAtsObject.deepValue(datum, key)\r\n\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t.includes(this.state.search.toLowerCase())\r\n\t\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Do any sorting\r\n\t\tif (this.state.sort) {\r\n\t\t\tconst sorts: string[] = [this.state.sort.dir === 'desc' ? '-' + this.state.sort.key : this.state.sort.key];\r\n\t\t\tif ((this.state.sort || {}).subSort) {\r\n\t\t\t\tthis.state.sort.subSort.forEach(subSort =>\r\n\t\t\t\t\tsorts.push(subSort.dir === 'desc' ? '-' + subSort.key : subSort.key)\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tdata = atsSortFn.apply(this, [data, ...sorts]);\r\n\t\t}\r\n\r\n\t\tif (loader) {\r\n\t\t\tthis.toggleLoading(loader);\r\n\t\t}\r\n\r\n\t\tconst type = CardGridActionTypes.UPDATE_VISIBLE;\r\n\t\tconst action = { payload: data, type };\r\n\t\tthis.state = reduce(this.state, action);\r\n\t\tthis.dispatcher.next((this.state = reduce(this.state, action)));\r\n\t}\r\n\r\n\tprivate toggleLoading(id: string): void {\r\n\t\tconst type = CardGridActionTypes.TOGGLE_LOADING;\r\n\t\tconst action = {\r\n\t\t\tpayload: this.state.loaders.includes(id)\r\n\t\t\t\t? this.state.loaders.filter(loader => loader !== id)\r\n\t\t\t\t: [id, ...this.state.loaders.slice()],\r\n\t\t\ttype,\r\n\t\t};\r\n\t\tthis.dispatcher.next((this.state = reduce(this.state, action)));\r\n\t}\r\n}\r\n","\n\t\n\t\t\n\n\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n\n\n\t\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSort by\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t
\n
\n\n\n\t
\n\t\t\n\t\t\tNo data to show\n\t\t\n\t
\n
\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport {\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tComponent,\n\tEventEmitter,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tTemplateRef,\n\tViewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CmLocalizePipe } from '@ats/cm/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable, Subject, timer } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, switchMap, takeUntil } from 'rxjs/operators';\nimport { CGConfig } from '../../models/cg-config.interface';\nimport { CGFilter } from '../../models/cg-filter.interface';\nimport { CGSort } from '../../models/cg-sort.interface';\nimport { CpCardGridService } from '../../services/card-grid.service';\n\n// WATCH: Originally had *ngIf on the filter and sort containers, but ran into lifecycle errors\n// Believe it is related to https://github.com/angular/angular/issues/24563\n\nconst EMPTY_FILTER: CGFilter = {\n\tlabel: 'All',\n\tkey: '',\n\tvalue: '',\n};\n\n@UntilDestroy()\n@Component({\n selector: 'cp-card-grid',\n templateUrl: './card-grid.component.html',\n styleUrls: ['./card-grid.component.scss'],\n providers: [CpCardGridService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CpCardGridComponent implements AfterViewInit, OnInit, OnDestroy {\n\t@Input() config$: Observable;\n\t@Input() cardTemplate: TemplateRef;\n\t@Input() hideWhenEmpty: boolean = false;\n\t@Output() cardsLoaded = new EventEmitter();\n\tfilters$: Observable;\n\tsorts$: Observable;\n\n\treadonly loading: boolean = true;\n\treadonly filter$: Observable;\n\treadonly sort$: Observable;\n\treadonly loading$: Observable;\n\treadonly cancelRender$ = new Subject();\n\treadonly cardsLoadedSubj = new Subject();\n\treadonly cardsLoaded$ = this.cardsLoadedSubj.asObservable();\n\treadonly isGridEmpty$: Observable;\n\treadonly searchForm: UntypedFormGroup;\n\tprivate readonly data$: Observable;\n\n\t@ViewChild('cardsContainer', { read: ViewContainerRef }) container: ViewContainerRef;\n\t@ViewChild('cardTpl', { read: TemplateRef }) template: TemplateRef;\n\n\tconstructor(\n\t\tprivate readonly grid: CpCardGridService,\n\t\tprivate readonly localize: CmLocalizePipe,\n\t\tprivate readonly fb: UntypedFormBuilder,\n\t\tprivate readonly announcer: LiveAnnouncer,\n\t\tprivate readonly cmLocalize: CmLocalizePipe\n\t) {\n\t\tthis.loading$ = this.grid.loading$;\n\t\tthis.searchForm = this.createForm();\n\t\tthis.isGridEmpty$ = this.grid.data$.pipe(map(cards => !!cards.length));\n\t\tthis.sort$ = this.grid.sort$;\n\t\tthis.filter$ = this.grid.filter$;\n\t\tthis.data$ = this.grid.data$;\n\t}\n\n\tngOnInit(): void {\n\t\tconst search$ = this.searchInput.valueChanges.pipe(debounceTime(350), distinctUntilChanged());\n\t\tthis.grid.config(this.config$, search$);\n\t\tthis.filters$ = this.config$.pipe(\n\t\t\tmap(config => [\n\t\t\t\t{\n\t\t\t\t\t...EMPTY_FILTER,\n\t\t\t\t\tlabel: this.localize.transform('All', 'CandidateAccess/_Shared.CardGrid.MenuItem.FilterAll'),\n\t\t\t\t},\n\t\t\t\t...config.filters.filter(fltr => config.data.filter(datum => datum[fltr.key] === fltr.value).length),\n\t\t\t])\n\t\t);\n\n\t\tthis.sorts$ = this.config$.pipe(\n\t\t\tmap(config => config.sorts.map(sort => (!sort.dir ? ({ ...sort, dir: 'asc' } as CGSort) : sort)))\n\t\t);\n\n\t\tsearch$.pipe(switchMap(() => this.data$)).subscribe(cards => {\n\t\t\tthis.announcer.announce(\n\t\t\t\tthis.cmLocalize.transform(\n\t\t\t\t\t'Search results displayed:',\n\t\t\t\t\t'CandidateAccess/System.Global.Notification.SearchResultsAnnouncement'\n\t\t\t\t) +\n\t\t\t\t\t' ' +\n\t\t\t\t\tcards.length\n\t\t\t);\n\t\t});\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.data$.pipe(untilDestroyed(this)).subscribe(cards => {\n\t\t\tthis.renderData(cards);\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.cancelRender$.next();\n\t\tthis.cancelRender$.complete();\n\t\tthis.cardsLoadedSubj.complete();\n\t}\n\n\tget searchInput(): UntypedFormControl {\n\t\treturn this.searchForm.get('search') as UntypedFormControl;\n\t}\n\n\ttoggleFilter(fltr: CGFilter): void {\n\t\tthis.grid.toggleFilter(fltr);\n\t}\n\n\ttoggleSort(sort: CGSort): void {\n\t\tthis.grid.toggleSort(sort);\n\t}\n\n\ttoggleSortDirection(sort: CGSort): void {\n\t\tthis.grid.toggleSort({\n\t\t\t...sort,\n\t\t\tdir: sort.dir === 'asc' ? 'desc' : 'asc',\n\t\t\tsubSort: sort.subSort\n\t\t\t\t? sort.subSort.map(sub => ({\n\t\t\t\t\t\t...sub,\n\t\t\t\t\t\tdir: !sub.reversible ? sub.dir : sub.dir === 'asc' ? 'desc' : 'asc',\n\t\t\t\t }))\n\t\t\t\t: undefined,\n\t\t});\n\t}\n\n\tclearSearch(): void {\n\t\tthis.searchInput.patchValue('');\n\t}\n\n\tprivate createForm(): UntypedFormGroup {\n\t\treturn this.fb.group({\n\t\t\tsearch: '',\n\t\t});\n\t}\n\n\tprivate renderData(cards: any[]): void {\n\t\tthis.cancelRender$.next();\n\t\tthis.container.clear();\n\t\ttimer(0, 1)\n\t\t\t.pipe(takeUntil(this.cancelRender$))\n\t\t\t.subscribe(idx => {\n\t\t\t\tif (cards[idx]) {\n\t\t\t\t\tthis.container.createEmbeddedView(this.cardTemplate, { data: cards[idx] });\n\t\t\t\t} else {\n\t\t\t\t\tthis.cancelRender$.next();\n\t\t\t\t\tthis.cardsLoadedSubj.next();\n\t\t\t\t\tthis.cardsLoaded.emit();\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { MatSortModule } from '@angular/material/sort';\nimport { CmCoreModule } from '@ats/cm/core';\nimport { CmUiModule } from '@ats/cm/ui';\nimport { AtsIconsModule } from '@ats/icons';\nimport { AtsUiModule } from '@ats/ui';\nimport { AtsUtilityModule, IsStringPipe, ToStringPipe } from '@ats/utility';\nimport { LocalizationModule } from '@cm/core/localization';\nimport { CmAutocompleteComponent } from '@cm/shared/ui/autocomplete';\nimport { CmMiniButtonDirective } from '@cm/shared/ui/button';\nimport { CmTrimWhitespaceDirective } from '@cm/shared/ui/forms';\nimport { IsLegacyLocalizePipe, LocalizeComponent, LocalizePipe } from '@cm/ui/localize';\nimport { MarkdownModule } from 'ngx-markdown';\nimport { CpBadgeDetailViewComponent } from './components/badge-detail-view/badge-detail-view.component';\nimport { CpCardGridComponent } from './components/card-grid/card-grid.component';\nimport { CpCardMetaComponent } from './components/card-meta/card-meta.component';\nimport { CpCardTableComponent } from './components/cards/card-table.component';\nimport { CpCardComponent } from './components/cards/cp-card.component';\nimport { CpAnnouncementComponent } from './components/cp-announcement/cp-announcement.component';\nimport { CpLogoAgreementComponent } from './components/cp-logo-agreement/cp-logo-agreement.component';\nimport { CpCreqDetailComponent } from './components/creq-detail/creq-detail.component';\nimport { CpCreqEditComponent } from './components/creq-edit/creq-edit.component';\nimport { CpDividerComponent } from './components/divider/divider.component';\nimport { CpLatestAgreementModalComponent } from './components/latest-agreement-modal/latest-agreement-modal.component';\nimport { CpLogoutComponent } from './components/logout/logout.component';\nimport { CpNavigationComponent } from './components/navigation/navigation.component';\nimport { CpPageDescriptionComponent } from './components/page-description/page-description.component';\nimport { CpPageSectionTitleComponent } from './components/page-section/cp-page-section-title.component';\nimport { CpPageSectionComponent } from './components/page-section/cp-page-section.component';\nimport { CpPageWrapperComponent } from './components/page-wrapper/page-wrapper.component';\nimport { CpPasswordConfirmationFormComponent } from './components/password-confirmation-form/password-confirmation-form.component';\nimport { CpCertAgreementComponent } from './components/requirement-forms/cert-agreement/cert-agreement.component';\nimport { CpMailingAddressComponent } from './components/requirement-forms/mailing-address/mailing-address.component';\nimport { CpNameConfirmationComponent } from './components/requirement-forms/name-confirmation/name-confirmation.component';\nimport { CpPersonalInfoFormComponent } from './components/requirement-forms/personal-info/personal-info-form.component';\nimport { CpProfileAffiliationsComponent } from './components/requirement-forms/profile-affiliations/profile-affiliations.component';\nimport { CpProfileSettingsComponent } from './components/requirement-forms/profile-settings/profile-settings.component';\nimport { CpSectionComponent } from './components/section/cp-section.component';\nimport { CpSponsorSettingMultiselectComponent } from './components/sponsor-setting-multiselect/sponsor-setting-multiselect.component';\nimport { CpSponsorSettingSingleComponent } from './components/sponsor-setting-single/sponsor-setting-single.component';\nimport { CpViewFooterComponent } from './components/view-footer/view-footer.component';\nimport { CpViewHeaderComponent } from './components/view-header/view-header.component';\nimport { CpViewSidebarComponent } from './components/view-sidebar/view-sidebar.component';\nimport { CpViewComponent } from './components/view/view.component';\nimport { cpUIModuleLocs } from './cp-ui-module.locs';\nimport { CpSubsectionTitleDirective } from './directives/subsection.directive';\nimport { CpCardGridService } from './services/card-grid.service';\n\nconst sharedDeclarations = [\n\tCpAnnouncementComponent,\n\tCpBadgeDetailViewComponent,\n\tCpCardComponent,\n\tCpCardGridComponent,\n\tCpCardMetaComponent,\n\tCpCardTableComponent,\n\tCpCertAgreementComponent,\n\tCpCreqDetailComponent,\n\tCpCreqEditComponent,\n\tCpDividerComponent,\n\tCpMailingAddressComponent,\n\tCpLatestAgreementModalComponent,\n\tCpNavigationComponent,\n\tCpPageDescriptionComponent,\n\tCpPageSectionComponent,\n\tCpPageSectionTitleComponent,\n\tCpPageWrapperComponent,\n\tCpPasswordConfirmationFormComponent,\n\tCpPersonalInfoFormComponent,\n\tCpProfileSettingsComponent,\n\tCpSectionComponent,\n\tCpSponsorSettingMultiselectComponent,\n\tCpSponsorSettingSingleComponent,\n\tCpSubsectionTitleDirective,\n\tCpViewComponent,\n\tCpViewFooterComponent,\n\tCpViewHeaderComponent,\n\tCpViewSidebarComponent,\n\tCpLogoAgreementComponent,\n\tCpLogoutComponent,\n\tCpNameConfirmationComponent,\n\tCpPersonalInfoFormComponent,\n];\n\nconst shareImports = [\n\tCmCoreModule,\n\tCmUiModule,\n\tAtsIconsModule,\n\tAtsUiModule,\n\tAtsUtilityModule,\n\tMatSortModule,\n\tCmAutocompleteComponent,\n\tCmMiniButtonDirective,\n\tLocalizeComponent,\n\tIsLegacyLocalizePipe,\n\tLocalizePipe,\n\tToStringPipe,\n\tIsStringPipe,\n\tLocalizeComponent,\n\tCmTrimWhitespaceDirective,\n];\n\n@NgModule({\n\tdeclarations: sharedDeclarations,\n\timports: [\n\t\t...shareImports,\n\t\tCpProfileAffiliationsComponent,\n\t\tLocalizeComponent,\n\t\tLocalizationModule.forChild(cpUIModuleLocs),\n\t\tMarkdownModule.forRoot()\n\t],\n\tproviders: [CpCardGridService],\n\texports: [...shareImports, ...sharedDeclarations],\n})\nexport class CpUiModule { }\n","
\n\t
\n\t\t\n\t
\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{{ badge.catalog.issuerName }}\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\n\t\t\n\t\t\t\n\t\t\n\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{{ badge.issuedTo }}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{{ badge.catalog.issuerName }}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{{ badge.assertionCount }}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{{ badge.activeDate | cmDate }}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ badge.latestAdjustment | cmDate }}\n\t\t\t\t\n\t\t\t\tN/A\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{{ (badge?.expireDate | cmDate) || 'Forever' }}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ badge.catalog?.description }}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\n\n\n\t\n\t\n\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tSimpleChanges,\n} from '@angular/core';\nimport { Badge, BadgeCatalog, CandidateAccount } from '@ats/api/cm';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo, gql } from 'apollo-angular';\nimport { Observable, Subject, of } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { BadgeDetailViewLocs } from './badge-detail-view.locs';\n\nconst BADGE_QUERY = gql`\n\tquery badgeDetail($request: RequestByExternalId!) {\n\t\tcandidateAccount {\n\t\t\tcmcId\n\t\t\tbadgeDetail(request: $request) {\n\t\t\t\tid\n\t\t\t\tassertionCount\n\t\t\t}\n\t\t}\n\t}\n`;\n\n@UntilDestroy()\n@Component({\n selector: 'cp-badge-detail-view',\n templateUrl: './badge-detail-view.component.html',\n styleUrls: ['./badge-detail-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CpBadgeDetailViewComponent implements OnInit, OnChanges {\n\t@Input() badge:\n\t\t| Partial<\n\t\t\t\tOmit & {\n\t\t\t\t\tcatalog: Partial;\n\t\t\t\t\tissuedTo: string;\n\t\t\t\t\tlatestAdjustment: string;\n\t\t\t\t\tassertionCount?: number;\n\t\t\t\t\tlink?: string;\n\t\t\t\t}\n\t\t >\n\t\t| (Badge & {\n\t\t\t\tissuedTo: string;\n\t\t\t\tassertionCount?: number;\n\t\t\t\tlink?: string;\n\t\t\t\tlatestAdjustment: string;\n\t\t });\n\t@Input() locPrefix: string = '';\n\t@Input() public = true;\n\t@Input({ required: true }) locs!: BadgeDetailViewLocs;\n\treadonly loading$: Observable;\n\tprivate readonly badgeSubj$: Subject = new Subject();\n\n\tconstructor(private apollo: Apollo) {\n\t\tthis.loading$ = this.fetchBadgeDetails();\n\t}\n\n\tngOnInit(): void {\n\t\tthis.fetchBadgeDetails();\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.badgeSubj$.next((((changes || {}).badge || {}).currentValue || {}).id || '');\n\t}\n\n\tfetchBadgeDetails(): Observable {\n\t\tconst badge$ = this.badgeSubj$.asObservable().pipe(\n\t\t\tstartWith((this.badge || {}).id || ''),\n\t\t\tmap(badge => (badge ? badge.split('_').join('/') : '')),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\n\t\treturn this.public\n\t\t\t? of(false)\n\t\t\t: badge$.pipe(\n\t\t\t\t\tuntilDestroyed(this),\n\t\t\t\t\tfilter(badge => !!badge),\n\t\t\t\t\tswitchMap(\n\t\t\t\t\t\texternalId =>\n\t\t\t\t\t\t\tthis.apollo.watchQuery<{ candidateAccount: Partial }>(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tquery: BADGE_QUERY,\n\t\t\t\t\t\t\t\t\tvariables: { request: { externalId } },\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t).valueChanges\n\t\t\t\t\t),\n\t\t\t\t\tmap(({ data }) => ((data || {}).candidateAccount || {}).badgeDetail),\n\t\t\t\t\ttap(\n\t\t\t\t\t\tbadge =>\n\t\t\t\t\t\t\t(this.badge = {\n\t\t\t\t\t\t\t\t...this.badge,\n\t\t\t\t\t\t\t\tassertionCount: (badge || {}).assertionCount || 0,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\tmap(() => false),\n\t\t\t\t\tstartWith(true)\n\t\t\t );\n\t}\n}\n","\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CGHeaderBackground } from '../../models/cg-header-background.interface';\n\n@Component({\n selector: 'cp-card',\n templateUrl: './cp-card.component.html',\n styleUrls: ['./cp-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CpCardComponent implements OnInit {\n\t@Input() data: any[];\n\t@Input() tableData: { label: string; value: string }[];\n\t@Input() status: string;\n\t@Input() statusClass: string;\n\t@Input() showFooter: boolean = false;\n\t@Input() headerBG: CGHeaderBackground;\n\t@Input() notSelectedInList: boolean = false;\n\t@Input() cardTitle: string;\n\t@Output() overlay: EventEmitter = new EventEmitter();\n\n\theaderStyle: any;\n\tconstructor() {}\n\n\tngOnInit() {\n\t\tif (!this.statusClass) {\n\t\t\tthis.statusClass = this.status ? 'cp-card--' + this.status.toLowerCase().replace(' ', '-') : '';\n\t\t}\n\t\tthis.headerStyle = this.getHeaderStyle();\n\t}\n\n\toverlayClick(): void {\n\t\tthis.overlay.emit(true);\n\t}\n\n\tgetHeaderStyle() {\n\t\tlet headerStyle = null;\n\t\tif ((this.headerBG || {}).color) {\n\t\t\theaderStyle = { 'background-color': this.headerBG?.color };\n\t\t}\n\t\tif ((this.headerBG || {}).textColor) {\n\t\t\theaderStyle = { ...headerStyle, color: this.headerBG?.textColor };\n\t\t}\n\t\tif ((this.headerBG || {}).url) {\n\t\t\theaderStyle = {\n\t\t\t\t...headerStyle,\n\t\t\t\t'background-image': \"url('\" + this.headerBG?.url + \"')\",\n\t\t\t\t'background-size': this.headerBG?.size || 'cover',\n\t\t\t\t'background-position': this.headerBG?.position || 'center',\n\t\t\t\t'min-height': this.headerBG?.minHeight + 'px' || '0px',\n\t\t\t};\n\t\t}\n\t\treturn headerStyle;\n\t}\n}\n","\n\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { LocalizedText } from '@ats/cm/core';\n\ntype IconType = 'success' | 'error' | 'warning' | 'info';\n@Component({\n selector: 'cp-announcement',\n templateUrl: './cp-announcement.component.html',\n styleUrls: ['./cp-announcement.component.scss'],\n standalone: false\n})\nexport class CpAnnouncementComponent implements OnInit {\n\t/**\n\t *\n\t * @deprecated not being used\n\t */\n\t@Input() closeable: boolean = true;\n\t@Input() type: IconType;\n\t@Input() suppressIcon: boolean = true;\n\t@Input() localizedIconTitle: LocalizedText = null;\n\n\ticon: LocalizedText = {\n\t\tkey: 'Core/System.Announcement.Content.Info',\n\t\tdefaultValue: 'Info',\n\t};\n\n\tconstructor() {}\n\tngOnInit() {\n\t\tswitch (this.type) {\n\t\t\tcase 'success': {\n\t\t\t\tthis.setIconTitle('Success', 'Core/System.Announcement.Content.Success');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'error': {\n\t\t\t\tthis.setIconTitle('Error', 'Core/System.Announcement.Content.Error');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'info':\n\t\t\tcase 'warning':\n\t\t\tdefault: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tsetIconTitle(defaultValue: string, key: string) {\n\t\tif (this.localizedIconTitle && this.localizedIconTitle.key) {\n\t\t\tthis.icon.key = this.localizedIconTitle.key;\n\t\t\tthis.icon.defaultValue = this.localizedIconTitle.defaultValue;\n\t\t} else {\n\t\t\tthis.icon.key = key;\n\t\t\tthis.icon.defaultValue = defaultValue;\n\t\t}\n\t}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CandidateHistory, ChistType, InsertCandidateHistory } from '@ats/api/cm';\nimport { CpUserService } from '@ats/cp/core';\nimport { Apollo } from 'apollo-angular';\nimport { DocumentNode } from 'graphql';\nimport gql from 'graphql-tag';\nimport { filter, switchMap, take } from 'rxjs/operators';\n\nconst LOGO_DOWNLOAD_AGREEMENT_MUTATION: DocumentNode = gql`\n\tmutation signLogoDownloadAgreement($request: InsertCandidateHistory!) {\n\t\tinsertCandidateHistory(request: $request) {\n\t\t\tcmcId\n\t\t}\n\t}\n`;\n\nconst LOGO_AGREEMENT_QUERY: DocumentNode = gql`\n\tquery candidateAccount {\n\t\tcandidateAccount {\n\t\t\tcmcId\n\t\t\tlogoAgreementRequired\n\t\t}\n\t}\n`;\n\n@Component({\n selector: 'cp-logo-agreement',\n templateUrl: './cp-logo-agreement.component.html',\n styleUrls: ['./cp-logo-agreement.component.scss'],\n standalone: false\n})\nexport class CpLogoAgreementComponent implements OnInit {\n\t@Input() locFeature: string;\n\t@Input() page: string;\n\n\tconstructor(private apollo: Apollo, private user: CpUserService) {}\n\n\tngOnInit() {}\n\n\thandleSubmit(): void {\n\t\tthis.user.user$\n\t\t\t.pipe(\n\t\t\t\tfilter(user => !!user),\n\t\t\t\ttake(1),\n\t\t\t\tswitchMap(user =>\n\t\t\t\t\tthis.apollo.mutate<\n\t\t\t\t\t\t{ insertCandidateHistory: CandidateHistory },\n\t\t\t\t\t\t{ request: InsertCandidateHistory }\n\t\t\t\t\t>({\n\t\t\t\t\t\tmutation: LOGO_DOWNLOAD_AGREEMENT_MUTATION,\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\tcandidateId: {\n\t\t\t\t\t\t\t\t\tcmcId: user.cmcId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tmessage: 'Candidate signed logo agreement',\n\t\t\t\t\t\t\t\ttype: ChistType.CandidateLogoAgrSigned,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// refetch is needed because the value returned from the mutation does\n\t\t\t\t\t\t// not have the data that the page needs\n\t\t\t\t\t\trefetchQueries: [{ query: LOGO_AGREEMENT_QUERY }],\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe();\n\t}\n}\n","\n\t
\n\t\t
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tGo Back\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tInfo\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tActive Date\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ creq.activeDate | cmDate }}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tExpire Date\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ creq.expireDate | cmDate }}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tUpdated\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ creq.updated | cmDate }}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tCourse Name\n\t\t\t\t\t\n\t\t\t\t\t{{ courseName$ | async }}\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tReview Status\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ creq.reviewState | cmLocalizeEnum: 'CreqReviewState' }}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tInvalid\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tData Provider\n\t\t\t\t\t\n\t\t\t\t\t{{ creq.dataProvider?.displayName || creq.dataProvider?.name || ''}}\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{crcatDetail.factorUnits}}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t 0\">\n\t\t\t\t\t\t\t\t{{creq?.points / crcatDetail.factor }}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{creq?.points }}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPoints\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{creq?.points }}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDocumentation Language\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ lang }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tProvider\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ creq.provider }}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tNotes\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ creq.docNotes }}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\n\t
\n\n\n\n\t\n\t\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n\tCandidateAccount,\n\tCertRequirementDetail,\n\tCrcatType,\n\tCulture,\n\tHubFeature,\n\tHubPermission,\n\tUpdateCertRequirementRequest,\n} from '@ats/api/cm';\nimport { CmAuthService, CmLocalizePipe, Guard } from '@ats/cm/core';\nimport { DEFAULT_DOCUMENTATION_VALIDATORS } from '@ats/cm/ui';\nimport { AtsNotificationService, NoticeType } from '@ats/notifications';\nimport { AtsFileUploadService } from '@ats/utility';\nimport { Apollo, gql } from 'apollo-angular';\nimport { Observable, Subject, combineLatest, of } from 'rxjs';\nimport { map, share, switchMap, take, tap } from 'rxjs/operators';\n\nconst CREQ_CULTURES = gql`\n\tquery creqCultures($request: CulturesRequest) {\n\t\tcultures(request: $request) {\n\t\t\tid\n\t\t\tname\n\t\t\tlabel\n\t\t}\n\t}\n`;\n\nconst CREQ_DETAIL_QUERY = (guard: Guard) => gql`\n\tquery candidateCreqDetail($creq: RequestByIdOrExternalId!) {\n\t\tcandidateAccount {\n\t\t\tcmcId\n\t\t\texternalId\n\t\t\tcertRequirementDetail(request: $creq) {\n\t\t\t\tid\n\t\t\t\tcreated\n\t\t\t\treviewState\n\t\t\t\tactiveDate\n\t\t\t\tcatalogId\n\t\t\t\tcreated\n\t\t\t\tdocChangeable\n\t\t\t\tdocLanguage\n\t\t\t\tdocNotes\n\t\t\t\tdocUploadUrl\n\t\t\t\tdocUrl\n\t\t\t\timportSource\n\t\t\t\tupdated\n\t\t\t\texpireDate\n\t\t\t\texternalId\n\t\t\t\tprovider\n\t\t\t\tinvalid\n\t\t\t\tcandidateCreated\n\t\t\t\t${\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\t\tHubFeature.OtherRequirementShowOverrideName,\n\t\t\t\t\t\t\tHubFeature.OtherRequirementAdvancedSelection,\n\t\t\t\t\t\t]).all\n\t\t\t\t\t\t? `\n\t\t\t\t\toverride {\n\t\t\t\t\t\tid\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\tdataProvider {\n\t\t\t\t\tid\n\t\t\t\t\tname\n\t\t\t\t\tdisplayName\n\t\t\t\t}\n\t\t\t\t${\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t\t.everyPermission([HubPermission.CandidateRequirementsContinuingEducationView]).all\n\t\t\t\t\t\t? `\n\t\t\t\t\t\tpoints\n\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\tcertRequirementCatalogDetail {\n\t\t\t\t\tid\n\t\t\t\t\tname\n\t\t\t\t\tcreateAge\n\t\t\t\t\tdocRequired\n\t\t\t\t\tproviderRequired\n\t\t\t\t\ttype\n\t\t\t\t\tcreateType\n\t\t\t\t\tcandidateCreateEnabled\n\t\t\t\t\t${guard.reset().everyFeature([HubFeature.OtherRequirementInformationUrl]).all ? 'url' : ''}\n\t\t\t\t\t${\n\t\t\t\t\t\tguard\n\t\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t\t.everyFeature([HubFeature.CredentialContinuingEducation])\n\t\t\t\t\t\t\t.everyPermission([HubPermission.CandidateRequirementsContinuingEducationView]).all\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\tpoints\n\t\t\t\t\t\tpointsMax\n\t\t\t\t\t\tfactor\n\t\t\t\t\t\tfactorUnits\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst CREQ_MUTATION = gql`\n\tmutation candidateCReq($request: UpdateCertRequirementRequest!) {\n\t\tupdateCertRequirement(request: $request) {\n\t\t\tid\n\t\t}\n\t}\n`;\n\n@Component({\n selector: 'cp-creq-detail',\n templateUrl: './creq-detail.component.html',\n styleUrls: ['./creq-detail.component.scss'],\n standalone: false\n})\nexport class CpCreqDetailComponent implements OnInit {\n\t@Input() type$: Observable;\n\t@Input() active$: Observable;\n\t@Input() baseKey: string;\n\tcreq$: Observable;\n\tdocLanguage$: Observable;\n\teditable$: Observable;\n\tform: UntypedFormGroup;\n\tediting$: Observable;\n\tcourseName$: Observable;\n\tcrcatType = CrcatType;\n\n\tprivate editingSubj = new Subject();\n\n\tconstructor(\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly fb: UntypedFormBuilder,\n\t\tprivate readonly fileService: AtsFileUploadService,\n\t\tprivate readonly localize: CmLocalizePipe,\n\t\tprivate readonly notifications: AtsNotificationService\n\t) {}\n\n\tngOnInit() {\n\t\tthis.creq$ = this.active$.pipe(switchMap(creqId => this.fetchCreq$(creqId)));\n\t\tthis.type$ = this.creq$.pipe(map(creq => creq.certRequirementCatalogDetail.type));\n\n\t\tconst hasCECourseNameFeature$ = this.auth.guard$.pipe(\n\t\t\tmap(guard => guard.reset().everyFeature([HubFeature.CredentialContinuingEducationCeCourseName]).all)\n\t\t);\n\n\t\tthis.courseName$ = combineLatest([this.type$, this.creq$, hasCECourseNameFeature$]).pipe(\n\t\t\tmap(([type, creq, hasCourseNameFeature]) =>\n\t\t\t\ttype === CrcatType.CeActivity && hasCourseNameFeature ? creq.provider : null\n\t\t\t)\n\t\t);\n\n\t\tthis.docLanguage$ = combineLatest([this.creq$, this.fetchCreqCultures$()]).pipe(\n\t\t\tmap(([creq, cultures]) => {\n\t\t\t\tif (!creq.docLanguage) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst culture = cultures.find(culture => culture.name === creq.docLanguage);\n\t\t\t\treturn culture ? culture.label : null;\n\t\t\t})\n\t\t);\n\n\t\tthis.editable$ = this.auth.guard$.pipe(\n\t\t\tswitchMap(guard =>\n\t\t\t\tthis.creq$.pipe(\n\t\t\t\t\tmap(\n\t\t\t\t\t\tcreq =>\n\t\t\t\t\t\t\t(creq.certRequirementCatalogDetail || {}).docRequired !== null &&\n\t\t\t\t\t\t\tguard.reset().everyFeature([HubFeature.OtherRequirementUploadCandidateAccess]).all &&\n\t\t\t\t\t\t\tcreq.candidateCreated &&\n\t\t\t\t\t\t\tcreq.docChangeable\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\n\t\tthis.editing$ = this.editable$.pipe(\n\t\t\tswitchMap(editable => (!editable ? of(false) : this.editingSubj.asObservable())),\n\t\t\tshare(),\n\t\t\ttap(editing => {\n\t\t\t\tif (editing) {\n\t\t\t\t\tthis.initForm();\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n\n\tstartEdit(): void {\n\t\tthis.editingSubj.next(true);\n\t}\n\n\tstopEdit(): void {\n\t\tthis.form = null;\n\t\tthis.editingSubj.next(false);\n\t}\n\n\thandleSubmit(): void | boolean {\n\t\tif (!this.form.valid) {\n\t\t\tthis.form.markAllAsTouched();\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.getCreqRequest$(this.form.value)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(request =>\n\t\t\t\t\t!this.form.value.documentation\n\t\t\t\t\t\t? this.updateCReq$(request)\n\t\t\t\t\t\t: this.uploadCreqDocs$(this.form.value.documentation).pipe(\n\t\t\t\t\t\t\t\tswitchMap(() => this.updateCReq$(request))\n\t\t\t\t\t\t )\n\t\t\t\t),\n\t\t\t\tswitchMap(() => this.type$),\n\t\t\t\ttake(1)\n\t\t\t)\n\t\t\t.subscribe(type => {\n\t\t\t\tthis.editingSubj.next(false);\n\t\t\t\tthis.notifications.pop({\n\t\t\t\t\tid: 'creq-update',\n\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t'Successfully Updated',\n\t\t\t\t\t\t`${this.baseKey}.${type}.Details.NotificationMessage.UpdateSuccess`\n\t\t\t\t\t),\n\t\t\t\t\ttype: NoticeType.SUCCESS,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tprivate initForm(): void {\n\t\tthis.creq$.pipe(take(1)).subscribe(creq => {\n\t\t\tthis.form = this.fb.group({\n\t\t\t\tdocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\tdisabled: !creq.docChangeable,\n\t\t\t\t\t},\n\t\t\t\t\t(creq.certRequirementCatalogDetail || {}).docRequired && !creq.docUrl\n\t\t\t\t\t\t? [Validators.required, ...DEFAULT_DOCUMENTATION_VALIDATORS]\n\t\t\t\t\t\t: DEFAULT_DOCUMENTATION_VALIDATORS,\n\t\t\t\t],\n\t\t\t\tdocLanguage: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: creq.docLanguage,\n\t\t\t\t\t\tdisabled: !creq.docChangeable,\n\t\t\t\t\t},\n\t\t\t\t\t(creq.certRequirementCatalogDetail || {}).docRequired ? Validators.required : [],\n\t\t\t\t],\n\t\t\t\tprovider: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: creq.provider,\n\t\t\t\t\t\tdisabled: (creq.certRequirementCatalogDetail || {}).providerRequired === null,\n\t\t\t\t\t},\n\t\t\t\t\t(creq.certRequirementCatalogDetail || {}).providerRequired ? [Validators.required] : [],\n\t\t\t\t],\n\t\t\t\tdocNotes: [creq.docNotes],\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate fetchCreq$(id: number): Observable {\n\t\treturn this.auth.guard$.pipe(\n\t\t\tswitchMap(guard =>\n\t\t\t\tthis.apollo\n\t\t\t\t\t.watchQuery<{ candidateAccount: CandidateAccount }>({\n\t\t\t\t\t\tquery: CREQ_DETAIL_QUERY(guard),\n\t\t\t\t\t\tvariables: { creq: { id } },\n\t\t\t\t\t})\n\t\t\t\t\t.valueChanges.pipe(map(({ data }) => ((data || {}).candidateAccount || {}).certRequirementDetail))\n\t\t\t)\n\t\t);\n\t}\n\n\tprivate getCreqRequest$(values: any): Observable {\n\t\treturn this.creq$.pipe(\n\t\t\tmap(creq => {\n\t\t\t\tconst request: UpdateCertRequirementRequest = {\n\t\t\t\t\tid: creq.id,\n\t\t\t\t\tdocNotes: values.docNotes,\n\t\t\t\t};\n\n\t\t\t\tif ((creq.certRequirementCatalogDetail || {}).docRequired !== null && values.docLanguage) {\n\t\t\t\t\trequest['docLanguage'] = values.docLanguage;\n\t\t\t\t}\n\n\t\t\t\tif ((creq.certRequirementCatalogDetail || {}).providerRequired !== null) {\n\t\t\t\t\trequest['provider'] = values.provider;\n\t\t\t\t}\n\n\t\t\t\treturn request;\n\t\t\t})\n\t\t);\n\t}\n\n\tprivate uploadCreqDocs$(documentation: FileList): Observable {\n\t\treturn this.creq$.pipe(switchMap(creq => this.fileService.uploadFile(documentation, creq.docUploadUrl)));\n\t}\n\n\tprivate updateCReq$(request: UpdateCertRequirementRequest): Observable {\n\t\treturn combineLatest([this.creq$, this.auth.guard$]).pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap(([creq, guard]) =>\n\t\t\t\tthis.apollo.mutate({\n\t\t\t\t\tmutation: CREQ_MUTATION,\n\t\t\t\t\tvariables: { request },\n\t\t\t\t\trefetchQueries: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tquery: CREQ_DETAIL_QUERY(guard),\n\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\tcreq: { id: creq.id },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t}\n\n\tprivate fetchCreqCultures$(): Observable[]> {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ cultures: Partial[] }>({\n\t\t\t\tquery: CREQ_CULTURES,\n\t\t\t\tvariables: { request: { onlyNeutral: true } },\n\t\t\t})\n\t\t\t.valueChanges.pipe(map(({ data }) => (data || {}).cultures));\n\t}\n}\n","
\n\t\n\t\t\n\t\t\t\n\t\t\t\tDocumentation\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tDocumentation is required\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tFiles must not be larger than 2Mb\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tMaximum of 5 files\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\n\t\t\n\t\t\t\n\t\t\t\tDocumentation Language\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tDocumentation\n\t\t\t\t\t\tlanguage is required\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tYou\n\t\t\t\t\t\tmust choose an option from the list\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\t\tProvider\n\t\t\t\n\t\t\n\t\t\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\t\tNotes\n\t\t\t\n\t\t\n\t\t\n\t\n\n\t
\n\t\t\n\t\t\n\t
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CrcatType, Culture } from '@ats/api/cm';\nimport { CMOption } from '@ats/cm/ui';\nimport { atsSort } from '@ats/utility';\nimport { Apollo, gql } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nconst CREQ_CULTURES = gql`\n\tquery creqCultures($request: CulturesRequest) {\n\t\tcultures(request: $request) {\n\t\t\tid\n\t\t\tname\n\t\t\tlabel\n\t\t}\n\t}\n`;\n\n@Component({\n selector: 'cp-creq-edit',\n templateUrl: './creq-edit.component.html',\n styleUrls: ['./creq-edit.component.scss'],\n standalone: false\n})\nexport class CpCreqEditComponent implements OnInit {\n\t@Input() form: UntypedFormGroup;\n\t@Input() type: CrcatType;\n\t@Input() baseKey: string;\n\t@Output() cancel = new EventEmitter();\n\treadonly languages$: Observable;\n\n\tconstructor(private apollo: Apollo) {\n\t\tthis.languages$ = this.fetchCreqCultures$().pipe(\n\t\t\tmap(cultures => cultures.map(culture => ({ display: culture.label, value: culture.name }))),\n\t\t\tatsSort('display')\n\t\t);\n\t}\n\n\tngOnInit() {\n\n\t}\n\n\tget provider() {\n\t\treturn this.form.get('provider') as UntypedFormControl;\n\t}\n\n\tget documentation() {\n\t\treturn this.form.get('documentation') as UntypedFormControl;\n\t}\n\n\tget docLanguage() {\n\t\treturn this.form.get('docLanguage') as UntypedFormControl;\n\t}\n\n\tget docNotes() {\n\t\treturn this.form.get('docNotes') as UntypedFormControl;\n\t}\n\n\thandleCancel(): void {\n\t\tthis.cancel.emit();\n\t}\n\n\tprivate fetchCreqCultures$(): Observable[]> {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{ cultures: Partial[] }>({\n\t\t\t\tquery: CREQ_CULTURES,\n\t\t\t\tvariables: { request: { onlyNeutral: true } },\n\t\t\t})\n\t\t\t.valueChanges.pipe(map(({ data }) => (data || {}).cultures));\n\t}\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'cp-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n standalone: false\n})\nexport class CpDividerComponent {\n\tconstructor() {}\n}\n","
\n\t\n
\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPNavigationLoc =\r\n\t| 'CPNavigationCCIELabScheduler'\r\n\t| 'CPNavigationUserGuide'\r\n\t| 'CPNavigationSupportAndFaqs';\r\n\r\nexport const cpNavigationLocs: LocDefs = {\r\n\tCPNavigationCCIELabScheduler: {\r\n\t\tdefaultValue: 'CCIE Lab Scheduler',\r\n\t\tdescription: 'Menu item for the CCIE Lab Scheduler navigation item',\r\n\t\tdisplayPath: 'Navigation|CCIE Lab Scheduler',\r\n\t\tdisplayType: 'Content',\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CiscoCustomReports,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPNavigationUserGuide: {\r\n\t\tdefaultValue: 'User Guide',\r\n\t\tdescription: 'Menu item for the User Guide navigation item',\r\n\t\tdisplayPath: 'Navigation|User Guide',\r\n\t\tdisplayType: 'Content',\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tfeature: HubFeature.CiscoCustomReports,\r\n\t\tportal: 'CP',\r\n\t},\r\n\tCPNavigationSupportAndFaqs: {\r\n\t\tdefaultValue: 'Support and FAQs',\r\n\t\tdescription: 'Menu item for the Support and FAQs navigation item',\r\n\t\tdisplayPath: 'Navigation|Support and FAQs',\r\n\t\tdisplayType: 'Content',\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t\tportal: 'CP',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpNavigationLocs);\r\nexport type CPNavigationLocType = LocMap;\r\n","
\n\t@if (locDef) {\n\t\t

\n\t\t\t\n\t\t

\n\t} @else if (locKey && pageSectionTitle && pageSectionTitle.length) {\n\t\t

\n\t\t\t\n\t\t

\n\t} @else {\n\t\t

\n\t\t\t\n\t\t\t\t{{ pageSectionTitle }}\n\t\t\t\n\t\t

\n\t}\n\t
\n\t\t\n\t
\n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cp-page-section-title',\n templateUrl: './cp-page-section-title.component.html',\n styleUrls: ['./cp-page-section-title.component.scss'],\n standalone: false\n})\nexport class CpPageSectionTitleComponent {\n\t@Input() pageSectionTitle: string;\n\t@Input() locKey: string;\n\t@Input() hideMain: boolean;\n\t@Input() required: boolean;\n\t@Input() locDef: string;\n\n\tconstructor() {}\n}\n","
\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n
\n","import { Location } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cp-page-section',\n templateUrl: './cp-page-section.component.html',\n styleUrls: ['./cp-page-section.component.scss'],\n standalone: false\n})\nexport class CpPageSectionComponent {\n\t@Input() pageSectionTitle: string;\n\t@Input() locKey: string;\n\t@Input() class: string | { [klass: string]: any };\n\t@Input() padded: boolean = true;\n\t@Input() showTitle: boolean = true;\n\t@Input() hideMain: boolean = false;\n\t@Input() required: boolean = false;\n\t@Input() locDef: string;\n\tconstructor(private location: Location) {}\n\n\tgoBack(): void {\n\t\tthis.location.back();\n\t}\n}\n","\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t

\n\t\t\t\tPassword must not contain login or name\n\t\t\t

\n\t\t
\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tPassword is required\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tPassword must contain at least 12 characters\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tPassword cannot contain more than 50 characters\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tPasswords do not match\n\t\t\t\t\n\t\t\t
\n\t\t\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tConfirm Password is required\n\t\t\t\t\n\t\t\t
\n\t\t\n\t\t\n\t\t\t\n\t\t\t\tPasswords do not match\n\t\t\t\n\t\t\n\t
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { LocalizedText } from '@ats/cm/core';\nimport { CmErrorStateMatcher, CmValidators } from '@ats/cm/ui';\n\ninterface PasswordErrorMatcher {\n\tpassword: CmErrorStateMatcher;\n\tpasswordConfirm: CmErrorStateMatcher;\n}\n@Component({\n selector: 'cp-password-confirmation-form',\n templateUrl: './password-confirmation-form.component.html',\n styleUrls: ['./password-confirmation-form.component.scss'],\n standalone: false\n})\nexport class CpPasswordConfirmationFormComponent implements OnInit {\n\t@Input() formGroup: FormGroup;\n\t@Input() passwordLabel: LocalizedText;\n\t@Input() confirmPasswordLabel: LocalizedText;\n\n\treadonly matchers: PasswordErrorMatcher = {\n\t\tpassword: new CmErrorStateMatcher(['passwordMatch']),\n\t\tpasswordConfirm: new CmErrorStateMatcher(['passwordMatch']),\n\t};\n\n\tconstructor() {}\n\n\tget password(): AbstractControl {\n\t\treturn this.formGroup.get('password') as AbstractControl;\n\t}\n\n\tget confirmPassword(): AbstractControl {\n\t\treturn this.formGroup.get('confirmPassword') as AbstractControl;\n\t}\n\n\tngOnInit() {\n\t\tif (!this.formGroup.get('password')) {\n\t\t\tthis.formGroup.addControl(\n\t\t\t\t'password',\n\t\t\t\tnew FormControl('', [\n\t\t\t\t\tValidators.required,\n\t\t\t\t\tValidators.maxLength(50),\n\t\t\t\t\tValidators.minLength(12),\n\t\t\t\t])\n\t\t\t);\n\t\t}\n\t\tif (!this.formGroup.get('confirmPassword')) {\n\t\t\tthis.formGroup.addControl(\n\t\t\t\t'confirmPassword',\n\t\t\t\tnew FormControl('', [Validators.required])\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\t!this.formGroup.hasValidator(CmValidators.passwordMatch('password', 'confirmPassword'))\n\t\t) {\n\t\t\tthis.formGroup.addValidators(CmValidators.passwordMatch('password', 'confirmPassword'));\n\t\t}\n\t}\n}\n","
\n\t\n\t\t\n\t\n
\n
\n\t
\n\t\t\n\t\t\t\n\t\t\t\tI am at least 18 years old.\n\t\t\t\n\t\t\n\n\t\t
\n\t\t\t\n\t\t\t\tAge verification is required.\n\t\t\t\n\t\t
\n\t
\n\t
\n\t\t\n\t\t\t\n\t\t\t\tI agree to abide by the terms and conditions outlined in this agreement.\n\t\t\t\n\t\t\n\n\t\t\n\t\t\t\n\t\t\t\tAgreement verification is required.\n\t\t\t\n\t\t\n\t
\n\n\t
\n\t\t\n\t
\n
\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { CandidateAccount, CrcatType, HubFeature } from '@ats/api/cm';\nimport { CmAuthService, CmLocalizePipe, Guard } from '@ats/cm/core';\nimport { AtsNotificationService } from '@ats/notifications';\nimport {\n\tAGREEMENT_LOC,\n\tLocalizationService,\n\tspCredentialAgreementLoc,\n} from '@cm/core/localization';\nimport { Apollo, gql } from 'apollo-angular';\nimport { switchMap, take } from 'rxjs';\n\nconst SIGN_AGREEMENT_MUTATION = (guard: Guard) => gql`\n\tmutation signLatestAgreement($request: SignLatestAgreementRequest!, $crcatType: CertRequirementListRequest) {\n\t\tsignLatestAgreement(request: $request) {\n\t\t\tcmcId\n\t\t\t${\n\t\t\t\tguard.reset().everyFeature([HubFeature.CredentialAgreementAtLogin]).all\n\t\t\t\t\t? 'certAgreementRequired'\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\tcertRequirementList(request: $crcatType){\n\t\t\t\tid\n\t\t\t\tcmcId\n\t\t\t\tcatalogId\n\t\t\t}\n\t\t}\n\t}\n`;\n\ntype LatestAgreement = Pick<\n\tCandidateAccount,\n\t'cmcId' | 'certRequirementList' | 'certAgreementRequired'\n>;\n\n@Component({\n selector: 'cp-cert-agreement',\n templateUrl: './cert-agreement.component.html',\n styleUrls: ['./cert-agreement.component.scss'],\n standalone: false\n})\nexport class CpCertAgreementComponent implements OnInit {\n\t@Output() agreementSigned = new EventEmitter();\n\tform: UntypedFormGroup;\n\tagreementLoc = AGREEMENT_LOC.SPCredentialAgreement;\n\n\tconstructor(\n\t\tprivate fb: UntypedFormBuilder,\n\t\tprivate apollo: Apollo,\n\t\tprivate notifications: AtsNotificationService,\n\t\tprivate localize: CmLocalizePipe,\n\t\tprivate auth: CmAuthService,\n\t\tprivate readonly locService: LocalizationService\n\t) {\n\t\tthis.locService.load(spCredentialAgreementLoc, true);\n\t}\n\n\tngOnInit() {\n\t\tthis.form = this.createForm();\n\t}\n\n\tget ageVerified(): AbstractControl {\n\t\treturn this.form.get('ageVerified');\n\t}\n\tget agreed(): AbstractControl {\n\t\treturn this.form.get('agreed');\n\t}\n\n\thandleSubmit(): void {\n\t\tthis.form.markAllAsTouched();\n\t\tif (this.form.status !== 'VALID') {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.signLatestAgreement();\n\t}\n\n\tprivate createForm(): UntypedFormGroup {\n\t\treturn this.fb.group({\n\t\t\tageVerified: [false, [Validators.requiredTrue]],\n\t\t\tagreed: [false, [Validators.requiredTrue]],\n\t\t});\n\t}\n\n\tprivate signLatestAgreement(): void {\n\t\tthis.auth.guard$\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\tswitchMap(guard =>\n\t\t\t\t\tthis.apollo.mutate<{ signLatestAgreement: LatestAgreement }>({\n\t\t\t\t\t\tmutation: SIGN_AGREEMENT_MUTATION(guard),\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\trequest: {},\n\t\t\t\t\t\t\tcrcatType: { types: CrcatType.CertAgreement },\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(({ data }) => {\n\t\t\t\t// There was a situation where candidates could sign the agreement,\n\t\t\t\t// but some issue in the BE kept certAgreementRequired to true so they couldn't pass the step in the required stepper.\n\t\t\t\t// This component is also shared on the CP - Credentials - Agreement page and this property could be undefined if the feature is off.\n\t\t\t\t// So, we want to just check if it is falsey for success.\n\t\t\t\tif (!(data.signLatestAgreement || {}).certAgreementRequired) {\n\t\t\t\t\tthis.notifications.popSuccess({\n\t\t\t\t\t\tid: 'sign-agreement-success',\n\t\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t\t'Agreement signed successfully',\n\t\t\t\t\t\t\t'Credential.Agreement/Credentials.Agreement.NotificationMessage.Success'\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.notifications.popError({\n\t\t\t\t\t\tid: 'sign-agreement-failure',\n\t\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t\t'A system error has occurred. Please contact customer support for assistance.',\n\t\t\t\t\t\t\t'Core/Error.GUID.ErrorWithSupportRequired'\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.agreementSigned.emit();\n\t\t\t});\n\t}\n}\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\nimport { AddressFormLocs } from 'libs/cm/ui/src/lib/components/cm-address-form/address-form.type';\r\n\r\ntype CPRequirementAddressFormLocs =\r\n\t| 'CPRequirementAddressFormLabelCountry'\r\n\t| 'CPRequirementAddressFormErrorCountryRequired'\r\n\t| 'CPRequirementAddressFormErrorInvalidCountry'\r\n\t| 'CPRequirementAddressFormLabelAddress'\r\n\t| 'CPRequirementAddressFormLabelCity'\r\n\t| 'CPRequirementAddressFormLabelState'\r\n\t| 'CPRequirementAddressFormLabelPostal'\r\n\t| 'CPRequirementAddressFormLabelPhone'\r\n\t| 'CPRequirementAddressFormLabelFax'\r\n\t| 'CPRequirementAddressFormErrorPhoneRequired'\r\n\t| 'CPRequirementAddressFormErrorPhoneVueUsaCanada'\r\n\t| 'CPRequirementAddressFormErrorPhoneVueNoZeros'\r\n\t| 'CPRequirementAddressFormErrorPostalRequired'\r\n\t| 'CPRequirementAddressFormErrorPostalVueUSA'\r\n\t| 'CPRequirementAddressFormErrorPostalVueCanada'\r\n\t| 'CPRequirementAddressFormErrorPostalMaxLength'\r\n\t| 'CPRequirementAddressFormErrorStateRequired'\r\n\t| 'CPRequirementAddressFormErrorStateRequiredVueHint'\r\n\t| 'CPRequirementAddressFormErrorStateInvalid'\r\n\t| 'CPRequirementAddressFormErrorCityRequired'\r\n\t| 'CPRequirementAddressFormLabelAddressContinued1'\r\n\t| 'CPRequirementAddressFormLabelAddressContinued2'\r\n\t| 'CPRequirementAddressFormLabelBusinessAddress'\r\n\t| 'CPRequirementAddressFormButtonUpdateAddress'\r\n\t| 'CPRequirementAddressFormButtonCancel'\r\n\t| 'CPRequirementAddressFormErrorAddressRequired';\r\n\r\nconst dpRoot = 'Candidate Requirement|Addresses';\r\n\r\nconst sharedLocDefs = {\r\n\tfeature: HubFeature.CandidateProfileAddresses,\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n\tportal: 'CP' as LocPortal,\r\n};\r\n\r\nexport const cpRequirementAddressFormLocs: LocDefs = {\r\n\tCPRequirementAddressFormLabelAddress: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Address',\r\n\t\tdefaultValue: 'Address',\r\n\t\tdescription: 'Label for address.',\r\n\t\tdisplayPath: `${dpRoot}|Address`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelAddressContinued1: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Address2',\r\n\t\tdefaultValue: 'Address (cont.)',\r\n\t\tdescription: 'Label for address second line.',\r\n\t\tdisplayPath: `${dpRoot}|Address (line 2)`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelAddressContinued2: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Address3',\r\n\t\tdefaultValue: 'Address (cont.)',\r\n\t\tdescription: 'Label for address third line.',\r\n\t\tdisplayPath: `${dpRoot}|Address (line 3)`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelBusinessAddress: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Business',\r\n\t\tdefaultValue: 'This is a Business Address',\r\n\t\tdescription: 'Label for the business address checkbox.',\r\n\t\tdisplayPath: `${dpRoot}|Is Business`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelCity: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.City',\r\n\t\tdefaultValue: 'City',\r\n\t\tdescription: 'Error saying the city is required.',\r\n\t\tdisplayPath: `${dpRoot}|City`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelCountry: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Country',\r\n\t\tdefaultValue: 'Country',\r\n\t\tdescription: 'Label for country.',\r\n\t\tdisplayPath: `${dpRoot}|Country`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelFax: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Fax',\r\n\t\tdefaultValue: 'Fax',\r\n\t\tdescription: 'Label for fax.',\r\n\t\tdisplayPath: `${dpRoot}|Fax`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelPhone: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.Phone',\r\n\t\tdefaultValue: 'Phone',\r\n\t\tdescription: 'Label for phone.',\r\n\t\tdisplayPath: `${dpRoot}|Phone`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelPostal: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.PostalCode',\r\n\t\tdefaultValue: 'Zip/Postal Code',\r\n\t\tdescription: 'Label for zip.',\r\n\t\tdisplayPath: `${dpRoot}|Zip/Postal Code`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormLabelState: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldLabel.State',\r\n\t\tdefaultValue: 'State/Province',\r\n\t\tdescription: 'Label for state.',\r\n\t\tdisplayPath: `${dpRoot}|State`,\r\n\t\tdisplayType: 'Label',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormErrorAddressRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.AddressRequired',\r\n\t\tdefaultValue: 'Address is required',\r\n\t\tdescription: 'Error saying the address is required.',\r\n\t\tdisplayPath: `${dpRoot}|Address Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormErrorCityRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.CityRequired',\r\n\t\tdefaultValue: 'City is required',\r\n\t\tdescription: 'Error saying city is required.',\r\n\t\tdisplayPath: `${dpRoot}|City Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormErrorCountryRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.CountryRequired',\r\n\t\tdefaultValue: 'Country is required',\r\n\t\tdescription: 'Error saying country is required.',\r\n\t\tdisplayPath: `${dpRoot}|Country Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormErrorInvalidCountry: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.InvalidCountry',\r\n\t\tdefaultValue: 'Invalid country',\r\n\t\tdescription: 'Error saying the selected country is invalid.',\r\n\t\tdisplayPath: `${dpRoot}|Invalid Country`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormErrorStateInvalid: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.StateInvalid',\r\n\t\tdefaultValue: 'Invalid state/province',\r\n\t\tdescription: 'Error saying the selected state is invalid.',\r\n\t\tdisplayPath: `${dpRoot}|Invalid State`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormErrorStateRequired: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.FieldError.StateRequired',\r\n\t\tdefaultValue: 'State/Province is required',\r\n\t\tdescription: 'Error saying state is required.',\r\n\t\tdisplayPath: `${dpRoot}|State Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormErrorStateRequiredVueHint: {\r\n\t\tdefaultValue: 'State is required. If your state is not listed, please type N/A',\r\n\t\tdescription: 'Error with Vue specific hint for state required.',\r\n\t\tdisplayPath: `${dpRoot}|State Required Vue Hint`,\r\n\t\tdisplayType: 'Error',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPRequirementAddressFormErrorPostalRequired: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalRequired',\r\n\t\tdefaultValue: 'Zip/Postal Code is required',\r\n\t\tdescription: 'Error saying the postal code is required.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPRequirementAddressFormErrorPostalVueUSA: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalUsa',\r\n\t\tdefaultValue:\r\n\t\t\t'Zip/Postal Code must follow one of the two following formats: #####, #####-####',\r\n\t\tdescription:\r\n\t\t\t'Error saying the postal code must follow one of the two following formats: #####, #####-####.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code USA Format`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPRequirementAddressFormErrorPostalVueCanada: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PostalCanada',\r\n\t\tdefaultValue: 'Zip/Postal Code must follow the following format: A#A#A#',\r\n\t\tdescription: 'Error saying the postal code must follow the following format: a#a#a#.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Canada Format`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPRequirementAddressFormErrorPhoneRequired: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneRequired',\r\n\t\tdefaultValue: 'Phone number is required',\r\n\t\tdescription: 'Error saying the phone number is required.',\r\n\t\tdisplayPath: `${dpRoot}|Phone Number Required`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPRequirementAddressFormErrorPhoneVueUsaCanada: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneUsa',\r\n\t\tdefaultValue: 'Phone number must have 10 numbers',\r\n\t\tdescription: 'Error saying the phone number must have 10 numbers.',\r\n\t\tdisplayPath: `${dpRoot}|Phone Number USA Canada Format`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPRequirementAddressFormErrorPhoneVueNoZeros: {\r\n\t\tlegacyName:\r\n\t\t\t'CandidateAccess.Integration.Egress.PearsonVue/CandidateProfile.Addresses.FieldError.PhoneZeros',\r\n\t\tdefaultValue: 'Phone number must not be all zeros',\r\n\t\tdescription: 'Error saying the phone number must not be all zeros.',\r\n\t\tdisplayPath: `${dpRoot}|Phone Number No Zeros`,\r\n\t\tdisplayType: 'Error',\r\n\t\t...sharedLocDefs,\r\n\t\tfeature: HubFeature.CandidateAccessIntegrationEgressPearsonVue,\r\n\t},\r\n\tCPRequirementAddressFormErrorPostalMaxLength: {\r\n\t\tdefaultValue: 'Maximum number of allowed characters in postal code are: ',\r\n\t\tdescription: 'Error describing the maximum number of characters in the postal code.',\r\n\t\tdisplayPath: `${dpRoot}|Postal Code Length`,\r\n\t\tdisplayType: 'Error',\r\n\t},\r\n\tCPRequirementAddressFormButtonCancel: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.Button.Cancel',\r\n\t\tdefaultValue: 'Cancel',\r\n\t\tdescription:\r\n\t\t\t'Button to cancel editing of candidate addresses. This is shared between mailing address, localized address and the other address fields.',\r\n\t\tdisplayPath: `${dpRoot}|Cancel`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n\tCPRequirementAddressFormButtonUpdateAddress: {\r\n\t\tlegacyName: 'CandidateProfile.Addresses/Candidates.Addresses.Button.UpdateAddress',\r\n\t\tdefaultValue: 'Update Address',\r\n\t\tdescription: 'Button to update the address.',\r\n\t\tdisplayPath: `${dpRoot}|Save`,\r\n\t\tdisplayType: 'Button',\r\n\t\t...sharedLocDefs,\r\n\t},\r\n};\r\nexport const REQUIREMENT_ADDRESS_FORM_LOC_KEYS = MapLocKeys(\r\n\tcpRequirementAddressFormLocs\r\n);\r\nexport type CpRequirementAddressFormLocKeys = LocMap;\r\n\r\nexport const mappedAddressFormLocs: AddressFormLocs = {\r\n\tAddressFormLabelCountry: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelCountry,\r\n\tAddressFormLabelFax: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelFax,\r\n\tAddressFormErrorCountryRequired:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorCountryRequired,\r\n\tAddressFormErrorInvalidCountry:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorInvalidCountry,\r\n\tAddressFormLabelAddress: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelAddress,\r\n\tAddressFormLabelCity: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelCity,\r\n\tAddressFormLabelState: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelState,\r\n\tAddressFormLabelPostal: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelPostal,\r\n\tAddressFormLabelPhone: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelPhone,\r\n\tAddressFormErrorPhoneRequired:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorPhoneRequired,\r\n\tAddressFormErrorPhoneVueUsaCanada:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorPhoneVueUsaCanada,\r\n\tAddressFormErrorPhoneVueNoZeros:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorPhoneVueNoZeros,\r\n\tAddressFormErrorPostalRequired:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorPostalRequired,\r\n\tAddressFormErrorPostalVueUSA:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorPostalVueUSA,\r\n\tAddressFormErrorPostalVueCanada:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorPostalVueCanada,\r\n\tAddressFormErrorPostalMaxLength:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorPostalMaxLength,\r\n\tAddressFormErrorStateRequired:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorStateRequired,\r\n\tAddressFormErrorStateRequiredVueHint:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorStateRequiredVueHint,\r\n\tAddressFormErrorStateInvalid:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorStateInvalid,\r\n\tAddressFormErrorCityRequired:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorCityRequired,\r\n\tAddressFormLabelAddressContinued2:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelAddressContinued1,\r\n\tAddressFormLabelAddressContinued3:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelAddressContinued2,\r\n\tAddressFormLabelBusinessAddress:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormLabelBusinessAddress,\r\n\tAddressFormButtonUpdateAddress:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormButtonUpdateAddress,\r\n\tAddressFormButtonCancel: REQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormButtonCancel,\r\n\tAddressFormErrorAddressRequired:\r\n\t\tREQUIREMENT_ADDRESS_FORM_LOC_KEYS.CPRequirementAddressFormErrorAddressRequired,\r\n};\r\n","\n\t\n\t\n\n","import { Component, EventEmitter, Inject, Input, Output } from '@angular/core';\nimport { CandidateAccount, HubFeature, PortalTypeEnum, UpdateCandidateRequest } from '@ats/api/cm';\nimport { Address, AddressType, CmAuthService, CmLocalizePipe } from '@ats/cm/core';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { Apollo } from 'apollo-angular';\nimport gql from 'graphql-tag';\nimport { AddressFormLocs } from 'libs/cm/ui/src/lib/components/cm-address-form/address-form.type';\nimport { Observable } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport {\n\tCpRequirementAddressFormLocKeys,\n\tcpRequirementAddressFormLocs,\n\tmappedAddressFormLocs,\n} from './cp-requirement-address-form.locs';\n\ntype CandidateAddress = Address & { cmcId: number };\n\nconst ADDRESS_QUERY = gql`\n\tquery candidateMailingAddresses {\n\t\tcandidateAccount {\n\t\t\tcmcId\n\t\t\tprimaryInformationUpdateRequired\n\t\t\tcandidate {\n\t\t\t\tcmcId\n\t\t\t\tline1: addr1Line1\n\t\t\t\tline2: addr1Line2\n\t\t\t\tline3: addr1Line3\n\t\t\t\tcity: addr1City\n\t\t\t\tstate: addr1State\n\t\t\t\tpostal: addr1PostalCode\n\t\t\t\tcountry: addr1CountryCode\n\t\t\t\tbusiness: addr1Business\n\t\t\t\tphone: addr1PhoneNumber\n\t\t\t\tfax: addr1FaxNumber\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst ADDRESS_MUTATION = gql`\n\tmutation updateCandidate($request: UpdateCandidateRequest!) {\n\t\tupdateCandidate(request: $request) {\n\t\t\tcmcId\n\t\t\tmailingAddress: candidate {\n\t\t\t\tcmcId\n\t\t\t\tline1: addr1Line1\n\t\t\t\tline2: addr1Line2\n\t\t\t\tline3: addr1Line3\n\t\t\t\tcity: addr1City\n\t\t\t\tstate: addr1State\n\t\t\t\tpostal: addr1PostalCode\n\t\t\t\tcountry: addr1CountryCode\n\t\t\t\tbusiness: addr1Business\n\t\t\t\tphone: addr1PhoneNumber\n\t\t\t\tfax: addr1FaxNumber\n\t\t\t}\n\t\t}\n\t}\n`;\n\n@Component({\n selector: 'cp-mailing-address',\n templateUrl: './mailing-address.component.html',\n styleUrls: ['./mailing-address.component.scss'],\n providers: [LocalizationProvider({ ...cpRequirementAddressFormLocs })],\n standalone: false\n})\nexport class CpMailingAddressComponent {\n\t@Input() touchOnInit: boolean = false;\n\t@Output() addressUpdate = new EventEmitter();\n\treadonly portalType = PortalTypeEnum.CandidatePortal;\n\treadonly hasVueValidation$: Observable;\n\treadonly address$: Observable;\n\treadonly primaryInformationUpdateRequired$: Observable;\n\taddressFormLocs: AddressFormLocs;\n\n\tconstructor(\n\t\t@Inject(LOC_INJECTOR)\n\t\tpublic readonly locs: CpRequirementAddressFormLocKeys,\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly notifications: AtsNotificationService,\n\t\tprivate readonly localize: CmLocalizePipe,\n\t\tprivate readonly auth: CmAuthService\n\t) {\n\t\tthis.hasVueValidation$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([HubFeature.CandidateAccessIntegrationEgressPearsonVue]).all\n\t\t\t)\n\t\t);\n\t\tthis.address$ = this.fetchAddress$();\n\t\tthis.primaryInformationUpdateRequired$ = this.fetchCandidateAccount$().pipe(\n\t\t\tmap(({ primaryInformationUpdateRequired }) => primaryInformationUpdateRequired)\n\t\t);\n\t\tthis.addressFormLocs = mappedAddressFormLocs;\n\t}\n\n\thandleSubmit(address: Address) {\n\t\tconst candidate: UpdateCandidateRequest = {\n\t\t\taddr1Line1: address.line1,\n\t\t\taddr1Line2: address.line2,\n\t\t\taddr1Line3: address.line3,\n\t\t\taddr1City: address.city,\n\t\t\taddr1State: address.state,\n\t\t\taddr1PostalCode: address.postal,\n\t\t\taddr1CountryCode: address.country,\n\t\t\taddr1Business: address.business,\n\t\t\taddr1PhoneNumber: address.phone,\n\t\t\taddr1FaxNumber: address.fax,\n\t\t};\n\t\tthis.updateAddress({\n\t\t\t...candidate,\n\t\t});\n\t}\n\n\tprivate fetchCandidateAccount$(): Observable<{\n\t\tcmcId?: number;\n\t\tprimaryInformationUpdateRequired?: boolean;\n\t\tcandidate?: CandidateAddress;\n\t}> {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{\n\t\t\t\tcandidateAccount: {\n\t\t\t\t\tcmcId: number;\n\t\t\t\t\tprimaryInformationUpdateRequired: boolean;\n\t\t\t\t\tcandidate: CandidateAddress;\n\t\t\t\t};\n\t\t\t}>({\n\t\t\t\tquery: ADDRESS_QUERY,\n\t\t\t})\n\t\t\t.valueChanges.pipe(\n\t\t\t\tmap(({ data }) => ({\n\t\t\t\t\t...(data?.candidateAccount || {}),\n\t\t\t\t}))\n\t\t\t);\n\t}\n\n\tprivate fetchAddress$(): Observable {\n\t\treturn this.fetchCandidateAccount$().pipe(\n\t\t\tmap(({ candidate }) => ({\n\t\t\t\t...candidate,\n\t\t\t\ttype: AddressType.MAILING,\n\t\t\t}))\n\t\t);\n\t}\n\n\tprivate updateAddress(candidate: UpdateCandidateRequest) {\n\t\tthis.primaryInformationUpdateRequired$\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\tswitchMap(primaryInformationUpdateRequired =>\n\t\t\t\t\tthis.apollo.mutate<\n\t\t\t\t\t\t{ candidateAccoutn: CandidateAccount },\n\t\t\t\t\t\t{ request: UpdateCandidateRequest }\n\t\t\t\t\t>({\n\t\t\t\t\t\tmutation: ADDRESS_MUTATION,\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\t...candidate,\n\t\t\t\t\t\t\t\tacceptIfNoChange: primaryInformationUpdateRequired,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.notifications.popSuccess({\n\t\t\t\t\tid: 'address-form',\n\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t'Changes saved',\n\t\t\t\t\t\t'CandidateProfile.Addresses/Profile.Addresses.NotificationMessage.Success'\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t\tthis.addressUpdate.emit();\n\t\t\t});\n\t}\n}\n","
\n\t\n\t\t\n\t\t\t\n\t\t\t\tFirst Name\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tFirst name is required\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tName must be Romanized\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\t\n\t\t\n\t\t\t\n\t\t\t\tLast Name\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tLast name is required\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tName must be Romanized\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\t
\n\t\t\n\t
\n
\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport {\n\tUntypedFormBuilder,\n\tUntypedFormControl,\n\tUntypedFormGroup,\n\tValidators,\n} from '@angular/forms';\nimport { Candidate, CandidateAccount, HubFeature, UpdateCandidateRequest } from '@ats/api/cm';\nimport { CmAuthService, CmLocalizePipe, Guard } from '@ats/cm/core';\nimport { CmValidators } from '@ats/cm/ui';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { AtsRegex } from '@ats/utility';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo } from 'apollo-angular';\nimport gql from 'graphql-tag';\nimport { Observable, switchMap } from 'rxjs';\nimport { map, take, withLatestFrom } from 'rxjs/operators';\nimport { LOC_KEYS } from './name-confirmation.locs';\n\nconst INFORMATION_QUERY = (guard: Guard) => gql`\n\tquery candidateAccount {\n\t\tcandidateAccount {\n\t\t\tcmcId\n\t\t\t${\n\t\t\t\tguard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireNameVerification,\n\t\t\t\t\t]).all\n\t\t\t\t\t? 'candidateNameVerificationRequired'\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\tnameUpdateRequired\n\t\t\tcandidate {\n\t\t\t\tcmcId\n\t\t\t\tnameInvalid\n\t\t\t\tnameLast\n\t\t\t\tnameFirst\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst INFORMATION_MUTATION = (guard: Guard) => gql`\n\tmutation updateCandidate($candidate: UpdateCandidateRequest!) {\n\t\tupdateCandidate(request: $candidate) {\n\t\t\tcmcId\n\t\t\t${\n\t\t\t\tguard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireNameVerification,\n\t\t\t\t\t]).all\n\t\t\t\t\t? 'candidateNameVerificationRequired'\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\tnameUpdateRequired\n\t\t\tcandidate {\n\t\t\t\tcmcId\n\t\t\t\tnameInvalid\n\t\t\t\tnameLast\n\t\t\t\tnameFirst\n\t\t\t}\n\t\t}\n\t}\n`;\n\n@UntilDestroy()\n@Component({\n\tselector: 'cp-name-confirmation',\n\ttemplateUrl: './name-confirmation.component.html',\n\tstyleUrls: ['./name-confirmation.component.scss'],\n\tstandalone: false,\n})\nexport class CpNameConfirmationComponent implements OnInit {\n\tform: UntypedFormGroup;\n\t@Output() nameVerified = new EventEmitter();\n\tcurrentFirstName: string;\n\tcurrentLastName: string;\n\t// We always want to allow for the candidate to submit the\n\t// first time in case the data is correct due to candidateNameVerificationRequired.\n\t// After that, we check if they have changed a value in the form.\n\tallowNoChangesSubmission: boolean = true;\n\tlocs = LOC_KEYS;\n\n\tconstructor(\n\t\tprivate readonly fb: UntypedFormBuilder,\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly localize: CmLocalizePipe,\n\t\tprivate readonly notifications: AtsNotificationService,\n\t\tprivate readonly auth: CmAuthService\n\t) {}\n\n\tngOnInit() {\n\t\tconst requireRomanizedName$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireRomanizedName,\n\t\t\t\t\t\t]).all\n\t\t\t)\n\t\t);\n\t\tthis.fetchCandidate$()\n\t\t\t.pipe(withLatestFrom(requireRomanizedName$))\n\t\t\t.subscribe(([candidateAccount, requireRomanizedName]) => {\n\t\t\t\tthis.currentFirstName = ((candidateAccount || {}).candidate || {}).nameFirst;\n\t\t\t\tthis.currentLastName = ((candidateAccount || {}).candidate || {}).nameLast;\n\t\t\t\tthis.buildForm((candidateAccount || {}).candidate, requireRomanizedName);\n\t\t\t});\n\t}\n\n\tget nameFirst(): UntypedFormControl {\n\t\treturn this.form.get('nameFirst') as UntypedFormControl;\n\t}\n\n\tget nameLast(): UntypedFormControl {\n\t\treturn this.form.get('nameLast') as UntypedFormControl;\n\t}\n\n\thandleSubmit() {\n\t\tthis.form.markAllAsTouched();\n\t\tif (!this.form.valid) {\n\t\t\treturn;\n\t\t}\n\t\tconst { nameFirst, nameLast } = this.form.value;\n\n\t\tconst candidate: UpdateCandidateRequest = {\n\t\t\tnameFirst,\n\t\t\tnameLast,\n\t\t};\n\n\t\tthis.updateCandidate(candidate);\n\t}\n\n\tprivate buildForm(candidate: Candidate, requireRomanizedName?: boolean): void {\n\t\tthis.form = this.fb.group({\n\t\t\tnameFirst: [\n\t\t\t\t(candidate || {}).nameFirst || null,\n\t\t\t\t[\n\t\t\t\t\tValidators.required,\n\t\t\t\t\tValidators.pattern(AtsRegex.EXCLUDE_QUESTION_MARK_AT_START_OF_STRING),\n\t\t\t\t],\n\t\t\t],\n\t\t\tnameLast: [\n\t\t\t\t(candidate || {}).nameLast || null,\n\t\t\t\t[\n\t\t\t\t\tValidators.required,\n\t\t\t\t\tValidators.pattern(AtsRegex.EXCLUDE_QUESTION_MARK_AT_START_OF_STRING),\n\t\t\t\t],\n\t\t\t],\n\t\t});\n\t\tif (requireRomanizedName) {\n\t\t\tthis.form.get('nameFirst')?.addValidators([CmValidators.singleByte]);\n\t\t\tthis.form.get('nameLast')?.addValidators([CmValidators.singleByte]);\n\t\t}\n\t}\n\n\tprivate fetchCandidate$(): Observable> {\n\t\treturn this.auth.guard$.pipe(\n\t\t\tuntilDestroyed(this),\n\t\t\tswitchMap(\n\t\t\t\tguard =>\n\t\t\t\t\tthis.apollo.watchQuery<{ candidateAccount: Partial }>({\n\t\t\t\t\t\tquery: INFORMATION_QUERY(guard),\n\t\t\t\t\t}).valueChanges\n\t\t\t),\n\t\t\tmap(({ data }) => (data || {}).candidateAccount)\n\t\t);\n\t}\n\n\tprivate updateCandidate(candidate: UpdateCandidateRequest) {\n\t\tif (\n\t\t\t!this.allowNoChangesSubmission &&\n\t\t\tthis.currentFirstName === candidate.nameFirst &&\n\t\t\tthis.currentLastName === candidate.nameLast\n\t\t) {\n\t\t\tthis.notifications.popError({\n\t\t\t\tid: 'name-no-changes-made',\n\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t'No changes made',\n\t\t\t\t\t'Core/System.Global.Notification.NoChanges'\n\t\t\t\t),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.auth.guard$\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\tswitchMap(guard =>\n\t\t\t\t\tthis.apollo.mutate<\n\t\t\t\t\t\t{ updateCandidate: CandidateAccount },\n\t\t\t\t\t\t{ candidate: UpdateCandidateRequest }\n\t\t\t\t\t>({\n\t\t\t\t\t\tmutation: INFORMATION_MUTATION(guard),\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\tcandidate: {\n\t\t\t\t\t\t\t\t...candidate,\n\t\t\t\t\t\t\t\tacceptIfNoChange: this.allowNoChangesSubmission,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\twithLatestFrom(\n\t\t\t\t\tthis.auth.guard$.pipe(\n\t\t\t\t\t\tmap(\n\t\t\t\t\t\t\tguard =>\n\t\t\t\t\t\t\t\tguard\n\t\t\t\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireRomanizedName,\n\t\t\t\t\t\t\t\t\t]).all\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tmap(([{ data }, hasRomanizationFeature]) => {\n\t\t\t\t\tconst nameUpdateRequired = ((data || {}).updateCandidate || {})\n\t\t\t\t\t\t.nameUpdateRequired;\n\t\t\t\t\tif (nameUpdateRequired && hasRomanizationFeature) {\n\t\t\t\t\t\tthis.notifications.popError({\n\t\t\t\t\t\t\tid: 'name-romanized-error',\n\t\t\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t\t\t'Name must be Romanized',\n\t\t\t\t\t\t\t\t'CandidateProfile.PrimaryInformation.RequireRomanizedName/Profile.Information.NotificationMessage.NonRomanizedName'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (nameUpdateRequired) {\n\t\t\t\t\t\tthis.notifications.popError({\n\t\t\t\t\t\t\tid: 'name-invalid-error',\n\t\t\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t\t\t'Name has invalid characters',\n\t\t\t\t\t\t\t\t'CandidateAccess/System.Prerequisite.NotificationMessage.InvalidCharacters'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe(success => {\n\t\t\t\tthis.allowNoChangesSubmission = false;\n\t\t\t\tif (success) {\n\t\t\t\t\tthis.notifications.popSuccess({\n\t\t\t\t\t\tid: 'info-form',\n\t\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t\t'Your name is confirmed. Please contact support for any further name changes.',\n\t\t\t\t\t\t\t'CandidateAccess/System.Prerequisite.Notification.ConfirmSuccess'\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t\tthis.nameVerified.emit();\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPNameConfirmationFormLoc = 'CPNameConfirmationFormErrorCharacterExclusion';\r\n\r\nexport const cpNameConfirmationFormLocs: LocDefs = {\r\n\tCPNameConfirmationFormErrorCharacterExclusion: {\r\n\t\tdefaultValue: 'Special character ? is not allowed at the start',\r\n\t\tdescription: 'Error displayed when candidate name contains a question mark',\r\n\t\tdisplayPath: 'System|Prerequisite|Name confirmation|Character Exclusion Error',\r\n\t\tdisplayType: 'Error',\r\n\t\tshared: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpNameConfirmationFormLocs);\r\nexport type CPNameConfirmationFormLocType = LocMap;\r\n","
\n\t\n\t\t\n\t\t\t\n\t\t\t\tFirst Name\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tName must be Romanized\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\t\tLast Name\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tName must be Romanized\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tPreferred First Name\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tPreferred Last Name\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\t\tEmail Address\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tEmail address is required\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tInvalid email address\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tEmail address must be at least 6 characters\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tCompany Name\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n\t\n\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tNon-Romanized First Name\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tNon-Romanized Last Name\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tNon-Romanized Company Name\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n\t
\n\t\t\n\t
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { CandidateAccount, HubFeature } from '@ats/api/cm';\nimport { CmAuthService, CmLocalizationService, Guard } from '@ats/cm/core';\nimport { CmFormService, CmValidators } from '@ats/cm/ui';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { AtsRegex } from '@ats/utility';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo } from 'apollo-angular';\nimport { DocumentNode } from 'graphql';\nimport gql from 'graphql-tag';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { catchError, map, switchMap, take, tap } from 'rxjs/operators';\nimport { LOC_KEYS } from './personal-info-form.locs';\n\nconst CANDIDATE_FRAGMENT = (\n\tincludePreferred: boolean,\n\tincludeLocalized: boolean,\n\tincludeDob: boolean\n): DocumentNode => gql`\nfragment PersonalInfo on Candidate {\n\tcmcId\n\tnameLast\n\tnameFirst\n\temail\n\tcompanyName\n\t${\n\t\tincludePreferred\n\t\t\t? `\n\t\t\t\tpreferredNameLast\n\t\t\t\tpreferredNameFirst\n\t\t\t`\n\t\t\t: ''\n\t}\n\t${\n\t\tincludeLocalized\n\t\t\t? `locNameFirst\n\t\t\tlocNameLast\n\t\t\tlocCompanyName`\n\t\t\t: ''\n\t}\n\t${includeDob ? `dateOfBirth` : ''}\n}\n`;\n\nconst INFORMATION_QUERY = (\n\tincludePreferred: boolean,\n\tincludeLocalized: boolean,\n\tincludeDob: boolean,\n\tguard: Guard\n): DocumentNode => gql`\n\tquery candidateAccount {\n\t\tcandidateAccount {\n\t\t\tcmcId\n\t\t\tcanUpdateName\n\t\t\tprimaryInformationUpdateRequired\n\t\t\t${\n\t\t\t\tguard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.someFeatures([\n\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireMinimum,\n\t\t\t\t\t\tHubFeature.CandidateAccessIntegrationEgressPearsonVue,\n\t\t\t\t\t]).all\n\t\t\t\t\t? 'minimumPrimaryProfileInformationRequired'\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\t${\n\t\t\t\tguard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireEmailConfirmation,\n\t\t\t\t\t]).all\n\t\t\t\t\t? 'candidateEmailConfirmationRequired'\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\t${includeDob ? 'dateOfBirthInvalid' : ''}\n\n\t\t\tcandidate {\n\t\t\t\t...PersonalInfo\n\t\t\t}\n\t\t}\n\t}\n\t${CANDIDATE_FRAGMENT(includePreferred, includeLocalized, includeDob)}\n`;\n\nconst INFORMATION_MUTATION = (\n\tincludePreferred: boolean,\n\tincludeLocalized: boolean,\n\tincludeDob: boolean\n): DocumentNode => gql`\n\tmutation updateCandidate($candidate: UpdateCandidateRequest!) {\n\t\tupdateCandidate(request: $candidate) {\n\t\t\tcmcId\n\t\t\tnameUpdateRequired\n\t\t\t${includeDob ? 'dateOfBirthInvalid' : ''}\n\t\t\tcandidate {\n\t\t\t\t...PersonalInfo\n\t\t\t}\n\t\t}\n\t}\n\t${CANDIDATE_FRAGMENT(includePreferred, includeLocalized, includeDob)}\n`;\n\n@UntilDestroy()\n@Component({\n\tselector: 'cp-personal-info-form',\n\ttemplateUrl: './personal-info-form.component.html',\n\tstyleUrls: ['./personal-info-form.component.scss'],\n\tstandalone: false,\n})\nexport class CpPersonalInfoFormComponent implements OnInit {\n\t@Input() touchOnInit: boolean = false;\n\t@Output() candidateUpdate = new EventEmitter();\n\t@Input() isRequirementStepper: boolean = false;\n\tform: UntypedFormGroup;\n\tpreferredNameMeta$: Observable<{ available: boolean; editable: boolean }>;\n\tcanEditEmail$: Observable;\n\thasAffiliations$: Observable;\n\thasLocalizedInfo$: Observable;\n\temailConfirmationRequired$: Observable;\n\trequireRomanizedName$: Observable;\n\tincludeDob$: Observable;\n\tisSubmitting: boolean = false;\n\ttoday = new Date();\n\tlocs = LOC_KEYS;\n\n\tshowPrimaryInfoFormFields = false;\n\tshowEmailField = false;\n\n\tconstructor(\n\t\tprivate readonly auth: CmAuthService,\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly fb: UntypedFormBuilder,\n\t\tprivate readonly formService: CmFormService,\n\t\tprivate readonly notifications: AtsNotificationService,\n\t\tprivate readonly localize: CmLocalizationService\n\t) {\n\t\tthis.includeDob$ = this.auth.guard$.pipe(\n\t\t\tmap(guard => guard.reset().everyFeature([HubFeature.CandidateProfileDateOfBirth]).all)\n\t\t);\n\t\tthis.preferredNameMeta$ = this.auth.guard$.pipe(\n\t\t\tmap(guard => ({\n\t\t\t\tavailable: guard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([HubFeature.CandidateProfilePrimaryInformationPreferredName]).all,\n\t\t\t\teditable: guard\n\t\t\t\t\t.reset()\n\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationPreferredName,\n\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationPreferredNameCandidateEdit,\n\t\t\t\t\t]).all,\n\t\t\t}))\n\t\t);\n\n\t\tthis.requireRomanizedName$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireRomanizedName,\n\t\t\t\t\t\t]).all\n\t\t\t)\n\t\t);\n\n\t\tthis.hasAffiliations$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([HubFeature.CandidateProfilePrimaryInformationAffiliation])\n\t\t\t\t\t\t.all\n\t\t\t)\n\t\t);\n\n\t\tthis.canEditEmail$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationEmailCandidateEdit,\n\t\t\t\t\t\t]).all\n\t\t\t)\n\t\t);\n\n\t\tthis.hasLocalizedInfo$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard.reset().everyFeature([HubFeature.CandidateProfileLocalizedInformation])\n\t\t\t\t\t\t.all\n\t\t\t)\n\t\t);\n\n\t\tthis.emailConfirmationRequired$ = this.auth.guard$.pipe(\n\t\t\tmap(\n\t\t\t\tguard =>\n\t\t\t\t\tguard\n\t\t\t\t\t\t.reset()\n\t\t\t\t\t\t.everyFeature([\n\t\t\t\t\t\t\tHubFeature.CandidateProfilePrimaryInformationRequireEmailConfirmation,\n\t\t\t\t\t\t]).all\n\t\t\t)\n\t\t);\n\t}\n\n\tget nameFirst() {\n\t\treturn this.form.get('nameFirst');\n\t}\n\n\tget nameLast() {\n\t\treturn this.form.get('nameLast');\n\t}\n\n\tget emailAddr() {\n\t\treturn this.form.get('emailAddr');\n\t}\n\n\tget companyName() {\n\t\treturn this.form.get('companyName');\n\t}\n\n\tget preferredNameFirst() {\n\t\treturn this.form.get('preferredNameFirst');\n\t}\n\n\tget preferredNameLast() {\n\t\treturn this.form.get('preferredNameLast');\n\t}\n\n\tget localizedNameFirst() {\n\t\treturn this.form.get('localizedNameFirst');\n\t}\n\n\tget localizedNameLast() {\n\t\treturn this.form.get('localizedNameLast');\n\t}\n\n\tget localizedCompanyName() {\n\t\treturn this.form.get('localizedCompanyName');\n\t}\n\n\tget dateOfBirth() {\n\t\treturn this.form.get('dateOfBirth');\n\t}\n\n\tngOnInit(): void {\n\t\tthis.buildForm();\n\t}\n\n\thandleSubmit(): boolean | void {\n\t\tthis.form.markAllAsTouched();\n\n\t\tif (\n\t\t\tthis.formService.isPristine(this.form, this.form.value.acceptIfNoChange) ||\n\t\t\t!this.form.valid\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.isSubmitting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.saveChanges().subscribe(result => {\n\t\t\tthis.isSubmitting = false;\n\t\t\tif (result) {\n\t\t\t\tthis.candidateUpdate.emit();\n\t\t\t\tthis.notifications.popSuccess({\n\t\t\t\t\tid: 'info-form',\n\t\t\t\t\tmessage: this.localize.localize(\n\t\t\t\t\t\t'CandidateProfile.PrimaryInformation/Profile.Information.NotificationMessage.ChangesSaved',\n\t\t\t\t\t\t'Changes saved'\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate buildForm(): void {\n\t\tcombineLatest([\n\t\t\tthis.fetchCandidateData$(),\n\t\t\tthis.canEditEmail$,\n\t\t\tthis.preferredNameMeta$,\n\t\t\tthis.hasAffiliations$,\n\t\t\tthis.hasLocalizedInfo$,\n\t\t\tthis.requireRomanizedName$,\n\t\t\tthis.includeDob$,\n\t\t])\n\t\t\t.pipe(untilDestroyed(this))\n\t\t\t.subscribe(\n\t\t\t\t([\n\t\t\t\t\tcandidateAccount,\n\t\t\t\t\tcanEditEmail,\n\t\t\t\t\tpreferredNameMeta,\n\t\t\t\t\thasAffiliations,\n\t\t\t\t\thasLocalizedInfo,\n\t\t\t\t\trequireRomanizedName,\n\t\t\t\t\tincludeDob,\n\t\t\t\t]) => {\n\t\t\t\t\tconst canUpdateName = candidateAccount.canUpdateName;\n\t\t\t\t\tconst candidate = candidateAccount.candidate;\n\t\t\t\t\tconst dobInvalid = candidateAccount.dateOfBirthInvalid || false;\n\n\t\t\t\t\tthis.showPrimaryInfoFormFields =\n\t\t\t\t\t\t!this.isRequirementStepper ||\n\t\t\t\t\t\tcandidateAccount.primaryInformationUpdateRequired ||\n\t\t\t\t\t\tfalse;\n\t\t\t\t\tthis.showEmailField =\n\t\t\t\t\t\t!this.isRequirementStepper ||\n\t\t\t\t\t\tcandidateAccount.minimumPrimaryProfileInformationRequired ||\n\t\t\t\t\t\tcandidateAccount.candidateEmailConfirmationRequired ||\n\t\t\t\t\t\tfalse;\n\n\t\t\t\t\tconst acceptIfNoChange =\n\t\t\t\t\t\tcandidateAccount.primaryInformationUpdateRequired ||\n\t\t\t\t\t\tcandidateAccount.candidateEmailConfirmationRequired;\n\n\t\t\t\t\tlet group: any = {\n\t\t\t\t\t\tacceptIfNoChange,\n\t\t\t\t\t\tnameFirst: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: (candidate || {}).nameFirst || '',\n\t\t\t\t\t\t\t\tdisabled: !canUpdateName,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tValidators.required,\n\t\t\t\t\t\t\t\tValidators.pattern(\n\t\t\t\t\t\t\t\t\tAtsRegex.EXCLUDE_QUESTION_MARK_AT_START_OF_STRING\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t],\n\t\t\t\t\t\tnameLast: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: (candidate || {}).nameLast || '',\n\t\t\t\t\t\t\t\tdisabled: !canUpdateName,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tValidators.required,\n\t\t\t\t\t\t\t\tValidators.pattern(\n\t\t\t\t\t\t\t\t\tAtsRegex.EXCLUDE_QUESTION_MARK_AT_START_OF_STRING\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t],\n\t\t\t\t\t\temailAddr: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: (candidate || {}).email || '',\n\t\t\t\t\t\t\t\tdisabled: !canEditEmail || !this.showEmailField,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[Validators.required, Validators.email, Validators.minLength(6)],\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\n\t\t\t\t\tif (preferredNameMeta.available) {\n\t\t\t\t\t\tgroup = {\n\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\tpreferredNameFirst: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: (candidate || {}).preferredNameFirst || '',\n\t\t\t\t\t\t\t\t\tdisabled: !preferredNameMeta.editable,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tpreferredNameLast: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: (candidate || {}).preferredNameLast || '',\n\t\t\t\t\t\t\t\t\tdisabled: !preferredNameMeta.editable,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!hasAffiliations) {\n\t\t\t\t\t\tgroup = {\n\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\tcompanyName: (candidate || {}).companyName,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasLocalizedInfo) {\n\t\t\t\t\t\tgroup = {\n\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\tlocalizedNameFirst: [(candidate || {}).locNameFirst || ''],\n\t\t\t\t\t\t\tlocalizedNameLast: [(candidate || {}).locNameLast || ''],\n\t\t\t\t\t\t\tlocalizedCompanyName: [(candidate || {}).locCompanyName || ''],\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (includeDob) {\n\t\t\t\t\t\tgroup = {\n\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\tdateOfBirth: [(candidate || {}).dateOfBirth, [Validators.required]],\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.form = this.fb.group(group);\n\n\t\t\t\t\tif (!dobInvalid) {\n\t\t\t\t\t\tthis.disableDOB();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (requireRomanizedName && canUpdateName) {\n\t\t\t\t\t\tthis.form.get('nameFirst')?.addValidators(CmValidators.singleByte);\n\t\t\t\t\t\tthis.form.get('nameLast')?.addValidators(CmValidators.singleByte);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.touchOnInit) {\n\t\t\t\t\t\tthis.form.markAllAsTouched();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tprivate disableDOB(): void {\n\t\tconst dobCtrl = this.form.get('dateOfBirth');\n\t\tif (dobCtrl) {\n\t\t\tdobCtrl.disable();\n\t\t}\n\t}\n\n\tprivate fetchCandidateData$(): Observable> {\n\t\tconst guard$ = this.auth.guard$.pipe(take(1));\n\t\treturn combineLatest([\n\t\t\tthis.preferredNameMeta$,\n\t\t\tthis.hasLocalizedInfo$,\n\t\t\tthis.includeDob$,\n\t\t\tguard$,\n\t\t]).pipe(\n\t\t\tswitchMap(\n\t\t\t\t([preferredNameMeta, hasLocalizedInfo, includeDob, guard]) =>\n\t\t\t\t\tthis.apollo.watchQuery<{\n\t\t\t\t\t\tcandidateAccount: Partial;\n\t\t\t\t\t\tprimaryInformationUpdateRequired: boolean;\n\t\t\t\t\t}>({\n\t\t\t\t\t\tquery: INFORMATION_QUERY(\n\t\t\t\t\t\t\tpreferredNameMeta.available,\n\t\t\t\t\t\t\thasLocalizedInfo,\n\t\t\t\t\t\t\tincludeDob,\n\t\t\t\t\t\t\tguard\n\t\t\t\t\t\t),\n\t\t\t\t\t}).valueChanges\n\t\t\t),\n\t\t\tmap(({ data }) => data.candidateAccount)\n\t\t);\n\t}\n\n\tprivate saveChanges(): Observable {\n\t\tthis.isSubmitting = true;\n\t\treturn combineLatest([\n\t\t\tthis.preferredNameMeta$,\n\t\t\tthis.hasLocalizedInfo$,\n\t\t\tthis.includeDob$,\n\t\t]).pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap(([preferredNameMeta, hasLocalizedInfo, includeDob]) =>\n\t\t\t\tthis.apollo.mutate<{ updateCandidate: Partial }>({\n\t\t\t\t\tmutation: INFORMATION_MUTATION(\n\t\t\t\t\t\tpreferredNameMeta.available,\n\t\t\t\t\t\thasLocalizedInfo,\n\t\t\t\t\t\tincludeDob\n\t\t\t\t\t),\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tcandidate: this.form.value,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t),\n\t\t\ttap(({ data }) => {\n\t\t\t\tif (!data.updateCandidate?.dateOfBirthInvalid) {\n\t\t\t\t\tthis.disableDOB();\n\t\t\t\t}\n\t\t\t}),\n\t\t\tmap(() => true),\n\t\t\tcatchError(err => {\n\t\t\t\tthis.isSubmitting = false;\n\t\t\t\treturn of(false);\n\t\t\t}),\n\t\t\ttake(1)\n\t\t);\n\t}\n}\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, LocPortal, MapLocKeys } from '@cm/core/localization';\r\n\r\nexport type CPPersonalInfoFormLoc =\r\n\t| 'CPPersonalInfoFormDOBLabel'\r\n\t| 'CPPersonalInfoFormDOBErrorReq'\r\n\t| 'CPPersonalInfoFormDOBErrorMax'\r\n\t| 'CPPersonalInfoFormErrorCharacterExclusion'\r\n\t| 'CPPersonalInfoFormErrorFirstNameRequired'\r\n\t| 'CPPersonalInfoFormErrorLastNameRequired';\r\n\r\nexport const cpPersonalInfoFormLocs: LocDefs = {\r\n\tCPPersonalInfoFormDOBLabel: {\r\n\t\tdefaultValue: 'Date of Birth',\r\n\t\tdescription: 'Label for the candidate Date of Birth Field',\r\n\t\tdisplayPath: 'Profile|Information|Date of Birth|Label',\r\n\t\tdisplayType: 'Label',\r\n\t\tshared: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateProfileDateOfBirth,\r\n\t},\r\n\tCPPersonalInfoFormDOBErrorReq: {\r\n\t\tdefaultValue: 'Date of Birth is required',\r\n\t\tdescription: 'Error displayed when candidate date of birth is not supplied',\r\n\t\tdisplayPath: 'Profile|Information|Date of Birth|Required Error',\r\n\t\tdisplayType: 'Error',\r\n\t\tshared: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateProfileDateOfBirth,\r\n\t},\r\n\tCPPersonalInfoFormDOBErrorMax: {\r\n\t\tdefaultValue: 'Date of Birth must be before today',\r\n\t\tdescription: 'Error displayed when candidate date of birth is in the future',\r\n\t\tdisplayPath: 'Profile|Information|Date of Birth|Future Error',\r\n\t\tdisplayType: 'Error',\r\n\t\tshared: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateProfileDateOfBirth,\r\n\t},\r\n\tCPPersonalInfoFormErrorCharacterExclusion: {\r\n\t\tdefaultValue: 'Special character ? is not allowed at the start',\r\n\t\tdescription: 'Error displayed when candidate name contains a question mark',\r\n\t\tdisplayPath: 'Profile|Information|Name|Character Exclusion Error',\r\n\t\tdisplayType: 'Error',\r\n\t\tshared: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t},\r\n\tCPPersonalInfoFormErrorFirstNameRequired: {\r\n\t\tdefaultValue: 'This field is required',\r\n\t\tdescription: 'Error displayed when candidate name is not supplied',\r\n\t\tdisplayPath: 'Profile|Information|First Name|Required Error',\r\n\t\tdisplayType: 'Error',\r\n\t\tshared: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateProfilePrimaryInformation,\r\n\t},\r\n\tCPPersonalInfoFormErrorLastNameRequired: {\r\n\t\tdefaultValue: 'Last Name is required',\r\n\t\tdescription: 'Error displayed when candidate last name is not supplied',\r\n\t\tdisplayPath: 'Profile|Information|Last Name|Required Error',\r\n\t\tdisplayType: 'Error',\r\n\t\tshared: true,\r\n\t\tportal: 'CP' as LocPortal,\r\n\t\tfeature: HubFeature.CandidateProfilePrimaryInformation,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(cpPersonalInfoFormLocs);\r\nexport type CPPersonalInfoFormLocType = LocMap;\r\n","import {\r\n\tAffiliationCatalog,\r\n\tCandidate,\r\n\tCandidateAccount,\r\n\tCandidateAffiliation,\r\n\tCandidateIdRequest,\r\n\tUpdateCandidateAffiliationRequest,\r\n} from '@ats/api/cm';\r\nimport gql from 'graphql-tag';\r\n\r\nexport const CANDIDATE_AFFILIATION_MUTATION = gql`\r\n\tmutation updateCandidate($request: UpdateCandidateRequest!) {\r\n\t\tupdateCandidate(request: $request) {\r\n\t\t\tcmcId\r\n\t\t\tcandidate {\r\n\t\t\t\tcmcId\r\n\t\t\t\taffiliation {\r\n\t\t\t\t\tid\r\n\t\t\t\t\taffiliateId\r\n\t\t\t\t\temail\r\n\t\t\t\t\totherAffiliationName\r\n\t\t\t\t\taffiliationCatalog {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\twebGroup\r\n\t\t\t\t\t\tname\r\n\t\t\t\t\t\tdisabled\r\n\t\t\t\t\t\temailFormat\r\n\t\t\t\t\t\temailRequired\r\n\t\t\t\t\t\totherFormat\r\n\t\t\t\t\t\taffiliateIdFormat\r\n\t\t\t\t\t\tupdated\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type AffiliationCatalogVM = Pick<\r\n\tAffiliationCatalog,\r\n\t| 'id'\r\n\t| 'webGroup'\r\n\t| 'name'\r\n\t| 'disabled'\r\n\t| 'emailFormat'\r\n\t| 'otherFormat'\r\n\t| 'affiliateIdFormat'\r\n\t| 'updated'\r\n>;\r\n\r\nexport interface AffiliationUpdateRequest {\r\n\taffiliation: UpdateCandidateAffiliationRequest;\r\n\tcandidateId?: CandidateIdRequest;\r\n}\r\n\r\nexport interface AffiliationUpdateResponse {\r\n\tupdateCandidate: Pick & {\r\n\t\tcandidate: Pick & {\r\n\t\t\taffiliation: Pick<\r\n\t\t\t\tCandidateAffiliation,\r\n\t\t\t\t'id' | 'affiliateId' | 'email' | 'otherAffiliationName'\r\n\t\t\t> & {\r\n\t\t\t\taffilationCatalog: AffiliationCatalogVM;\r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { CMOption } from '@ats/cm/ui';\r\nimport { UntilDestroy } from '@ngneat/until-destroy';\r\nimport { Apollo } from 'apollo-angular';\r\nimport { Observable, catchError, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { UpdateCandidateAffiliationRequest } from '@ats/api/cm';\r\nimport {\r\n\tAffiliationUpdateRequest,\r\n\tAffiliationUpdateResponse,\r\n\tCANDIDATE_AFFILIATION_MUTATION,\r\n} from './candidate-affiliation.gql';\r\n\r\nexport type InputControl = FormControl;\r\nexport type SelectionControl = FormControl | T | null>;\r\n\r\nexport type AffFormType = {\r\n\taffiliationType: SelectionControl;\r\n\taffiliationName: SelectionControl;\r\n\totherAffiliationName: InputControl;\r\n\taffiliationId: InputControl;\r\n\taffiliationEmail: InputControl;\r\n};\r\n\r\n/**\r\n * Documentation - https://dev.azure.com/AlpineTesting/CertMetrics%20Manual/_wiki/wikis/CertMetrics-Manual.wiki/861/Candidate-Profile-Primary-Information-(Affiliation)\r\n */\r\n@UntilDestroy()\r\n@Injectable()\r\nexport class CandidateAffiliationService {\r\n\tconstructor(private readonly apollo: Apollo) {}\r\n\r\n\tupdateAffiliation(\r\n\t\taffiliation: UpdateCandidateAffiliationRequest,\r\n\t\tcmcId?: number\r\n\t): Observable {\r\n\t\tconst request: AffiliationUpdateRequest = { affiliation };\r\n\t\tif (cmcId) {\r\n\t\t\trequest['candidateId'] = { cmcId };\r\n\t\t}\r\n\t\treturn this.apollo\r\n\t\t\t.mutate({\r\n\t\t\t\tmutation: CANDIDATE_AFFILIATION_MUTATION,\r\n\t\t\t\tvariables: { request },\r\n\t\t\t})\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(() => true),\r\n\t\t\t\tcatchError(() => of(false))\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'Candidates|Summary|Affiliations';\r\nconst sharedData: Pick = {\r\n\tfeature: HubFeature.CandidateProfilePrimaryInformationAffiliation,\r\n\tportal: 'SP',\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n};\r\n\r\nexport type SpCandidateAffiliationLocs =\r\n\t| 'SPCandidateAffiliationType'\r\n\t| 'SPCandidateAffiliationTypeRequired'\r\n\t| 'SPCandidateAffiliationTypeInvalid'\r\n\t| 'SPCandidateAffiliationName'\r\n\t| 'SPCandidateAffiliationNameRequired'\r\n\t| 'SPCandidateAffiliationNameInvalid'\r\n\t| 'SPCandidateAffiliationEmail'\r\n\t| 'SPCandidateAffiliationEmailRequired'\r\n\t| 'SPCandidateAffiliationEmailInvalid'\r\n\t| 'SPCandidateAffiliationEmailUnsupported'\r\n\t| 'SPCandidateAffiliationId'\r\n\t| 'SPCandidateAffiliationIdRequired'\r\n\t| 'SPCandidateAffiliationIdInvalid'\r\n\t| 'SPCandidateAffiliationOtherName'\r\n\t| 'SPCandidateAffiliationOtherNameRequired'\r\n\t| 'SPCandidateAffiliationOtherNameInvalid'\r\n\t| 'SPCandidateAffiliationUpdate'\r\n\t| 'SPCandidateAffiliationSaveNotice';\r\n\r\nexport type SpCandidateAffLocsType = LocMap;\r\n\r\nexport const spSharedCandidateAffiliationLocs: LocDefs = {\r\n\tSPCandidateAffiliationUpdate: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Update',\r\n\t\tdescription: 'The update button on the form and the update icon in the section header.',\r\n\t\tdisplayType: 'Button',\r\n\t\tdisplayPath: `${dpRoot}|Update`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.Button.Update',\r\n\t},\r\n\tSPCandidateAffiliationNameInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation name is invalid',\r\n\t\tdescription: 'Error saying the affiliation name is invalid.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Name Invalid`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.AffNameInvalid',\r\n\t},\r\n\tSPCandidateAffiliationNameRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation name is required',\r\n\t\tdescription: 'Error saying the affiliation name is required.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Name Required`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.AffNameRequired',\r\n\t},\r\n\tSPCandidateAffiliationTypeInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation type is invalid',\r\n\t\tdescription: 'Error saying the affiliation type is invalid.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Type Invalid`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.AffTypeInvalid',\r\n\t},\r\n\tSPCandidateAffiliationTypeRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation type is required',\r\n\t\tdescription: 'Error saying the affiliation type is required.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Type Required`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.AffTypeRequired',\r\n\t},\r\n\tSPCandidateAffiliationEmailRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation email is required',\r\n\t\tdescription: 'Error saying the affiliation email is required.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Email Required`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.EmailRequired',\r\n\t},\r\n\tSPCandidateAffiliationIdInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation ID is invalid',\r\n\t\tdescription: 'Error saying the affiliation ID is invalid.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|ID Invalid`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.IdInvalid',\r\n\t},\r\n\tSPCandidateAffiliationIdRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation ID is required',\r\n\t\tdescription: 'Error saying the affiliation ID is required.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|ID Required`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.IdRequired',\r\n\t},\r\n\tSPCandidateAffiliationEmailInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Invalid email address',\r\n\t\tdescription: 'Error saying the affiliation email is invalid.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Email Invalid`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.InvalidEmail',\r\n\t},\r\n\tSPCandidateAffiliationOtherNameInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Other company name is invalid',\r\n\t\tdescription: 'Error saying the other company name is invalid.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Other Name Invalid`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.OtherNameInvalid',\r\n\t},\r\n\tSPCandidateAffiliationOtherNameRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Other company name is required',\r\n\t\tdescription: 'Error saying the other company name is required.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Other Name Required`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.OtherNameRequired',\r\n\t},\r\n\tSPCandidateAffiliationEmailUnsupported: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Unsupported email address',\r\n\t\tdescription: 'Error saying the affiliation email is unsupported.',\r\n\t\tdisplayType: 'Error',\r\n\t\tdisplayPath: `${dpRoot}|Email Unsupported`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldError.UnsupportedEmail',\r\n\t},\r\n\tSPCandidateAffiliationEmail: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Email',\r\n\t\tdescription: 'Label for the affiliation email. This is used in the form and the display.',\r\n\t\tdisplayType: 'Label',\r\n\t\tdisplayPath: `${dpRoot}|Email`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldLabel.Email',\r\n\t},\r\n\tSPCandidateAffiliationId: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation ID',\r\n\t\tdescription: 'Label for the affiliation id. This is used in the form and the display.',\r\n\t\tdisplayType: 'Label',\r\n\t\tdisplayPath: `${dpRoot}|ID`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldLabel.Id',\r\n\t},\r\n\tSPCandidateAffiliationName: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Name',\r\n\t\tdescription: 'Label for the affiliation name section.',\r\n\t\tdisplayType: 'Label',\r\n\t\tdisplayPath: `${dpRoot}|Name`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldLabel.Name',\r\n\t},\r\n\tSPCandidateAffiliationOtherName: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Other Company Name',\r\n\t\tdescription: 'Label for the other company name. This is used in the form and the display.',\r\n\t\tdisplayType: 'Label',\r\n\t\tdisplayPath: `${dpRoot}|Other Name`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldLabel.OtherName',\r\n\t},\r\n\tSPCandidateAffiliationType: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Type',\r\n\t\tdescription: 'Label for the affiliation type section.',\r\n\t\tdisplayType: 'Label',\r\n\t\tdisplayPath: `${dpRoot}|Type`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.FieldLabel.Type',\r\n\t},\r\n\tSPCandidateAffiliationSaveNotice: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliations changes saved',\r\n\t\tdescription: 'The message shown when the affiliations update is successful.',\r\n\t\tdisplayType: 'Notification',\r\n\t\tdisplayPath: `${dpRoot}|Save`,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Candidates.Affiliations.Notification.ChangesSaved',\r\n\t},\r\n};\r\n\r\nexport const SpCandidateAffLocs = MapLocKeys(\r\n\tspSharedCandidateAffiliationLocs\r\n);\r\n","import { cpSharedProfileAffiliationFormLocs } from './candidate-affiliation-form.cp-locs';\r\nimport { spSharedCandidateAffiliationLocs } from './candidate-affiliation-form.sp-locs';\r\nexport * from './candidate-affiliation-form.cp-locs';\r\nexport * from './candidate-affiliation-form.sp-locs';\r\n\r\nexport const candidateAffiliationLocs = {\r\n\t...spSharedCandidateAffiliationLocs,\r\n\t...cpSharedProfileAffiliationFormLocs,\r\n};\r\n","import { AffiliationCatalog, Candidate, CandidateAccount, CandidateAffiliation } from '@ats/api/cm';\r\nimport { DocumentNode } from 'graphql';\r\nimport gql from 'graphql-tag';\r\nimport { AffiliationCatalogVM } from '../services/candidate-affiliation.gql';\r\n\r\nexport const CANDIDATE_QUERY = gql`\r\n\tquery candidateAccount($request: CandidateIdRequest) {\r\n\t\tcandidateAccount(request: $request) {\r\n\t\t\tcmcId\r\n\t\t\tcandidate {\r\n\t\t\t\tcmcId\r\n\t\t\t\taffiliation {\r\n\t\t\t\t\tid\r\n\t\t\t\t\taffiliateId\r\n\t\t\t\t\temail\r\n\t\t\t\t\totherAffiliationName\r\n\t\t\t\t\taffiliationCatalog {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\tname\r\n\t\t\t\t\t\taffiliateIdFormat\r\n\t\t\t\t\t\tdisabled\r\n\t\t\t\t\t\temailFormat\r\n\t\t\t\t\t\temailRequired\r\n\t\t\t\t\t\texternalId\r\n\t\t\t\t\t\totherFormat\r\n\t\t\t\t\t\tupdated\r\n\t\t\t\t\t\twebGroup\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\nexport type CandidateAccountResponse = Pick & {\r\n\tcandidate: Pick & {\r\n\t\taffiliation: Pick & {\r\n\t\t\taffiliationCatalog: Pick<\r\n\t\t\t\tAffiliationCatalog,\r\n\t\t\t\t| 'id'\r\n\t\t\t\t| 'name'\r\n\t\t\t\t| 'affiliateIdFormat'\r\n\t\t\t\t| 'disabled'\r\n\t\t\t\t| 'emailFormat'\r\n\t\t\t\t| 'emailRequired'\r\n\t\t\t\t| 'externalId'\r\n\t\t\t\t| 'otherFormat'\r\n\t\t\t\t| 'updated'\r\n\t\t\t\t| 'webGroup'\r\n\t\t\t>;\r\n\t\t};\r\n\t};\r\n};\r\n\r\nexport const AFFILIATION_DATA_QUERY: DocumentNode = gql`\r\n\tquery webGroups {\r\n\t\taffiliationList {\r\n\t\t\tid\r\n\t\t\twebGroup\r\n\t\t\tname\r\n\t\t\tdisabled\r\n\t\t\temailFormat\r\n\t\t\temailRequired\r\n\t\t\totherFormat\r\n\t\t\taffiliateIdFormat\r\n\t\t\tupdated\r\n\t\t}\r\n\t}\r\n`;\r\nexport interface AffiliateDataResponse {\r\n\taffiliationList: AffiliationCatalogVM[];\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t
\r\n\t\t\r\n\r\n\t\t\r\n\t
\r\n
\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInject,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n} from '@angular/core';\r\nimport {\r\n\tFormBuilder,\r\n\tFormControl,\r\n\tFormGroup,\r\n\tReactiveFormsModule,\r\n\tValidators,\r\n} from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { AffiliationCatalog, CandidateIdRequest, PortalType } from '@ats/api/cm';\r\nimport { CmInterceptHeaders } from '@ats/cm/core';\r\nimport { CMOption, CmFormService, CmValidators, isCMOption } from '@ats/cm/ui';\r\nimport { AtsIconsModule } from '@ats/icons';\r\nimport { AtsNotificationService } from '@ats/notifications';\r\nimport { atsSort, atsSortFn } from '@ats/utility';\r\nimport { LOC_INJECTOR, LocalizationProvider, LocalizationService } from '@cm/core/localization';\r\nimport { LoggingService } from '@cm/core/logging';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { CmAutocompleteComponent } from '@cm/shared/ui/autocomplete';\r\nimport { LocalizeComponent, LocalizePipe } from '@cm/ui/localize';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Apollo } from 'apollo-angular';\r\nimport {\r\n\tObservable,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tfilter,\r\n\tmap,\r\n\tof,\r\n\tpairwise,\r\n\tshareReplay,\r\n\tskip,\r\n\tstartWith,\r\n\tswitchMap,\r\n\ttake,\r\n\twithLatestFrom,\r\n} from 'rxjs';\r\nimport { AffiliationCatalogVM } from '../services/candidate-affiliation.gql';\r\nimport {\r\n\tAffFormType,\r\n\tCandidateAffiliationService,\r\n\tInputControl,\r\n\tSelectionControl,\r\n} from '../services/candidate-affiliation.service';\r\nimport {\r\n\tCpProfileAffFormLocsType,\r\n\tSpCandidateAffLocsType,\r\n\tcandidateAffiliationLocs,\r\n} from './candidate-affiliation-form.locs';\r\nimport {\r\n\tAFFILIATION_DATA_QUERY,\r\n\tAffiliateDataResponse,\r\n\tCANDIDATE_QUERY,\r\n\tCandidateAccountResponse,\r\n} from './candidate-affiliation-form.query';\r\n\r\n/**\r\n * Documentation - https://dev.azure.com/AlpineTesting/CertMetrics%20Manual/_wiki/wikis/CertMetrics-Manual.wiki/861/Candidate-Profile-Primary-Information-(Affiliation)\r\n */\r\n\r\n@UntilDestroy()\r\n@Component({\r\n\tselector: 'cm-candidate-affiliation-form',\r\n\ttemplateUrl: './candidate-affiliation-form.component.html',\r\n\timports: [\r\n\t\tAtsIconsModule,\r\n\t\tCmAutocompleteComponent,\r\n\t\tCommonModule,\r\n\t\tLocalizeComponent,\r\n\t\tLocalizePipe,\r\n\t\tMatButtonModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatInputModule,\r\n\t\tReactiveFormsModule,\r\n\t],\r\n\tproviders: [LocalizationProvider(candidateAffiliationLocs)],\r\n})\r\nexport class CandidateAffiliationForm implements OnInit {\r\n\t@Input() cmcId?: number;\r\n\t@Input() touchOnInit: boolean = false;\r\n\t@Output() submitted = new EventEmitter();\r\n\tform?: FormGroup;\r\n\ttypes$: Observable;\r\n\tnames$?: Observable[]>;\r\n\tdefaultName$!: Observable | null>;\r\n\treadonly globalEmailLoc: string;\r\n\tprivate affiliationsByGroup$: Observable<{ [key: string]: CMOption[] }>;\r\n\r\n\tget affiliationType(): SelectionControl {\r\n\t\treturn this.form?.get('affiliationType') as SelectionControl;\r\n\t}\r\n\r\n\tget affiliationName(): SelectionControl {\r\n\t\treturn this.form?.get('affiliationName') as SelectionControl;\r\n\t}\r\n\r\n\tget otherAffiliationName(): InputControl {\r\n\t\treturn this.form?.get('otherAffiliationName') as InputControl;\r\n\t}\r\n\r\n\tget affiliationId(): InputControl {\r\n\t\treturn this.form?.get('affiliationId') as InputControl;\r\n\t}\r\n\r\n\tget affiliationEmail(): InputControl {\r\n\t\treturn this.form?.get('affiliationEmail') as InputControl;\r\n\t}\r\n\r\n\tget required(): any {\r\n\t\treturn this.otherAffiliationName.hasValidator(Validators.required);\r\n\t}\r\n\r\n\tconstructor(\r\n\t\t@Inject(LOC_INJECTOR)\r\n\t\tpublic readonly locs: Partial,\r\n\t\tprivate readonly apollo: Apollo,\r\n\t\tprivate readonly affService: CandidateAffiliationService,\r\n\t\tprivate readonly locService: LocalizationService,\r\n\t\tprivate readonly fb: FormBuilder,\r\n\t\tprivate readonly cd: ChangeDetectorRef,\r\n\t\tprivate readonly formService: CmFormService,\r\n\t\tprivate readonly settings: SettingsService,\r\n\t\tprivate readonly notificationService: AtsNotificationService,\r\n\t\tprivate readonly logger: LoggingService\r\n\t) {\r\n\t\tthis.globalEmailLoc = this.locService.Keys.GlobalValues.CMSystemGlobalEmailPlaceholder;\r\n\t\tconst isString = (value: any): value is string => typeof value === 'string';\r\n\r\n\t\t// Get a list of unique types\r\n\t\tconst types$ = this.fetchAffiliationData$().pipe(\r\n\t\t\tmap(affs => affs.map(({ webGroup }) => webGroup).filter(isString)),\r\n\t\t\tmap(webGroups => [...new Set(webGroups)])\r\n\t\t);\r\n\r\n\t\t// Map to a list of unique webGroups\r\n\t\tthis.types$ = types$.pipe(\r\n\t\t\tmap(webGroups =>\r\n\t\t\t\twebGroups.map(webGroup => ({ display: webGroup || '', value: webGroup || '' }))\r\n\t\t\t),\r\n\t\t\tatsSort('display')\r\n\t\t);\r\n\r\n\t\t// Organize the affiliations by type\r\n\t\tthis.affiliationsByGroup$ = this.fetchAffiliationData$().pipe(\r\n\t\t\twithLatestFrom(types$),\r\n\t\t\tmap(([affs, types]) =>\r\n\t\t\t\ttypes.reduce(\r\n\t\t\t\t\t(obj, type) => {\r\n\t\t\t\t\t\tconst groupAffs = affs.filter(aff => aff.webGroup === type);\r\n\t\t\t\t\t\t// If there is an 'other' affiliation, we need to move it to the front of the list\r\n\t\t\t\t\t\tconst otherIdx = groupAffs.findIndex(\r\n\t\t\t\t\t\t\taff => aff.name.toLowerCase() === 'other'\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tlet other: AffiliationCatalogVM | null = null;\r\n\t\t\t\t\t\tif (otherIdx > -1) {\r\n\t\t\t\t\t\t\tother = groupAffs.splice(otherIdx, 1)[0];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tatsSortFn(groupAffs, 'name');\r\n\t\t\t\t\t\tif (other) {\r\n\t\t\t\t\t\t\tgroupAffs.unshift(other);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst typeOptions = groupAffs.map(({ id, name }) => ({\r\n\t\t\t\t\t\t\tdisplay: name,\r\n\t\t\t\t\t\t\tvalue: id,\r\n\t\t\t\t\t\t}));\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t...obj,\r\n\t\t\t\t\t\t\t[type]: typeOptions,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{} as { [key: string]: CMOption[] }\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\tshareReplay(1)\r\n\t\t);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.fetchCandidateAccount$()\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(ca => ca?.candidate?.affiliation),\r\n\t\t\t\ttake(1)\r\n\t\t\t)\r\n\t\t\t.subscribe(aff => {\r\n\t\t\t\tthis.form = this.fb.group({\r\n\t\t\t\t\taffiliationType: this.getAffTypeControl(aff?.affiliationCatalog),\r\n\t\t\t\t\taffiliationName: this.getAffNameControl(aff?.affiliationCatalog),\r\n\t\t\t\t\taffiliationEmail: this.getEmailControl(\r\n\t\t\t\t\t\taff?.affiliationCatalog,\r\n\t\t\t\t\t\taff?.email || undefined\r\n\t\t\t\t\t),\r\n\t\t\t\t\taffiliationId: this.getAffIDControl(\r\n\t\t\t\t\t\taff?.affiliationCatalog,\r\n\t\t\t\t\t\taff?.affiliateId || undefined\r\n\t\t\t\t\t),\r\n\t\t\t\t\totherAffiliationName: this.getOtherAffNameControl(\r\n\t\t\t\t\t\taff?.affiliationCatalog,\r\n\t\t\t\t\t\taff?.otherAffiliationName || undefined\r\n\t\t\t\t\t),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.names$ = this.affiliationType.valueChanges.pipe(\r\n\t\t\t\t\tstartWith(this.affiliationType.value ?? null),\r\n\t\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\t\tswitchMap((type: string | CMOption | null) => {\r\n\t\t\t\t\t\tif (!type) {\r\n\t\t\t\t\t\t\treturn of([]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttype = (isCMOption(type) ? type.value : type) ?? null;\r\n\t\t\t\t\t\treturn this.getAffiliationsByType(type);\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\r\n\t\t\t\tthis.names$\r\n\t\t\t\t\t.pipe(untilDestroyed(this))\r\n\t\t\t\t\t.subscribe(names => this.updateNameControlState(names, this.affiliationName));\r\n\r\n\t\t\t\tthis.defaultName$ = this.names$.pipe(\r\n\t\t\t\t\tmap(\r\n\t\t\t\t\t\tnames =>\r\n\t\t\t\t\t\t\t(names || []).find(n => n.display.toLowerCase() === 'other') || null\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tthis.getAffiliationNameChanges$()\r\n\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\tmap(affName => {\r\n\t\t\t\t\t\t\tif (isCMOption(affName)) {\r\n\t\t\t\t\t\t\t\treturn affName.value;\r\n\t\t\t\t\t\t\t} else if (!isNaN(Number(affName))) {\r\n\t\t\t\t\t\t\t\treturn Number(affName);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tswitchMap(aff => (aff ? this.getAffCatById(aff) : of(null))),\r\n\t\t\t\t\t\tpairwise()\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.subscribe(([prevAffCat, affCat]) => {\r\n\t\t\t\t\t\tif (prevAffCat?.id !== affCat?.id) {\r\n\t\t\t\t\t\t\tthis.affiliationId.patchValue('');\r\n\t\t\t\t\t\t\tthis.affiliationEmail.patchValue('');\r\n\t\t\t\t\t\t\tthis.otherAffiliationName.patchValue('');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.updateAffIdControlState(affCat, this.affiliationId);\r\n\t\t\t\t\t\tthis.updateEmailControlState(affCat, this.affiliationEmail);\r\n\t\t\t\t\t\tthis.updateAffOtherNameControlState(affCat, this.otherAffiliationName);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.handleDefaultAffiliationName();\r\n\r\n\t\t\t\tif (this.touchOnInit) {\r\n\t\t\t\t\tthis.form.markAllAsTouched();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Call manually after everything is ready\r\n\t\t\t\tthis.cd.detectChanges();\r\n\t\t\t});\r\n\t}\r\n\r\n\thandleSubmit(): void {\r\n\t\tconst idOpt = this.affiliationName?.value;\r\n\t\tconst id = isCMOption(idOpt) ? idOpt.value : idOpt;\r\n\r\n\t\tif (!this.form || !this.form.valid || isNaN(Number(id))) {\r\n\t\t\tthis.formService.popGenericFormErrorNotification();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.formService.isPristine(this.form, false)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst affiliateId = this.affiliationId?.value ?? null;\r\n\t\tconst email = this.affiliationEmail?.value ?? null;\r\n\t\tconst otherAffiliationName = this.otherAffiliationName?.value ?? null;\r\n\r\n\t\tconst noticeLoc =\r\n\t\t\tthis.settings.portal === PortalType.CandidatePortal\r\n\t\t\t\t? this.locs.CPProfileAffiliationSaveNotice\r\n\t\t\t\t: this.locs.SPCandidateAffiliationSaveNotice;\r\n\r\n\t\tthis.affService\r\n\t\t\t.updateAffiliation(\r\n\t\t\t\t{\r\n\t\t\t\t\tid,\r\n\t\t\t\t\taffiliateId,\r\n\t\t\t\t\temail,\r\n\t\t\t\t\totherAffiliationName,\r\n\t\t\t\t},\r\n\t\t\t\tthis.cmcId\r\n\t\t\t)\r\n\t\t\t.pipe(withLatestFrom(this.locService.findValue$(noticeLoc ?? '')), take(1))\r\n\t\t\t.subscribe(([success, message]) => {\r\n\t\t\t\tif (success) {\r\n\t\t\t\t\tthis.notificationService.popSuccess({\r\n\t\t\t\t\t\tid: 'candidate-affiliation-update',\r\n\t\t\t\t\t\tmessage,\r\n\t\t\t\t\t\taction: 'X',\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.submitted.emit(success);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate handleDefaultAffiliationName(): void {\r\n\t\tif (!this.defaultName$ || !this.names$) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.getAffiliationNameChanges$()\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter((value: any) => typeof value === 'string' && (value || '').length > 0),\r\n\t\t\t\tdebounceTime(1000),\r\n\t\t\t\twithLatestFrom(this.defaultName$, this.names$)\r\n\t\t\t)\r\n\t\t\t.subscribe(([value, defaultName, names]) => {\r\n\t\t\t\t// If we have a default name and the current typed value doesn't match any of the names, set the default name\r\n\t\t\t\tif (\r\n\t\t\t\t\tdefaultName &&\r\n\t\t\t\t\t!names.find(n =>\r\n\t\t\t\t\t\tn.display.toLowerCase().includes(value?.toString().toLowerCase())\r\n\t\t\t\t\t)\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.affiliationName.setValue(defaultName);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t// Affiliation Name Handling\r\n\tprivate getAffNameControl(\r\n\t\taffCat?: Pick\r\n\t): SelectionControl {\r\n\t\tconst { id, name } = affCat ? affCat : { id: null, name: null };\r\n\t\tconst value = (id || id === 0) && name ? { value: id, display: name } : null;\r\n\t\treturn new FormControl | null>(value, [Validators.required]);\r\n\t}\r\n\r\n\t// Handle name control state\r\n\tprivate updateNameControlState(\r\n\t\toptions: CMOption[],\r\n\t\tctrl: SelectionControl\r\n\t): SelectionControl {\r\n\t\tconst existingValue = isCMOption(ctrl.value) ? ctrl.value.value : ctrl.value;\r\n\t\tlet newValue = null;\r\n\t\tif (options?.length === 1) {\r\n\t\t\t// There is only one name option, so select it\r\n\t\t\tnewValue = options[0];\r\n\t\t} else if (options?.length > 1) {\r\n\t\t\t// There are multiple options, so enable the control\r\n\t\t\tnewValue = options.find(opt => opt.value === existingValue) ?? null;\r\n\t\t}\r\n\t\tif (options?.length < 1) {\r\n\t\t\tctrl.disable();\r\n\t\t} else {\r\n\t\t\tctrl.enable();\r\n\t\t}\r\n\t\tctrl.patchValue(newValue);\r\n\t\tctrl.updateValueAndValidity();\r\n\t\treturn ctrl;\r\n\t}\r\n\r\n\t// Affiliation Type Handling\r\n\tprivate getAffTypeControl(affCat?: Pick): SelectionControl {\r\n\t\tconst { webGroup } = affCat ? affCat : { webGroup: null };\r\n\t\tconst value = webGroup ? { value: webGroup, display: webGroup } : null;\r\n\t\treturn new FormControl | null>(value, [Validators.required]);\r\n\t}\r\n\r\n\t// Affiliation ID / Other (Company) Handling\r\n\tprivate getAffIDControl(\r\n\t\taffCat: Pick,\r\n\t\tvalue?: string\r\n\t): InputControl {\r\n\t\tconst ctrl = new FormControl('');\r\n\t\tthis.updateAffIdControlState(affCat, ctrl);\r\n\t\tif (value) {\r\n\t\t\tctrl.setValue(value);\r\n\t\t}\r\n\t\treturn ctrl;\r\n\t}\r\n\r\n\tprivate getOtherAffNameControl(\r\n\t\taffCat: Pick,\r\n\t\tvalue?: string\r\n\t): InputControl {\r\n\t\tconst ctrl = new FormControl('');\r\n\t\tthis.updateAffOtherNameControlState(affCat, ctrl);\r\n\t\tif (value) {\r\n\t\t\tctrl.patchValue(value);\r\n\t\t}\r\n\t\treturn ctrl;\r\n\t}\r\n\r\n\tprivate updateAffOtherNameControlState(\r\n\t\taffCatData: Partial> | null,\r\n\t\tctrl: InputControl\r\n\t) {\r\n\t\tctrl.clearValidators();\r\n\r\n\t\t// Null string means we hide and disable it\r\n\t\tif (!affCatData || affCatData?.otherFormat === null) {\r\n\t\t\tctrl.patchValue('');\r\n\t\t\tctrl.disable();\r\n\t\t\treturn ctrl;\r\n\t\t}\r\n\r\n\t\tctrl.addValidators(Validators.required);\r\n\t\t// Non-empty string means we validate it against regex\r\n\t\tif (affCatData?.otherFormat && affCatData.otherFormat?.length > 0) {\r\n\t\t\ttry {\r\n\t\t\t\tnew RegExp(affCatData.otherFormat);\r\n\t\t\t\tctrl.addValidators(Validators.pattern(new RegExp(affCatData.otherFormat)));\r\n\t\t\t} catch (err) {\r\n\t\t\t\tthis.logError(err);\r\n\t\t\t}\r\n\t\t}\r\n\t\tctrl.enable();\r\n\t\tctrl.updateValueAndValidity();\r\n\t\treturn ctrl;\r\n\t}\r\n\t// Company and Affiliation ID share logic on different properties\r\n\tprivate updateAffIdControlState(\r\n\t\taffCatData: Partial> | null,\r\n\t\tctrl: InputControl\r\n\t): InputControl {\r\n\t\tctrl.clearValidators();\r\n\r\n\t\t// Null string means we hide and disable it\r\n\t\tif (!affCatData || affCatData?.affiliateIdFormat === null) {\r\n\t\t\tctrl.patchValue('');\r\n\t\t\tctrl.disable();\r\n\t\t\treturn ctrl;\r\n\t\t}\r\n\r\n\t\tctrl.addValidators(Validators.required);\r\n\t\t// Non-empty string means we validate it against regex\r\n\t\tif (affCatData?.affiliateIdFormat && affCatData.affiliateIdFormat?.length > 0) {\r\n\t\t\ttry {\r\n\t\t\t\tnew RegExp(affCatData.affiliateIdFormat);\r\n\t\t\t\tctrl.addValidators(Validators.pattern(new RegExp(affCatData.affiliateIdFormat)));\r\n\t\t\t} catch (err) {\r\n\t\t\t\tthis.logError(err);\r\n\t\t\t}\r\n\t\t}\r\n\t\tctrl.enable();\r\n\t\tctrl.updateValueAndValidity();\r\n\t\treturn ctrl;\r\n\t}\r\n\r\n\t// Affiliation Email Handling\r\n\tprivate getEmailControl(\r\n\t\taffCat: Pick,\r\n\t\tvalue?: string\r\n\t): InputControl {\r\n\t\tconst ctrl = new FormControl('');\r\n\t\tthis.updateEmailControlState(affCat, ctrl);\r\n\t\tif (value) {\r\n\t\t\tctrl.setValue(value);\r\n\t\t}\r\n\t\treturn ctrl;\r\n\t}\r\n\r\n\tprivate updateEmailControlState(\r\n\t\taffCatData: Pick | null,\r\n\t\tctrl: InputControl\r\n\t): InputControl {\r\n\t\tctrl.clearValidators();\r\n\r\n\t\tif (!affCatData) {\r\n\t\t\tctrl.disable();\r\n\t\t\treturn ctrl;\r\n\t\t}\r\n\r\n\t\tconst { emailRequired, emailFormat } = affCatData;\r\n\r\n\t\t// If emailRequired NULL = the email format is ignored and no one can add an email.\r\n\t\tif (emailRequired === null || emailRequired === undefined) {\r\n\t\t\tctrl.patchValue('');\r\n\t\t\tctrl.disable();\r\n\t\t} else {\r\n\t\t\t// If email required is true, an email is required.\r\n\t\t\tif (emailRequired === true) {\r\n\t\t\t\tctrl.addValidators(Validators.required);\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure any email they enter is a valid email\r\n\t\t\tctrl.addValidators(Validators.email);\r\n\r\n\t\t\t// If provided, email follows the aff_email_format\r\n\t\t\tif (emailFormat) {\r\n\t\t\t\tctrl.addValidators(CmValidators.emailFormat(emailFormat));\r\n\t\t\t}\r\n\t\t\tctrl.enable();\r\n\t\t}\r\n\t\tctrl.updateValueAndValidity();\r\n\t\treturn ctrl;\r\n\t}\r\n\r\n\tprivate getAffiliationsByType(type?: string): Observable[]> {\r\n\t\treturn this.affiliationsByGroup$.pipe(map(affGroups => (type ? affGroups[type] : [])));\r\n\t}\r\n\r\n\tprivate getAffCatById(id: number): Observable {\r\n\t\treturn this.fetchAffiliationData$().pipe(\r\n\t\t\tmap(affs => affs.find(aff => aff.id === id) ?? null)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getAffiliationNameChanges$(): Observable | null> {\r\n\t\tif (!this.affiliationName) {\r\n\t\t\treturn of(null);\r\n\t\t}\r\n\t\treturn this.affiliationName.valueChanges.pipe(\r\n\t\t\tstartWith(this.affiliationName?.value ?? null),\r\n\t\t\tuntilDestroyed(this),\r\n\t\t\tskip(1),\r\n\t\t\tdistinctUntilChanged()\r\n\t\t);\r\n\t}\r\n\r\n\tprivate fetchCandidateAccount$(): Observable {\r\n\t\treturn this.apollo\r\n\t\t\t.watchQuery<\r\n\t\t\t\t{ candidateAccount: CandidateAccountResponse },\r\n\t\t\t\t{ request: CandidateIdRequest }\r\n\t\t\t>({\r\n\t\t\t\tquery: CANDIDATE_QUERY,\r\n\t\t\t\tvariables: this.cmcId\r\n\t\t\t\t\t? {\r\n\t\t\t\t\t\t\trequest: { cmcId: this.cmcId },\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t: undefined,\r\n\t\t\t})\r\n\t\t\t.valueChanges.pipe(map(({ data }) => data?.candidateAccount));\r\n\t}\r\n\r\n\tprivate fetchAffiliationData$(): Observable {\r\n\t\treturn this.apollo\r\n\t\t\t.watchQuery({\r\n\t\t\t\tquery: AFFILIATION_DATA_QUERY,\r\n\t\t\t})\r\n\t\t\t.valueChanges.pipe(\r\n\t\t\t\tmap(({ data }) => (data?.affiliationList || []).filter(aff => !aff.disabled)),\r\n\t\t\t\tshareReplay(1)\r\n\t\t\t);\r\n\t}\r\n\r\n\tprivate logError(err: any) {\r\n\t\tthis.logger.logToApiWithHeaders(\r\n\t\t\terr,\r\n\t\t\tnew HttpHeaders({\r\n\t\t\t\t...CmInterceptHeaders.SuppressErrorLog,\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, Output } from '@angular/core';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { CandidateAffiliationForm, CandidateAffiliationService } from '@cm/feature/affilliation';\nimport {\n\tCpProfileAffFormLocsType,\n\tcpProfileAffiliationFormLocs,\n} from './profile-affiliations.locs';\n\n@Component({\n selector: 'cp-profile-affiliations',\n templateUrl: './profile-affiliations.component.html',\n styleUrls: ['./profile-affiliations.component.scss'],\n providers: [CandidateAffiliationService, LocalizationProvider(cpProfileAffiliationFormLocs)],\n imports: [CommonModule, CandidateAffiliationForm]\n})\nexport class CpProfileAffiliationsComponent {\n\t@Input() touchOnInit: boolean = false;\n\t@Output() affiliationUpdate = new EventEmitter();\n\n\tconstructor(@Inject(LOC_INJECTOR) public readonly locs: CpProfileAffFormLocsType) {}\n\n\thandleSubmit(success: boolean): void {\n\t\tif (success) {\n\t\t\tthis.affiliationUpdate.emit();\n\t\t}\n\t}\n}\n","\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst sharedData: Pick = {\r\n\tfeature: HubFeature.CandidateProfilePrimaryInformationAffiliation,\r\n\tportal: 'CP',\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n};\r\n\r\nconst dpRoot = 'Profile|Affiliation';\r\n\r\nexport type CpProfileAffiliationFormLocs = 'CPProfileAffiliationRequired' | 'CPProfileAffiliationSectionTitle';\r\nexport type CpProfileAffFormLocsType = LocMap;\r\n\r\n// The first localization includes multiple legacyName properties (commented) as they are being removed later.\r\nexport const cpProfileAffiliationFormLocs: LocDefs = {\r\n\tCPProfileAffiliationRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'You are missing an affiliation and it must be added before continuing to use this site.',\r\n\t\tdisplayPath: 'System|Prerequisite|Add Affiliation Requirement',\r\n\t\tdescription:\r\n\t\t\t\"A notice that the candidate's affiliation must be added before the candidate can do anything else in the system\",\r\n\t\thtmlAllowed: true,\r\n\t\tfeature: HubFeature.CandidateProfilePrimaryInformationAffiliationRequired,\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation.Required/System.Prerequisite.AffiliationInfoUpdateRequired',\r\n\t\t// legacyName: 'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.Button.ClearButton'\r\n\t},\r\n\tCPProfileAffiliationSectionTitle: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Personal Information',\r\n\t\tdescription: 'Title for the affiliation section.',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Section`,\r\n\t\tlegacyName: 'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.Title.PersonalInformation',\r\n\t},\r\n};\r\n\r\nexport const CpProfileAffFormLocs = MapLocKeys(cpProfileAffiliationFormLocs);\r\n","
\n\t\n\t\t

{{ setting.name }}

\n\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t
\n\t
\n\t\t\n\t
\n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport {\n\tAbstractControl,\n\tFormBuilder,\n\tFormControl,\n\tFormGroup,\n\tUntypedFormControl,\n\tUntypedFormGroup,\n\tValidators,\n} from '@angular/forms';\nimport {\n\tCandidateAccount,\n\tCandidateAttributeCatalog,\n\tSettingCatalog,\n\tUpdateCandidateSettingListRequest,\n} from '@ats/api/cm';\nimport { CmLocalizePipe } from '@ats/cm/core';\nimport { CmFormService, CmValidators } from '@ats/cm/ui';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { atsSort, AtsUtility } from '@ats/utility';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Apollo } from 'apollo-angular';\nimport gql from 'graphql-tag';\nimport { Observable, of } from 'rxjs';\nimport { catchError, combineLatestWith, map, take } from 'rxjs/operators';\n\ninterface SettingsQueryResponse {\n\tsettingCatalogList: SettingCatalog[];\n\tcandidateAccount: Pick;\n}\n\ninterface CandidateResponses {\n\t[key: number]: number | number[];\n}\n\nconst SETTINGS_QUERY = gql`\n\tquery settingsAndAttributes {\n\t\tcandidateAccount {\n\t\t\tcmcId\n\t\t\tsettings {\n\t\t\t\tcmcId\n\t\t\t\tsettingItemId\n\t\t\t\tsettingItem {\n\t\t\t\t\tid\n\t\t\t\t\tsettingCatalog {\n\t\t\t\t\t\tid\n\t\t\t\t\t\tmultiSelect\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsettingCatalogList {\n\t\t\tdescription\n\t\t\tdisplayOrder\n\t\t\texternalId\n\t\t\tid\n\t\t\tmultiSelect\n\t\t\tname\n\t\t\tnameAbbr\n\t\t\trequired\n\t\t\tcandidateEdit\n\t\t\tsettingItems {\n\t\t\t\tdisplayOrder\n\t\t\t\texternalId\n\t\t\t\tgroupName\n\t\t\t\tid\n\t\t\t\tname\n\t\t\t\tnameAbbr\n\t\t\t\tsettingCatalogId\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst SETTINGS_MUTATION = gql`\n\tmutation updateSettingList($request: UpdateCandidateSettingListRequest!) {\n\t\tupdateCandidateSettingList(request: $request) {\n\t\t\tcmcId\n\t\t\tsettings {\n\t\t\t\tcmcId\n\t\t\t\tsettingItemId\n\t\t\t\tsettingItem {\n\t\t\t\t\tid\n\t\t\t\t\tsettingCatalog {\n\t\t\t\t\t\tid\n\t\t\t\t\t\tmultiSelect\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n\n@UntilDestroy()\n@Component({\n selector: 'cp-profile-settings',\n templateUrl: './profile-settings.component.html',\n styleUrls: ['./profile-settings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CpProfileSettingsComponent implements OnInit {\n\t@Output('update') update = new EventEmitter();\n\n\tform: FormGroup;\n\n\tsettingCatalog$: Observable;\n\tcandidateSettings$: Observable;\n\n\tconstructor(\n\t\tprivate readonly apollo: Apollo,\n\t\tprivate readonly notifications: AtsNotificationService,\n\t\tprivate readonly localize: CmLocalizePipe,\n\t\tprivate readonly formService: CmFormService,\n\t\tprivate readonly fb: FormBuilder\n\t) {\n\t\tthis.form = this.fb.group({});\n\t}\n\n\tngOnInit(): void {\n\t\tthis.settingCatalog$ = this.fetchSettings$().pipe(\n\t\t\ttake(1),\n\t\t\tmap(results => (results.settingCatalogList || []).filter(settingCat => settingCat.candidateEdit)),\n\t\t\tatsSort('displayOrder', 'id')\n\t\t);\n\n\t\tthis.candidateSettings$ = this.fetchSettings$().pipe(\n\t\t\ttake(1),\n\t\t\tmap(results =>\n\t\t\t\t((results.candidateAccount || {}).settings || []).reduce((obj, setting) => {\n\t\t\t\t\tif (setting.settingItem) {\n\t\t\t\t\t\tconst catId = setting.settingItem.settingCatalog.id;\n\t\t\t\t\t\tif (setting.settingItem.settingCatalog.multiSelect) {\n\t\t\t\t\t\t\tconst existing = obj[catId] || [];\n\t\t\t\t\t\t\tobj[catId] = [...existing, setting.settingItem.id];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj[catId] = setting.settingItem.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn obj;\n\t\t\t\t}, {})\n\t\t\t)\n\t\t);\n\n\t\tthis.settingCatalog$\n\t\t\t.pipe(\n\t\t\t\tcombineLatestWith(this.candidateSettings$),\n\t\t\t\tmap(([settingCatalog, candidateSettings]) =>\n\t\t\t\t\tsettingCatalog.reduce((form, settingCat) => {\n\t\t\t\t\t\tconst value = candidateSettings[settingCat.id] || null;\n\t\t\t\t\t\tconst control = settingCat.multiSelect\n\t\t\t\t\t\t\t? this.getMultiSelectGroup(settingCat, value)\n\t\t\t\t\t\t\t: this.getSingleSelectControl(settingCat, value);\n\n\t\t\t\t\t\tif (!settingCat.candidateEdit) {\n\t\t\t\t\t\t\tcontrol.disable();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontrol.markAllAsTouched();\n\n\t\t\t\t\t\tform.addControl(settingCat.id.toString(), control);\n\t\t\t\t\t\treturn form;\n\t\t\t\t\t}, this.fb.group({}))\n\t\t\t\t),\n\t\t\t\tuntilDestroyed(this)\n\t\t\t)\n\t\t\t.subscribe(form => (this.form = form));\n\t}\n\n\tgetControl(id: string) {\n\t\treturn this.form.get(id) as AbstractControl;\n\t}\n\n\thandleSubmit(): void {\n\t\tif (this.formService.isPristine(this.form, false) || !this.form.valid) {\n\t\t\tthis.notifications.popError({\n\t\t\t\tid: 'add-info-form',\n\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t'Please check the form for required fields and try again.',\n\t\t\t\t\t'CandidateProfile.CustomData.Settings/Profile.Settings.NotificationMessage.Required'\n\t\t\t\t),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst settings = this.form.getRawValue();\n\n\t\tconst request: UpdateCandidateSettingListRequest = Object.keys(settings).reduce(\n\t\t\t(settings, settingCat) => {\n\t\t\t\tconst value = (this.form.get(settingCat.toString()) || {}).value;\n\t\t\t\tif (!AtsUtility.isNotNullOrUndefined(value)) {\n\t\t\t\t\treturn settings;\n\t\t\t\t}\n\n\t\t\t\tif (isNaN(Number(value))) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...settings,\n\t\t\t\t\t\tsettingListToAdd: [\n\t\t\t\t\t\t\t...settings.settingListToAdd,\n\t\t\t\t\t\t\t...Object.keys(value)\n\t\t\t\t\t\t\t\t.filter(key => value[key] === true)\n\t\t\t\t\t\t\t\t.map(key => Number(key)),\n\t\t\t\t\t\t],\n\t\t\t\t\t\tsettingListToDelete: [\n\t\t\t\t\t\t\t...settings.settingListToDelete,\n\t\t\t\t\t\t\t...Object.keys(value)\n\t\t\t\t\t\t\t\t.filter(key => value[key] === false)\n\t\t\t\t\t\t\t\t.map(key => Number(key)),\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...settings,\n\t\t\t\t\t\tsettingListToAdd: [...settings.settingListToAdd, value],\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ settingListToAdd: [], settingListToDelete: [] }\n\t\t);\n\t\tthis.mutateSettings$(request).subscribe(success => {\n\t\t\tif (success) {\n\t\t\t\tthis.notifications.popSuccess({\n\t\t\t\t\tid: 'submission-success',\n\t\t\t\t\tmessage: this.localize.transform(\n\t\t\t\t\t\t'Information has been saved',\n\t\t\t\t\t\t'CandidateProfile.CustomData.Settings/Profile.Settings.NotificationMessage.InfoSaved'\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t\tthis.update.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getSingleSelectControl(settingCat: SettingCatalog, value: number | number[] | null): FormControl {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error('Array passed where single value expected.');\n\t\t}\n\t\tconst control = new FormControl(value);\n\t\tif (settingCat.required) {\n\t\t\tcontrol.setValidators([Validators.required]);\n\t\t}\n\n\t\tif (!settingCat.candidateEdit) {\n\t\t\tcontrol.disable();\n\t\t}\n\t\treturn control;\n\t}\n\n\tprivate getMultiSelectGroup(settingCat: SettingCatalog, value: number | number[] | null): UntypedFormGroup {\n\t\tconst settingIds = [];\n\t\tconst group: UntypedFormGroup = settingCat.settingItems.reduce((group, settingItem) => {\n\t\t\tconst selected = Array.isArray(value) ? value.includes(settingItem.id) : value === settingItem.id;\n\t\t\tgroup.addControl(settingItem.id.toString(), new UntypedFormControl(selected));\n\t\t\tsettingIds.push(settingItem.id.toString());\n\t\t\treturn group;\n\t\t}, new UntypedFormGroup({}));\n\n\t\tif (settingCat.required) {\n\t\t\tgroup.addValidators([CmValidators.atLeastOne(settingIds)]);\n\t\t}\n\n\t\tif (!settingCat.candidateEdit) {\n\t\t\tgroup.disable();\n\t\t}\n\n\t\treturn group;\n\t}\n\n\tprivate fetchSettings$(): Observable {\n\t\treturn this.apollo\n\t\t\t.watchQuery<{\n\t\t\t\tsettingCatalogList: SettingCatalog[];\n\t\t\t\tattributeCatalogList: CandidateAttributeCatalog[];\n\t\t\t\tcandidateAccount: CandidateAccount;\n\t\t\t}>({\n\t\t\t\tquery: SETTINGS_QUERY,\n\t\t\t})\n\t\t\t.valueChanges.pipe(map(({ data }) => data));\n\t}\n\n\tprivate mutateSettings$(request: UpdateCandidateSettingListRequest): Observable {\n\t\treturn this.apollo\n\t\t\t.mutate({\n\t\t\t\tmutation: SETTINGS_MUTATION,\n\t\t\t\tvariables: { request },\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tmap(() => true),\n\t\t\t\tcatchError(() => of(false))\n\t\t\t);\n\t}\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'cp-section',\n templateUrl: './cp-section.component.html',\n styleUrls: ['./cp-section.component.scss'],\n standalone: false\n})\nexport class CpSectionComponent {\n\n constructor() { }\n\n}\n","
\n\t

\n\t\t\n\t

\n\t
\n\t\t\n\t
\n
\n","\n\t
\n\t\t\n\t\t\t{{ item.name }}\n\t\t\n\t\t
\n\t\t\t\n\t\t\t\tMust select at least one\n\t\t\t\n\t\t
\n\t
\n
\n","import { Component, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { SettingCatalog } from '@ats/api/cm';\n@Component({\n selector: 'cp-sponsor-setting-multiselect',\n templateUrl: './sponsor-setting-multiselect.component.html',\n styleUrls: ['./sponsor-setting-multiselect.component.scss'],\n standalone: false\n})\nexport class CpSponsorSettingMultiselectComponent {\n\t@Input() setting: SettingCatalog;\n\t@Input() formGroup: FormGroup;\n\n\tconstructor() {}\n\n\tget control(): FormControl {\n\t\treturn this.formGroup.get(this.setting.id.toString()) as FormControl;\n\t}\n}\n","\n\t maxRadioOptions; else radioTpl\"\n\t\t[options$]=\"options$\"\n\t\t[formControlName]=\"setting.id?.toString()\"\n\t\t[hideLabel]=\"true\">\n\t\t{{ setting.name }}\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tMust select an answer\n\t\t\t
\n\t\t
\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t{{ option.display }}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tNone\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tMust select an answer\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { SettingCatalog } from '@ats/api/cm';\nimport { CMOption } from '@ats/cm/ui';\nimport { atsSort } from '@ats/utility';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'cp-sponsor-setting-single',\n templateUrl: './sponsor-setting-single.component.html',\n styleUrls: ['./sponsor-setting-single.component.scss'],\n standalone: false\n})\nexport class CpSponsorSettingSingleComponent implements OnInit {\n\t@Input() setting: SettingCatalog;\n\t@Input() formGroup: FormGroup;\n\toptions$!: Observable[]>;\n\treadonly maxRadioOptions = 4;\n\n\tconstructor() {}\n\n\tngOnInit() {\n\t\tthis.options$ = of(this.setting.settingItems).pipe(\n\t\t\tatsSort('displayOrder', 'name'),\n\t\t\tmap(options =>\n\t\t\t\toptions.map(item => ({\n\t\t\t\t\tvalue: item.id,\n\t\t\t\t\tdisplay: item.name,\n\t\t\t\t}))\n\t\t\t)\n\t\t);\n\t}\n\n\tget control(): AbstractControl {\n\t\tif (!this.formGroup || !this.setting) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.formGroup.get(this.setting.id.toString());\n\t}\n}\n","import { cpNavigationLocs } from './components/navigation/navigation.locs';\r\nimport { cpNameConfirmationFormLocs } from './components/requirement-forms/name-confirmation/name-confirmation.locs';\r\nimport { cpPersonalInfoFormLocs } from './components/requirement-forms/personal-info/personal-info-form.locs';\r\nexport const cpUIModuleLocs = {\r\n\t...cpPersonalInfoFormLocs,\r\n\t...cpNameConfirmationFormLocs,\r\n\t...cpNavigationLocs,\r\n};\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\n selector: '[cpSubsectionTitle]',\n host: {\n '[class]': '\"cp-subsection__title\"',\n },\n standalone: false\n})\r\nexport class CpSubsectionTitleDirective {}\r\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst sharedData: Pick = {\r\n\tfeature: HubFeature.CandidateProfilePrimaryInformationAffiliation,\r\n\tportal: 'CP',\r\n\thtmlAllowed: false,\r\n\tshared: false,\r\n};\r\n\r\nconst dpRoot = 'Profile|Affiliation';\r\n\r\nexport type CpProfileAffiliationFormLocs =\r\n\t| 'CPProfileAffiliationType'\r\n\t| 'CPProfileAffiliationTypeRequired'\r\n\t| 'CPProfileAffiliationTypeInvalid'\r\n\t| 'CPProfileAffiliationName'\r\n\t| 'CPProfileAffiliationNameRequired'\r\n\t| 'CPProfileAffiliationNameInvalid'\r\n\t| 'CPProfileAffiliationEmail'\r\n\t| 'CPProfileAffiliationEmailRequired'\r\n\t| 'CPProfileAffiliationEmailInvalid'\r\n\t| 'CPProfileAffiliationEmailUnsupported'\r\n\t| 'CPProfileAffiliationId'\r\n\t| 'CPProfileAffiliationIdRequired'\r\n\t| 'CPProfileAffiliationIdInvalid'\r\n\t| 'CPProfileAffiliationOtherName'\r\n\t| 'CPProfileAffiliationOtherNameInvalid'\r\n\t| 'CPProfileAffiliationOtherNameRequired'\r\n\t| 'CPProfileAffiliationUpdate'\r\n\t| 'CPProfileAffiliationSaveNotice';\r\nexport type CpProfileAffFormLocsType = LocMap;\r\n\r\n// The first localization includes multiple legacyName properties (commented) as they are being removed later.\r\nexport const cpSharedProfileAffiliationFormLocs: LocDefs = {\r\n\tCPProfileAffiliationUpdate: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Update information',\r\n\t\tdisplayPath: `${dpRoot}|Update Information`,\r\n\t\tdescription: 'Update information button for the personal information section.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.Button.UpdateInfo',\r\n\t},\r\n\tCPProfileAffiliationEmailInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Invalid email address',\r\n\t\tdisplayPath: `${dpRoot}|Invalid Email Address`,\r\n\t\tdescription: 'Error saying the email address is invalid.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffiliationEmailInvalid',\r\n\t},\r\n\tCPProfileAffiliationEmailRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation email is required',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Email Required`,\r\n\t\tdescription: 'Error saying the affiliation email is required.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffiliationEmailRequired',\r\n\t},\r\n\tCPProfileAffiliationEmailUnsupported: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Unsupported email address',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Email Unsupported`,\r\n\t\tdescription: 'Error saying the affiliation email is not supported.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffiliationEmailUnsupported',\r\n\t},\r\n\tCPProfileAffiliationIdInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation ID is invalid',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation ID Invalid`,\r\n\t\tdescription: 'Error saying the affiliation ID is invalid.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffiliationIdInvalid',\r\n\t},\r\n\tCPProfileAffiliationIdRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation ID is required',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation ID Required`,\r\n\t\tdescription: 'Error saying the affiliation ID is required.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffiliationIdRequired',\r\n\t},\r\n\tCPProfileAffiliationNameInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation name is invalid',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Name Invalid`,\r\n\t\tdescription: 'Error saying the affiliation name is invalid.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffiliationNameInvalid',\r\n\t},\r\n\tCPProfileAffiliationNameRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation name is required',\r\n\t\tdisplayPath: `${dpRoot}|Afffiliation Name Required`,\r\n\t\tdescription: 'Error saying the affiliation name is required.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffiliationNameRequired',\r\n\t},\r\n\tCPProfileAffiliationTypeInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Type is invalid',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Type Invalid Error`,\r\n\t\tdescription: 'Error saying that affiliation Type is invalid.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffilliationTypeInvalid',\r\n\t},\r\n\tCPProfileAffiliationTypeRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Type is required',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Type Required Error`,\r\n\t\tdescription: 'Error saying that affiliation Type is required.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.AffilliationTypeRequired',\r\n\t},\r\n\tCPProfileAffiliationOtherNameInvalid: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Other affiliation name is invalid',\r\n\t\tdisplayPath: `${dpRoot}|Other Affiliation Name Invalid Error`,\r\n\t\tdescription: 'Error saying that the other affiliation name is invalid.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.OtherNameInvalid',\r\n\t},\r\n\tCPProfileAffiliationOtherNameRequired: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Other affiliation name is required',\r\n\t\tdisplayPath: `${dpRoot}|Other Affiliation Name Required Error`,\r\n\t\tdescription: 'Error saying that the other affiliation name is required.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldError.OtherNameRequired',\r\n\t},\r\n\tCPProfileAffiliationEmail: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Email',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Email`,\r\n\t\tdescription: 'Field label for: Affiliation Email.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldLabel.AffiliationEmail',\r\n\t},\r\n\tCPProfileAffiliationId: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation ID',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation ID`,\r\n\t\tdescription: 'Field label for: Affiliation ID.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldLabel.AffiliationId',\r\n\t},\r\n\tCPProfileAffiliationName: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Name',\r\n\t\tdisplayPath: `${dpRoot}|Affiliation Name`,\r\n\t\tdescription: 'Label for the affiliation name input.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldLabel.AffiliationName',\r\n\t},\r\n\tCPProfileAffiliationType: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Affiliation Type',\r\n\t\tdisplayPath: `${dpRoot}||Affiliation Type`,\r\n\t\tdescription: 'Label for the affiliation type input.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldLabel.AffiliationType',\r\n\t},\r\n\tCPProfileAffiliationOtherName: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Other Affiliation Name',\r\n\t\tdisplayPath: `${dpRoot}|Other Affiliation Name Label`,\r\n\t\tdescription: 'The field label for the other affiliation name.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.FieldLabel.OtherName',\r\n\t},\r\n\tCPProfileAffiliationSaveNotice: {\r\n\t\t...sharedData,\r\n\t\tdefaultValue: 'Changes saved',\r\n\t\tdisplayPath: `${dpRoot}|Changes Saved`,\r\n\t\tdescription: 'Notification message when affiliation changes have been successfully saved.',\r\n\t\tlegacyName:\r\n\t\t\t'CandidateProfile.PrimaryInformation.Affiliation/Profile.Affiliation.NotificationMessage.ChangesSaved',\r\n\t},\r\n};\r\n\r\nexport const CpProfileAffFormLocs = MapLocKeys(\r\n\tcpSharedProfileAffiliationFormLocs\r\n);\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AtsIconComponent } from './icon.component';\n\n@NgModule({\n\timports: [CommonModule],\n\tdeclarations: [AtsIconComponent],\n\texports: [AtsIconComponent],\n})\nexport class AtsIconsModule {}\n","\n\t{{ title }}\n\t\n\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as Icons from './icons';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ats-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AtsIconComponent implements OnInit {\n\t@Input() name: string;\n\t@Input() size: number = 14;\n\t@HostBinding('attr.aria-label') @Input() title: string = '';\n\t@HostBinding('attr.role') @Input() role = 'presentation';\n\tviewbox: string;\n\ttransform: string;\n\tdefault = {\n\t\ttitle: 'Icon Not Found',\n\t\tcontent:\n\t\t\t'',\n\t};\n\ticon: any;\n\tpaths: any;\n\n\tconstructor(private sanitizer: DomSanitizer) {}\n\n\tngOnInit() {\n\t\tconst prop = this.parseString(this.name);\n\t\tthis.icon = Icons[prop];\n\t\tif (!this.icon) {\n\t\t\tthis.icon = this.default;\n\t\t}\n\n\t\tthis.paths = this.sanitizer.bypassSecurityTrustHtml(this.icon.content);\n\t\tthis.viewbox = `0 0 ${this.size} ${this.size}`;\n\t\tthis.transform = `matrix(${this.size / 24},0,0,${this.size / 24},0,0)`;\n\t\tif (this.title) {\n\t\t\tthis.role = 'img';\n\t\t}\n\t}\n\n\tparseString(str: string) {\n\t\treturn (str || '').split('-').join('_');\n\t}\n}\n","export const add = {\r\n\tname: 'add',\r\n\ttitle: 'Add',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const arrow_down = {\n\tname: 'arrow-down',\n\ttitle: 'Arrow Down',\n\tcontent:\n\t\t'',\n};\n","export const arrow_left = {\n\tname: 'arrow-left',\n\ttitle: 'Arrow Left',\n\tcontent:\n\t\t'',\n};\n","export const arrow_right = {\n\tname: 'arrow-right',\n\ttitle: 'Arrow Right',\n\tcontent:\n\t\t'',\n};\n","export const arrow_up = {\n\tname: 'arrow-up',\n\ttitle: 'Arrow Up',\n\tcontent:\n\t\t'',\n};\n","export const attachment = {\n\tname: 'attachment',\n\ttitle: 'Attachment',\n\tcontent:\n\t\t'',\n};\n","export const audio_listen = {\r\n\tname: 'audio-listen',\r\n\ttitle: 'Listen to Audio',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const back = {\n\tname: 'back',\n\ttitle: 'Back',\n\tcontent:\n\t\t'',\n};\n","export const badge = {\n\tname: 'badge',\n\ttitle: 'Badge',\n\tcontent:\n\t\t'',\n};\n","export const badge_view = {\r\n\tname: 'badge-view',\r\n\ttitle: 'View Badge',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const calendar = {\r\n\tname: 'calendar',\r\n\ttitle: 'Calendar',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const candidates = {\n\tname: 'candidates',\n\ttitle: 'Candidates',\n\tcontent:\n\t\t'',\n};\n","export const certificate = {\n\tname: 'certificate',\n\ttitle: 'Certificate',\n\tcontent:\n\t\t'',\n};\n","export const check = {\n\tname: 'check',\n\ttitle: 'Check',\n\tcontent:\n\t\t'',\n};\n","export const circle = {\r\n\tname: 'circle',\r\n\ttitle: 'Empty',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const circle_check = {\r\n\tname: 'circle-check',\r\n\ttitle: 'Checked',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const circle_close = {\r\n\tname: 'circle-close',\r\n\ttitle: 'Cancel',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const clipboard = {\r\n\tname: 'clipboard',\r\n\ttitle: 'Copy to Clipboard',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const close = {\n\tname: 'close',\n\ttitle: 'Close',\n\tcontent:\n\t\t'',\n};\n","export const cog = {\n\tname: 'cog',\n\ttitle: 'Cog',\n\tcontent:\n\t\t'',\n};\n","export const collapse = {\n\tname: 'collapse',\n\ttitle: 'Collapse',\n\tcontent:\n\t\t'',\n};\n","export const csv = {\r\n\tname: 'csv',\r\n\ttitle: 'CSV',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const dash = {\n\tname: 'dash',\n\ttitle: 'Dash',\n\tcontent:\n\t\t'',\n};\n","export const database = {\n\tname: 'database',\n\ttitle: 'Database',\n\tcontent:\n\t\t'',\n};\n","export const database_broken = {\n\tname: 'database-broken',\n\ttitle: 'Database Broken',\n\tcontent:\n\t\t'',\n};\n","export const dev = {\n\tname: 'dev',\n\ttitle: 'Dev',\n\tcontent:\n\t\t'',\n};\n","export const download = {\n\tname: 'download',\n\ttitle: 'Download',\n\tcontent:\n\t\t'',\n};\n","export const email_send = {\r\n\tname: 'email-send',\r\n\ttitle: 'Send Email',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const ex = {\n\tname: 'ex',\n\ttitle: 'Ex',\n\tcontent:\n\t\t'',\n};\n","export const exit = {\r\n\tname: 'exit',\r\n\ttitle: 'Leave Site',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const expand = {\n\tname: 'expand',\n\ttitle: 'Expand',\n\tcontent:\n\t\t'',\n};\n","export const external = {\n\tname: 'external',\n\ttitle: 'External',\n\tcontent:\n\t\t'',\n};\n","export const facebook = {\r\n\tname: 'facebook',\r\n\ttitle: 'Facebook',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const file_info = {\n\tname: 'file-info',\n\ttitle: 'Info',\n\tcontent:\n\t\t'',\n};\n","export const filter = {\n\tname: 'filter',\n\ttitle: 'Filter',\n\tcontent:\n\t\t'',\n};\n","export const filter_closed = {\n\tname: 'filter-closed',\n\ttitle: 'Unfiltered',\n\tcontent:\n\t\t'',\n};\n","export const folder_checked = {\r\n\tname: 'folder-checked',\r\n\ttitle: 'Folder Checked',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const folder_closed = {\r\n\tname: 'folder-closed',\r\n\ttitle: 'Folder Closed',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const folder_disabled = {\r\n\tname: 'folder-disabled',\r\n\ttitle: 'Folder Disabled',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const folder_open = {\r\n\tname: 'folder-open',\r\n\ttitle: 'Folder Open',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const fullscreen_collapse = {\r\n\tname: 'fullscreen-collapse',\r\n\ttitle: 'Collapse Fullscreen',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const fullscreen_expand = {\r\n\tname: 'fullscreen-expand',\r\n\ttitle: 'Expand to Fullscreen',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const grid = {\r\n\tname: 'grid',\r\n\ttitle: 'View as grid',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const hamburger = {\r\n\tname: 'hamburger',\r\n\ttitle: 'Menu',\r\n\tcontent:\r\n\t\t' ',\r\n};\r\n","export const help = {\n\tname: 'help',\n\ttitle: 'Help',\n\tcontent:\n\t\t'',\n};\n","export const home = {\n\tname: 'home',\n\ttitle: 'Home',\n\tcontent:\n\t\t'',\n};\n","export const image_not_found = {\r\n\tname: 'image-not-found',\r\n\ttitle: 'Image Not Found',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const info = {\n\tname: 'info',\n\ttitle: 'Info',\n\tcontent:\n\t\t'',\n};\n","export const key_lock = {\r\n\tname: 'key-lock',\r\n\ttitle: 'My Account',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const link = {\n\tname: 'link',\n\ttitle: 'Link',\n\tcontent:\n\t\t'',\n};\n","export const linked_in = {\r\n\tname: 'linked-in',\r\n\ttitle: 'LinkedIn',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const linkedin = {\r\n\tname: 'linkedin',\r\n\ttitle: 'LinkedIn',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const logout = {\r\n\tname: 'logout',\r\n\ttitle: 'Logout',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const look = {\r\n\tname: 'look',\r\n\ttitle: 'Look',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const move = {\n\tname: 'move',\n\ttitle: 'Move',\n\tcontent:\n\t\t'',\n};\n","export const nav_bars = {\n\tname: 'nav-bars',\n\ttitle: 'Nav Bars',\n\tcontent:\n\t\t'',\n};\n","export const nav_dots = {\n\tname: 'nav-dots',\n\ttitle: 'Nav Dots',\n\tcontent:\n\t\t'',\n};\n","export const not_available = {\r\n\tname: 'not-available',\r\n\ttitle: 'Not Available',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const pdf = {\r\n\tname: 'pdf',\r\n\ttitle: 'PDF',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const pencil = {\n\tname: 'pencil',\n\ttitle: 'Pencil',\n\tcontent:\n\t\t'',\n};\n","export const permissions = {\n\tname: 'permissions',\n\ttitle: 'Permissions',\n\tcontent:\n\t\t'',\n};\n","export const reload = {\r\n\tname: 'reload',\r\n\ttitle: 'Reload',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const reports = {\n\tname: 'reports',\n\ttitle: 'Reports',\n\tcontent:\n\t\t'',\n};\n","export const search = {\n\tname: 'search',\n\ttitle: 'Search',\n\tcontent:\n\t\t'',\n};\n","export const settings = {\n\tname: 'settings',\n\ttitle: 'Settings',\n\tcontent:\n\t\t'',\n};\n","export const share = {\n\tname: 'share',\n\ttitle: 'Share',\n\tcontent:\n\t\t'',\n};\n","export const small_ex = {\r\n\tname: 'small-ex',\r\n\ttitle: 'False',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n\r\n// \r\n// \r\n// \r\n","export const sort_asc = {\r\n\tname: 'sort-asc',\r\n\ttitle: 'Sort (Ascending)',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const sort_desc = {\r\n\tname: 'sort-desc',\r\n\ttitle: 'Sort (Descending)',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const speech = {\r\n\tname: 'speech',\r\n\ttitle: 'Speech',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const square = {\r\n\tname: 'square',\r\n\ttitle: 'Unselected',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const square_check = {\r\n\tname: 'square-check',\r\n\ttitle: 'Selected',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const stage = {\r\n\tname: 'stage',\r\n\ttitle: 'Stage',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const table = {\r\n\tname: 'table',\r\n\ttitle: 'View as table',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const translate = {\n\tname: 'translate',\n\ttitle: 'Translate',\n\tcontent:\n\t\t'',\n};\n","export const trash = {\n\tname: 'trash',\n\ttitle: 'Trash',\n\tcontent:\n\t\t'',\n};\n","export const twitter = {\r\n\tname: 'twitter',\r\n\ttitle: 'Twitter',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const user_exit = {\r\n\tname: 'user-exit',\r\n\ttitle: 'User Exit',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const users = {\n\tname: 'users',\n\ttitle: 'Users',\n\tcontent:\n\t\t'',\n};\n","export const view = {\r\n\tname: 'view',\r\n\ttitle: 'View',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const view_none = {\r\n\tname: 'view-none',\r\n\ttitle: 'View (None)',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const warning = {\n\tname: 'warning',\n\ttitle: 'Warning',\n\tcontent:\n\t\t'',\n};\n","export const zoom_in = {\r\n\tname: 'zoom-in',\r\n\ttitle: 'Zoom In',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export const zoom_out = {\r\n\tname: 'zoom-out',\r\n\ttitle: 'Zoom Out',\r\n\tcontent:\r\n\t\t'',\r\n};\r\n","export enum LogLevelEnum {\r\n\tTrace = 0,\r\n\tDebug = 1,\r\n\tInformation = 2,\r\n\tWarning = 3,\r\n\tError = 4,\r\n\tCritical = 5,\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoggingModule } from '@cm/core/logging';\n\n/**\n *\n * @deprecated Use @cm/core/logging LoggingModule\n */\n@NgModule({\n\timports: [CommonModule, LoggingModule],\n})\nexport class AtsLoggerModule {}\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { LoggingService } from '@cm/core/logging';\r\n\r\n/**\r\n *\r\n * @deprecated Use @cm/core/logging LoggingService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AtsLoggerService {\r\n\tconstructor(private readonly logging: LoggingService) {}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.logToApi\r\n\t */\r\n\tlogToApi(error: any) {\r\n\t\tthis.logging.logToApi(error);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.logToApiWithHeaders\r\n\t */\r\n\tlogToApiWithHeaders(error: any, headers: HttpHeaders) {\r\n\t\tthis.logging.logToApiWithHeaders(error, headers);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.trace\r\n\t */\r\n\ttrace(...args: any[]) {\r\n\t\tthis.logging.trace(args);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.debug\r\n\t */\r\n\tdebug(...args: any[]) {\r\n\t\tthis.logging.debug(args);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.info\r\n\t */\r\n\tinfo(...args: any[]) {\r\n\t\tthis.logging.info(args);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.warn\r\n\t */\r\n\twarn(...args: any[]) {\r\n\t\tthis.logging.warn(args);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.error\r\n\t */\r\n\terror(...args: any[]) {\r\n\t\tthis.logging.error(args);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/logging LoggingService.critical\r\n\t */\r\n\tcritical(...args: any[]) {\r\n\t\tthis.logging.critical(args);\r\n\t}\r\n}\r\n","export enum NoticeType {\r\n\tINFO = 'Information Notification',\r\n\tSUCCESS = 'Success Notification',\r\n\tERROR = 'Error Notification',\r\n\tWARNING = 'Warning Notification',\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { AtsNotificationService } from './notifications.service';\n\n@NgModule({\n\timports: [CommonModule],\n})\nexport class AtsNotificationModule {\n\tpublic static forRoot(duration: number = 6000): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: AtsNotificationModule,\n\t\t\tproviders: [AtsNotificationService, { provide: 'duration', useValue: duration }],\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { filterNullOrUndefined } from '@ats/utility';\nimport { LocalizationService } from '@cm/core/localization';\nimport { CmEventService } from '@cm/core/system';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { CmSystemEvent } from 'libs/core/system/src/models/system-event';\nimport { BehaviorSubject, Observable, Subject, of } from 'rxjs';\nimport { distinctUntilChanged, map, take } from 'rxjs/operators';\nimport { NoticeType } from './notice-type.enum';\nimport { Notice } from './notice.interface';\n\nconst enum NotificationActionTypes {\n\tUPDATE_LOADERS = 'Update loader array',\n\tUPDATE_NOTICE = 'Update notice',\n}\n\ninterface NotificationAction {\n\treadonly type: NotificationActionTypes;\n\treadonly payload: string[] | Notice | boolean;\n}\n\nclass NotificationState {\n\tloaders: string[] = [];\n\tnotice: Notice | null = null;\n}\n\nconst reduce = (state: NotificationState, action: NotificationAction) => {\n\tswitch (action.type) {\n\t\tcase NotificationActionTypes.UPDATE_LOADERS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tloaders: [...(action.payload as string[])],\n\t\t\t};\n\t\tcase NotificationActionTypes.UPDATE_NOTICE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tnotice: action.payload as Notice,\n\t\t\t};\n\t}\n};\n\n@UntilDestroy()\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class AtsNotificationService {\n\tprivate state = new NotificationState();\n\tprivate dispatch = new BehaviorSubject(this.state);\n\tprivate readonly reloadSubject = new Subject();\n\tprivate readonly loaderMessageSubj = new Subject<{\n\t\tkey: string;\n\t\tdefaultValue: string;\n\t} | null>();\n\n\tloading$: Observable = this.dispatch.asObservable().pipe(\n\t\tmap(state => state.loaders.length > 0),\n\t\tdistinctUntilChanged()\n\t);\n\n\tnotice$: Observable = this.dispatch.asObservable().pipe(\n\t\tmap(state => state.notice),\n\t\tfilterNullOrUndefined(),\n\t\tdistinctUntilChanged()\n\t);\n\n\tloaderMessage$: Observable<{ key: string; defaultValue: string } | null> =\n\t\tthis.loaderMessageSubj.asObservable();\n\n\treadonly reload$: Observable;\n\n\tconstructor(\n\t\tprivate readonly systemEvents: CmEventService,\n\t\tprivate readonly locService: LocalizationService\n\t) {\n\t\tthis.reload$ = this.reloadSubject.asObservable();\n\n\t\tthis.systemEvents.event$\n\t\t\t.pipe(untilDestroyed(this))\n\t\t\t.subscribe(event => this.handleEvent(event));\n\t}\n\n\tload(key: string): void {\n\t\tthis.dispatchLoader(this.addLoadKey(key), NotificationActionTypes.UPDATE_LOADERS);\n\t}\n\n\tunload(key: string): void {\n\t\tthis.dispatchLoader(this.removeLoadKey(key), NotificationActionTypes.UPDATE_LOADERS);\n\t}\n\n\tpopLoader(text: { key: string; defaultValue: string }) {\n\t\tthis.loaderMessageSubj.next(text);\n\t}\n\n\thideLoader() {\n\t\tthis.loaderMessageSubj.next(null);\n\t}\n\n\tpop(notice: Notice): void {\n\t\tconst type = NotificationActionTypes.UPDATE_NOTICE;\n\t\tconst action = { payload: notice, type };\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\n\t}\n\n\tpopError(notice: Omit): void {\n\t\tconst noticeWithType = {\n\t\t\t...notice,\n\t\t\ttype: NoticeType.ERROR,\n\t\t};\n\t\tthis.pop(noticeWithType);\n\t}\n\n\tpopSuccess(notice: Omit): void {\n\t\tconst noticeWithType = {\n\t\t\t...notice,\n\t\t\ttype: NoticeType.SUCCESS,\n\t\t};\n\t\tthis.pop(noticeWithType);\n\t}\n\n\tpopInfo(notice: Omit): void {\n\t\tconst noticeWithType = {\n\t\t\t...notice,\n\t\t\ttype: NoticeType.INFO,\n\t\t};\n\t\tthis.pop(noticeWithType);\n\t}\n\n\tprivate localizeMessage(message: string): Observable {\n\t\tif (typeof message === 'string') {\n\t\t\treturn this.locService.findValue$(message);\n\t\t} else return of(null);\n\t}\n\n\tshowSuccess(localization: string): void {\n\t\tthis.localizeMessage(localization)\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(message => {\n\t\t\t\tif (message) {\n\t\t\t\t\tthis.popSuccess({\n\t\t\t\t\t\tid: 'success',\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tshowFailure(localization: string): void {\n\t\tthis.localizeMessage(localization)\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(message => {\n\t\t\t\tif (message) {\n\t\t\t\t\tthis.popError({\n\t\t\t\t\t\tid: 'success',\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\trequireReload(message: string | null = null): void {\n\t\tthis.reloadSubject.next(message);\n\t}\n\n\tprivate dispatchLoader(loaders: string[], type: NotificationActionTypes): void {\n\t\tconst action = { payload: loaders, type };\n\t\tthis.dispatch.next((this.state = reduce(this.state, action)));\n\t}\n\n\tprivate addLoadKey(key: string): string[] {\n\t\treturn [...this.removeLoadKey(key), key];\n\t}\n\n\tprivate removeLoadKey(key: string): string[] {\n\t\treturn this.state.loaders.filter(ky => ky !== key);\n\t}\n\n\tprivate handleEvent(event: CmSystemEvent): void {\n\t\tlet locName: string | null = null;\n\t\tswitch (event.type) {\n\t\t\tcase 'API_ERROR':\n\t\t\t\tlocName = this.getGUIDLocalizationName(event.id);\n\t\t\t\tbreak;\n\t\t\tcase 'AUTH_ERROR':\n\t\t\t\tif (event.action !== 'ban-redirect') {\n\t\t\t\t\tlocName = this.locService.Keys.Errors.CMSystemErrorAuth;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'SYSTEM_ERROR':\n\t\t\t\tlocName = this.locService.Keys.Errors.CMSystemErrorDefault;\n\t\t\t\tbreak;\n\t\t\tcase 'LOAD_START':\n\t\t\t\tthis.load(event.id);\n\t\t\t\tbreak;\n\t\t\tcase 'LOAD_END':\n\t\t\t\tthis.unload(event.id);\n\t\t\t\tbreak;\n\t\t\tcase 'RELOAD_REQUIRED':\n\t\t\t\tthis.requireReload();\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// If we have a loc, use it\n\t\tif (locName) {\n\t\t\tthis.localizeNotice(locName, event.id, NoticeType.ERROR, event.raw?.message);\n\t\t} else if (event.raw?.message) {\n\t\t\tthis.popError({\n\t\t\t\tid: event.id,\n\t\t\t\tmessage: event.raw.message,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate getGUIDLocalizationName(id?: string): string | null {\n\t\t// If there is no ID, or the ID is not a GUID, return null\n\t\tif (!id || !/^[0-9a-f]{32}$/.test(id ?? '')) {\n\t\t\treturn null;\n\t\t}\n\t\tconst legacyLoc = this.locService.findGUIDLocName(id);\n\t\treturn legacyLoc === 'Core/Error.GUID.ServerError' ? id : legacyLoc;\n\t}\n\n\tprivate localizeNotice(loc: string, id: string, type: NoticeType, msg?: string): void {\n\t\tthis.locService\n\t\t\t.findValue$(loc)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\tmap(message => {\n\t\t\t\t\tif (message && message.length > 0) {\n\t\t\t\t\t\treturn message;\n\t\t\t\t\t} else if (msg && msg.length > 0) {\n\t\t\t\t\t\treturn msg;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn 'An error occurred';\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe(message => {\n\t\t\t\tthis.pop({\n\t\t\t\t\tid,\n\t\t\t\t\tmessage,\n\t\t\t\t\ttype,\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'System|Pages|Access Denied';\r\n\r\nexport type AccessDeniedLocs =\r\n\t| 'SPSystemAccessDeniedTitle'\r\n\t| 'SPSystemAccessDeniedContent'\r\n\t| 'SPSystemAccessDeniedButton'\r\n\t| 'CPSystemAccessDeniedTitle'\r\n\t| 'CPSystemAccessDeniedContent'\r\n\t| 'CPSystemAccessDeniedButton';\r\n\r\nexport const accessDeniedLocs: LocDefs = {\r\n\tSPSystemAccessDeniedTitle: {\r\n\t\tdefaultValue: 'Access Denied',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdescription: 'Title for the access denied page.',\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.Core,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.SponsorPortalString,\r\n\t},\r\n\tSPSystemAccessDeniedContent: {\r\n\t\tdefaultValue: '',\r\n\t\tdisplayPath: `${dpRoot}|Content`,\r\n\t\tdescription: 'Content displayed on the access denied page. Leave blank to just display the title and button.',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\thtmlAllowed: true,\r\n\t\tshared: false,\r\n\t\ttype: LocType.SponsorPortalString,\r\n\t},\r\n\tSPSystemAccessDeniedButton: {\r\n\t\tdefaultValue: 'Go Back',\r\n\t\tdisplayPath: `${dpRoot}|Button`,\r\n\t\tdescription: 'Text displayed in the go back button.',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.Core,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.SponsorPortalString,\r\n\t},\r\n\tCPSystemAccessDeniedTitle: {\r\n\t\tdefaultValue: 'Access Denied',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdescription: 'Title for the access denied page.',\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPSystemAccessDeniedContent: {\r\n\t\tdefaultValue: '',\r\n\t\tdisplayPath: `${dpRoot}|Content`,\r\n\t\tdescription: 'Content displayed on the access denied page. Leave blank to just display the title and button.',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t\thtmlAllowed: true,\r\n\t\tshared: false,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPSystemAccessDeniedButton: {\r\n\t\tdefaultValue: 'Go Back',\r\n\t\tdisplayPath: `${dpRoot}|Button`,\r\n\t\tdescription: 'Text displayed in the go back button.',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(accessDeniedLocs);\r\nexport type AccessDeniedLocType = LocMap;\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'System|Pages|Not Found';\r\n\r\ntype SPNotFoundLocs = 'SPSystemNotFoundTitle' | 'SPSystemNotFoundContent' | 'SPSystemNotFoundButton';\r\n\r\ntype CPNotFoundLocs = 'CPSystemNotFoundTitle' | 'CPSystemNotFoundContent' | 'CPSystemNotFoundButton';\r\n\r\nexport const spNotFoundLocs: LocDefs = {\r\n\tSPSystemNotFoundTitle: {\r\n\t\tdefaultValue: 'Not Found',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdescription: 'Title for the not found page.',\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.Core,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.SponsorPortalString,\r\n\t},\r\n\tSPSystemNotFoundContent: {\r\n\t\tdefaultValue: '',\r\n\t\tdisplayPath: `${dpRoot}|Content`,\r\n\t\tdescription: 'Content displayed on the not found page. Leave blank to just display the title and button.',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.Core,\r\n\t\thtmlAllowed: true,\r\n\t\tshared: false,\r\n\t\ttype: LocType.SponsorPortalString,\r\n\t},\r\n\tSPSystemNotFoundButton: {\r\n\t\tdefaultValue: 'Go Back',\r\n\t\tdisplayPath: `${dpRoot}|Button`,\r\n\t\tdescription: 'Text displayed in the go back button.',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.Core,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.SponsorPortalString,\r\n\t},\r\n};\r\n\r\nexport const cpNotFoundLocs: LocDefs = {\r\n\tCPSystemNotFoundTitle: {\r\n\t\tdefaultValue: 'Not Found',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdescription: 'Title for the not found page.',\r\n\t\tdisplayType: 'Title',\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPSystemNotFoundContent: {\r\n\t\tdefaultValue: '',\r\n\t\tdisplayPath: `${dpRoot}|Content`,\r\n\t\tdescription: 'Content displayed on the not found page. Leave blank to just display the title and button.',\r\n\t\tdisplayType: 'Content',\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t\thtmlAllowed: true,\r\n\t\tshared: false,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n\tCPSystemNotFoundButton: {\r\n\t\tdefaultValue: 'Go Back',\r\n\t\tdisplayPath: `${dpRoot}|Button`,\r\n\t\tdescription: 'Text displayed in the go back button.',\r\n\t\tdisplayType: 'Button',\r\n\t\tfeature: HubFeature.CandidateAccess,\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t\ttype: LocType.CandidatePortalString,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys({ ...spNotFoundLocs, ...cpNotFoundLocs });\r\nexport type NotFoundLocType = LocMap;\r\n","import { HubFeature, LocType } from '@ats/api/cm';\r\nimport { LocDef, LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'System|Pages|Session Expired';\r\n\r\nexport type SpSessionExpiredLocs =\r\n\t| 'SPSystemSessionExpiredTitle'\r\n\t| 'SPSystemSessionExpiredContent'\r\n\t| 'SPSystemSessionExpiredButton';\r\nexport type CpSessionExpiredLocs =\r\n\t| 'CPSystemSessionExpiredTitle'\r\n\t| 'CPSystemSessionExpiredContent'\r\n\t| 'CPSystemSessionExpiredButton';\r\n\r\nconst sharedData: {\r\n\ttitle: Omit;\r\n\tcontent: Omit;\r\n\tbutton: Omit;\r\n} = {\r\n\ttitle: {\r\n\t\tdefaultValue: 'Session Expired',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdescription: 'Title for the session expired page.',\r\n\t\tdisplayType: 'Title',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t},\r\n\tcontent: {\r\n\t\tdefaultValue: 'Your session has expired.',\r\n\t\tdisplayPath: `${dpRoot}|Content`,\r\n\t\tdescription: 'Content displayed on the session expired page. Leave blank to just display the title and button.',\r\n\t\tdisplayType: 'Content',\r\n\t\thtmlAllowed: true,\r\n\t\tshared: false,\r\n\t},\r\n\tbutton: {\r\n\t\tdefaultValue: 'Log In Again',\r\n\t\tdisplayPath: `${dpRoot}|Button`,\r\n\t\tdescription: 'Text displayed in the go back button.',\r\n\t\tdisplayType: 'Button',\r\n\t\thtmlAllowed: false,\r\n\t\tshared: false,\r\n\t},\r\n};\r\n\r\nconst sharedSpData: Pick = {\r\n\tfeature: HubFeature.Core,\r\n\ttype: LocType.SponsorPortalString,\r\n};\r\n\r\nconst sharedCpData: Pick = {\r\n\tfeature: HubFeature.CandidateAccess,\r\n\ttype: LocType.CandidatePortalString,\r\n};\r\n\r\nexport const spSessionExpiredLocs: LocDefs = {\r\n\tSPSystemSessionExpiredTitle: {\r\n\t\t...sharedSpData,\r\n\t\t...sharedData.title,\r\n\t},\r\n\tSPSystemSessionExpiredContent: {\r\n\t\t...sharedSpData,\r\n\t\t...sharedData.content,\r\n\t},\r\n\tSPSystemSessionExpiredButton: {\r\n\t\t...sharedSpData,\r\n\t\t...sharedData.button,\r\n\t},\r\n};\r\n\r\nexport const cpSessionExpiredLocs: LocDefs = {\r\n\tCPSystemSessionExpiredTitle: {\r\n\t\t...sharedCpData,\r\n\t\t...sharedData.title,\r\n\t},\r\n\tCPSystemSessionExpiredContent: {\r\n\t\t...sharedCpData,\r\n\t\t...sharedData.content,\r\n\t},\r\n\tCPSystemSessionExpiredButton: {\r\n\t\t...sharedCpData,\r\n\t\t...sharedData.button,\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys({\r\n\t...spSessionExpiredLocs,\r\n\t...cpSessionExpiredLocs,\r\n});\r\nexport type SessionExpiredLocType = LocMap;\r\n","import { accessDeniedLocs } from './components/access-denied/access-denied.locs';\r\nimport { cpNotFoundLocs, spNotFoundLocs } from './components/not-found/not-found.locs';\r\nimport { cpSessionExpiredLocs, spSessionExpiredLocs } from './components/session-expired/session-expired.locs';\r\n\r\nexport const cpSharedPageLocs = {\r\n\t...accessDeniedLocs,\r\n\t...cpNotFoundLocs,\r\n\t...cpSessionExpiredLocs,\r\n};\r\nexport const spSharedPageLocs = {\r\n\t...accessDeniedLocs,\r\n\t...spNotFoundLocs,\r\n\t...spSessionExpiredLocs,\r\n};\r\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, ChangeDetectorRef, ElementRef, EventEmitter, booleanAttribute, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ContentChildren, Input, Output, Directive, forwardRef, ViewContainerRef, NgZone, Injector, afterNextRender, NgModule } from '@angular/core';\nimport { MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nexport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { _IdGenerator, ActiveDescendantKeyManager, removeAriaReferencedId, addAriaReferencedId } from '@angular/cdk/a11y';\nimport { Platform, _getEventTarget } from '@angular/cdk/platform';\nimport { trigger, state, style, transition, group, animate } from '@angular/animations';\nimport { Subscription, Subject, merge, of, defer, fromEvent, Observable } from 'rxjs';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { hasModifierKey, ESCAPE, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { filter, map, startWith, switchMap, tap, delay, take } from 'rxjs/operators';\n\n// Animation values come from\n// TODO(mmalerba): Ideally find a way to import the values from MDC's code.\nconst panelAnimation = trigger('panelAnimation', [\n state('void, hidden', style({\n opacity: 0,\n transform: 'scaleY(0.8)',\n })),\n transition(':enter, hidden => visible', [\n group([\n animate('0.03s linear', style({ opacity: 1 })),\n animate('0.12s cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'scaleY(1)' })),\n ]),\n ]),\n transition(':leave, visible => hidden', [animate('0.075s linear', style({ opacity: 0 }))]),\n]);\n\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n source;\n option;\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n source, \n /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return {\n autoActiveFirstOption: false,\n autoSelectActiveOption: false,\n hideSingleSelectionIndicator: false,\n requireSelection: false,\n };\n}\n/** Autocomplete component. */\nclass MatAutocomplete {\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS);\n _activeOptionChanges = Subscription.EMPTY;\n /** Emits when the panel animation is done. Null if the panel doesn't animate. */\n _animationDone = new EventEmitter();\n /** Manages active item in option list based on key events. */\n _keyManager;\n /** Whether the autocomplete panel should be visible, depending on option length. */\n showPanel = false;\n /** Whether the autocomplete panel is open. */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n _isOpen = false;\n /** Latest trigger that opened the autocomplete. */\n _latestOpeningTrigger;\n /** @docs-private Sets the theme color of the panel. */\n _setColor(value) {\n this._color = value;\n this._changeDetectorRef.markForCheck();\n }\n /** @docs-private theme color of the panel */\n _color;\n // The @ViewChild query for TemplateRef here needs to be static because some code paths\n // lead to the overlay being created before change detection has finished for this component.\n // Notably, another component may trigger `focus` on the autocomplete-trigger.\n /** @docs-private */\n template;\n /** Element for the panel containing the autocomplete options. */\n panel;\n /** Reference to all options within the autocomplete. */\n options;\n /** Reference to all option groups within the autocomplete. */\n optionGroups;\n /** Aria label of the autocomplete. */\n ariaLabel;\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n ariaLabelledby;\n /** Function that maps an option's control value to its display value in the trigger. */\n displayWith = null;\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n autoActiveFirstOption;\n /** Whether the active option should be selected as the user is navigating. */\n autoSelectActiveOption;\n /**\n * Whether the user is required to make a selection when they're interacting with the\n * autocomplete. If the user moves away from the autocomplete without selecting an option from\n * the list, the value will be reset. If the user opens the panel and closes it without\n * interacting or selecting a value, the initial value will be kept.\n */\n requireSelection;\n /**\n * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will\n * match the width of its host.\n */\n panelWidth;\n /** Whether ripples are disabled within the autocomplete panel. */\n disableRipple;\n /** Event that is emitted whenever an option from the list is selected. */\n optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n closed = new EventEmitter();\n /** Emits whenever an option is activated. */\n optionActivated = new EventEmitter();\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n this._classList = value;\n this._elementRef.nativeElement.className = '';\n }\n _classList;\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = value;\n this._syncParentProperties();\n }\n _hideSingleSelectionIndicator;\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n id = inject(_IdGenerator).getId('mat-autocomplete-');\n /**\n * Tells any descendant `mat-optgroup` to use the inert a11y pattern.\n * @docs-private\n */\n inertGroups;\n constructor() {\n const platform = inject(Platform);\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = platform?.SAFARI || false;\n this.autoActiveFirstOption = !!this._defaults.autoActiveFirstOption;\n this.autoSelectActiveOption = !!this._defaults.autoSelectActiveOption;\n this.requireSelection = !!this._defaults.requireSelection;\n this._hideSingleSelectionIndicator = this._defaults.hideSingleSelectionIndicator ?? false;\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options)\n .withWrap()\n .skipPredicate(this._skipPredicate);\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n }\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._activeOptionChanges.unsubscribe();\n this._animationDone.complete();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n _skipPredicate() {\n return false;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"19.0.0\", type: MatAutocomplete, isStandalone: true, selector: \"mat-autocomplete\", inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], displayWith: \"displayWith\", autoActiveFirstOption: [\"autoActiveFirstOption\", \"autoActiveFirstOption\", booleanAttribute], autoSelectActiveOption: [\"autoSelectActiveOption\", \"autoSelectActiveOption\", booleanAttribute], requireSelection: [\"requireSelection\", \"requireSelection\", booleanAttribute], panelWidth: \"panelWidth\", disableRipple: [\"disableRipple\", \"disableRipple\", booleanAttribute], classList: [\"class\", \"classList\"], hideSingleSelectionIndicator: [\"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute] }, outputs: { optionSelected: \"optionSelected\", opened: \"opened\", closed: \"closed\", optionActivated: \"optionActivated\" }, host: { classAttribute: \"mat-mdc-autocomplete\" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: \"options\", predicate: MatOption, descendants: true }, { propertyName: \"optionGroups\", predicate: MAT_OPTGROUP, descendants: true }], viewQueries: [{ propertyName: \"template\", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], exportAs: [\"matAutocomplete\"], ngImport: i0, template: \"\\n \\n \\n \\n\\n\", styles: [\"div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}\"], animations: [panelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocomplete, decorators: [{\n type: Component,\n args: [{ selector: 'mat-autocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'matAutocomplete', host: {\n 'class': 'mat-mdc-autocomplete',\n }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], animations: [panelAnimation], template: \"\\n \\n \\n \\n\\n\", styles: [\"div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}\"] }]\n }], ctorParameters: () => [], propDecorators: { template: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }], optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], displayWith: [{\n type: Input\n }], autoActiveFirstOption: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], autoSelectActiveOption: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], requireSelection: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], panelWidth: [{\n type: Input\n }], disableRipple: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], optionSelected: [{\n type: Output\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], optionActivated: [{\n type: Output\n }], classList: [{\n type: Input,\n args: ['class']\n }], hideSingleSelectionIndicator: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin {\n elementRef = inject(ElementRef);\n constructor() { }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteOrigin, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: MatAutocompleteOrigin, isStandalone: true, selector: \"[matAutocompleteOrigin]\", exportAs: [\"matAutocompleteOrigin\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true,\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n },\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass MatAutocompleteTrigger {\n _element = inject(ElementRef);\n _overlay = inject(Overlay);\n _viewContainerRef = inject(ViewContainerRef);\n _zone = inject(NgZone);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _dir = inject(Directionality, { optional: true });\n _formField = inject(MAT_FORM_FIELD, { optional: true, host: true });\n _document = inject(DOCUMENT);\n _viewportRuler = inject(ViewportRuler);\n _defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, { optional: true });\n _overlayRef;\n _portal;\n _componentDestroyed = false;\n _scrollStrategy = inject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY);\n _keydownSubscription;\n _outsideClickSubscription;\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n _previousValue;\n /** Value of the input element when the panel was attached (even if there are no options). */\n _valueOnAttach;\n /** Value on the previous keydown event. */\n _valueOnLastKeydown;\n /** Strategy that is used to position the panel. */\n _positionStrategy;\n /** Whether or not the label state is being overridden. */\n _manuallyFloatingLabel = false;\n /** The subscription for closing actions (some are bound to document). */\n _closingActionsSubscription;\n /** Subscription to viewport size changes. */\n _viewportSubscription = Subscription.EMPTY;\n /** Implements BreakpointObserver to be used to detect handset landscape */\n _breakpointObserver = inject(BreakpointObserver);\n _handsetLandscapeSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n _canOpenOnNextFocus = true;\n /** Value inside the input before we auto-selected an option. */\n _valueBeforeAutoSelection;\n /**\n * Current option that we have auto-selected as the user is navigating,\n * but which hasn't been propagated to the model value yet.\n */\n _pendingAutoselectedOption;\n /** Stream of keyboard events that can close the panel. */\n _closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n _windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n _onChange = () => { };\n /** `View -> model callback called when autocomplete has been touched` */\n _onTouched = () => { };\n /** The autocomplete panel to be attached to this trigger. */\n autocomplete;\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n position = 'auto';\n /**\n * Reference relative to which to position the autocomplete panel.\n * Defaults to the autocomplete trigger element.\n */\n connectedTo;\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n autocompleteAttribute = 'off';\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n autocompleteDisabled;\n _initialized = new Subject();\n _injector = inject(Injector);\n constructor() { }\n /** Class to apply to the panel when it's above the input. */\n _aboveClass = 'mat-mdc-autocomplete-panel-above';\n ngAfterViewInit() {\n this._initialized.next();\n this._initialized.complete();\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._handsetLandscapeSubscription.unsubscribe();\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n this._clearFromModal();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n _overlayAttached = false;\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._openPanelInternal();\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // `afterNextRender` always runs outside of the Angular zone, so all the subscriptions from\n // `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n // Only reset if this trigger is the latest one that opened the\n // autocomplete since another may have taken it over.\n if (this.autocomplete._latestOpeningTrigger === this) {\n this.autocomplete._isOpen = false;\n this.autocomplete._latestOpeningTrigger = null;\n }\n this._overlayAttached = false;\n this._pendingAutoselectedOption = null;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._updatePanelState();\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n // Remove aria-owns attribute when the autocomplete is no longer visible.\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', this.autocomplete.id);\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef\n ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached))\n : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof MatOptionSelectionChange ? event : null)));\n }\n /** Stream of changes to the selection state of the autocomplete options. */\n optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._initialized.pipe(switchMap(() => this.optionSelections));\n });\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend')).pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField\n ? this._formField.getConnectedOverlayOrigin().nativeElement\n : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return (this._overlayAttached &&\n clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._assignOptionValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n this._valueOnLastKeydown = this._element.nativeElement.value;\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey && this._canOpen()) {\n this._openPanelInternal(this._valueOnLastKeydown);\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\n if (!this._pendingAutoselectedOption) {\n this._valueBeforeAutoSelection = this._valueOnLastKeydown;\n }\n this._pendingAutoselectedOption = this.activeOption;\n this._assignOptionValue(this.activeOption.value);\n }\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._pendingAutoselectedOption = null;\n // If selection is required we don't write to the CVA while the user is typing.\n // At the end of the selection either the user will have picked something\n // or we'll reset the value back to null.\n if (!this.autocomplete || !this.autocomplete.requireSelection) {\n this._onChange(value);\n }\n if (!value) {\n this._clearPreviousSelectedOption(null, false);\n }\n else if (this.panelOpen && !this.autocomplete.requireSelection) {\n // Note that we don't reset this when `requireSelection` is enabled,\n // because the option will be reset when the panel is closed.\n const selectedOption = this.autocomplete.options?.find(option => option.selected);\n if (selectedOption) {\n const display = this._getDisplayValue(selectedOption.value);\n if (value !== display) {\n selectedOption.deselect(false);\n }\n }\n }\n if (this._canOpen() && this._document.activeElement === event.target) {\n // When the `input` event fires, the input's value will have already changed. This means\n // that if we take the `this._element.nativeElement.value` directly, it'll be one keystroke\n // behind. This can be a problem when the user selects a value, changes a character while\n // the input still has focus and then clicks away (see #28432). To work around it, we\n // capture the value in `keydown` so we can use it here.\n const valueOnAttach = this._valueOnLastKeydown ?? this._element.nativeElement.value;\n this._valueOnLastKeydown = null;\n this._openPanelInternal(valueOnAttach);\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n }\n else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay(this._previousValue);\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this._openPanelInternal();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n }\n else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n if (this._formField) {\n this._formField.floatLabel = 'auto';\n }\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const initialRender = new Observable(subscriber => {\n afterNextRender(() => {\n subscriber.next();\n }, { injector: this._injector });\n });\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()), \n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the options are initially rendered, and when the option list changes...\n return (merge(initialRender, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => this._zone.run(() => {\n // `afterNextRender` always runs outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this._updatePanelState();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n if (wasOpen !== this.panelOpen) {\n // If the `panelOpen` state changed, we need to make sure to emit the `opened` or\n // `closed` event, because we may not have emitted it. This can happen\n // - if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing,\n // - if the panel is closed after the user entered a string that did not match any\n // of the available options,\n // - if a valid string is entered after an invalid one.\n if (this.panelOpen) {\n this._emitOpened();\n }\n else {\n this.autocomplete.closed.emit();\n }\n }\n return this.panelClosingActions;\n })), \n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event)));\n }\n /**\n * Emits the opened event once it's known that the panel will be shown and stores\n * the state of the trigger right before the opening sequence was finished.\n */\n _emitOpened() {\n this.autocomplete.opened.emit();\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n /** Given a value, returns the string that should be shown within the input. */\n _getDisplayValue(value) {\n const autocomplete = this.autocomplete;\n return autocomplete && autocomplete.displayWith ? autocomplete.displayWith(value) : value;\n }\n _assignOptionValue(value) {\n const toDisplay = this._getDisplayValue(value);\n if (value == null) {\n this._clearPreviousSelectedOption(null, false);\n }\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\n }\n _updateNativeInputValue(value) {\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = value;\n }\n else {\n this._element.nativeElement.value = value;\n }\n this._previousValue = value;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const panel = this.autocomplete;\n const toSelect = event ? event.source : this._pendingAutoselectedOption;\n if (toSelect) {\n this._clearPreviousSelectedOption(toSelect);\n this._assignOptionValue(toSelect.value);\n // TODO(crisbeto): this should wait until the animation is done, otherwise the value\n // gets reset while the panel is still animating which looks glitchy. It'll likely break\n // some tests to change it at this point.\n this._onChange(toSelect.value);\n panel._emitSelectEvent(toSelect);\n this._element.nativeElement.focus();\n }\n else if (panel.requireSelection &&\n this._element.nativeElement.value !== this._valueOnAttach) {\n this._clearPreviousSelectedOption(null);\n this._assignOptionValue(null);\n // Wait for the animation to finish before clearing the form control value, otherwise\n // the options might change while the animation is running which looks glitchy.\n if (panel._animationDone) {\n panel._animationDone.pipe(take(1)).subscribe(() => this._onChange(null));\n }\n else {\n this._onChange(null);\n }\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip, emitEvent) {\n // Null checks are necessary here, because the autocomplete\n // or its options may not have been assigned yet.\n this.autocomplete?.options?.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect(emitEvent);\n }\n });\n }\n _openPanelInternal(valueOnAttach = this._element.nativeElement.value) {\n this._attachOverlay(valueOnAttach);\n this._floatLabel();\n // Add aria-owns attribute when the autocomplete becomes visible.\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n addAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n }\n _attachOverlay(valueOnAttach) {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: this._formField?.getLabelId(),\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n });\n // Subscribe to the breakpoint events stream to detect when screen is in\n // handsetLandscape.\n this._handsetLandscapeSubscription = this._breakpointObserver\n .observe(Breakpoints.HandsetLandscape)\n .subscribe(result => {\n const isHandsetLandscape = result.matches;\n // Check if result.matches Breakpoints.HandsetLandscape. Apply HandsetLandscape\n // settings to prevent overlay cutoff in that breakpoint. Fixes b/284148377\n if (isHandsetLandscape) {\n this._positionStrategy\n .withFlexibleDimensions(true)\n .withGrowAfterOpen(true)\n .withViewportMargin(8);\n }\n else {\n this._positionStrategy\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withViewportMargin(0);\n }\n });\n }\n else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._valueOnAttach = valueOnAttach;\n this._valueOnLastKeydown = null;\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._isOpen = this._overlayAttached = true;\n this.autocomplete._latestOpeningTrigger = this;\n this.autocomplete._setColor(this._formField?.color);\n this._updatePanelState();\n this._applyModalPanelOwnership();\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this._emitOpened();\n }\n }\n /** Handles keyboard events coming from the overlay panel. */\n _handlePanelKeydown = (event) => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n // If the user had typed something in before we autoselected an option, and they decided\n // to cancel the selection, restore the input value to the one they had typed in.\n if (this._pendingAutoselectedOption) {\n this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\n this._pendingAutoselectedOption = null;\n }\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n };\n /** Updates the panel's visibility state and any trigger state tied to id. */\n _updatePanelState() {\n this.autocomplete._setVisibility();\n // Note that here we subscribe and unsubscribe based on the panel's visiblity state,\n // because the act of subscribing will prevent events from reaching other overlays and\n // we don't want to block the events if there are no options.\n if (this.panelOpen) {\n const overlayRef = this._overlayRef;\n if (!this._keydownSubscription) {\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n this._keydownSubscription = overlayRef.keydownEvents().subscribe(this._handlePanelKeydown);\n }\n if (!this._outsideClickSubscription) {\n // Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.\n // TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,\n // but the behvior isn't exactly the same and it ends up breaking some internal tests.\n this._outsideClickSubscription = overlayRef.outsidePointerEvents().subscribe();\n }\n }\n else {\n this._keydownSubscription?.unsubscribe();\n this._outsideClickSubscription?.unsubscribe();\n this._keydownSubscription = this._outsideClickSubscription = null;\n }\n }\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir ?? undefined,\n panelClass: this._defaults?.overlayPanelClass,\n });\n }\n _getOverlayPosition() {\n // Set default Overlay Position\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n ];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass },\n ];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n }\n else if (this.position === 'below') {\n positions = belowPositions;\n }\n else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Reset the active item to -1. This is so that pressing arrow keys will activate the correct\n * option.\n *\n * If the consumer opted-in to automatically activatating the first option, activate the first\n * *enabled* option.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < autocomplete.options.length; index++) {\n const option = autocomplete.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n autocomplete._keyManager.setActiveItem(firstEnabledOptionIndex);\n }\n else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this.autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document?.defaultView || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n }\n else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n _trackedModal = null;\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = this.autocomplete.id;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the references to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: MatAutocompleteTrigger, isStandalone: true, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", inputs: { autocomplete: [\"matAutocomplete\", \"autocomplete\"], position: [\"matAutocompletePosition\", \"position\"], connectedTo: [\"matAutocompleteConnectedTo\", \"connectedTo\"], autocompleteAttribute: [\"autocomplete\", \"autocompleteAttribute\"], autocompleteDisabled: [\"matAutocompleteDisabled\", \"autocompleteDisabled\", booleanAttribute] }, host: { listeners: { \"focusin\": \"_handleFocus()\", \"blur\": \"_onTouched()\", \"input\": \"_handleInput($event)\", \"keydown\": \"_handleKeydown($event)\", \"click\": \"_handleClick()\" }, properties: { \"attr.autocomplete\": \"autocompleteAttribute\", \"attr.role\": \"autocompleteDisabled ? null : \\\"combobox\\\"\", \"attr.aria-autocomplete\": \"autocompleteDisabled ? null : \\\"list\\\"\", \"attr.aria-activedescendant\": \"(panelOpen && activeOption) ? activeOption.id : null\", \"attr.aria-expanded\": \"autocompleteDisabled ? null : panelOpen.toString()\", \"attr.aria-controls\": \"(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id\", \"attr.aria-haspopup\": \"autocompleteDisabled ? null : \\\"listbox\\\"\" }, classAttribute: \"mat-mdc-autocomplete-trigger\" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: [\"matAutocompleteTrigger\"], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-mdc-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-controls]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick()',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],\n }]\n }], ctorParameters: () => [], propDecorators: { autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }], position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }], connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }], autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }], autocompleteDisabled: [{\n type: Input,\n args: [{ alias: 'matAutocompleteDisabled', transform: booleanAttribute }]\n }] } });\n\nclass MatAutocompleteModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteModule, imports: [OverlayModule,\n MatOptionModule,\n MatCommonModule,\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin], exports: [CdkScrollableModule,\n MatAutocomplete,\n MatOptionModule,\n MatCommonModule,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [OverlayModule,\n MatOptionModule,\n MatCommonModule, CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n ],\n exports: [\n CdkScrollableModule,\n MatAutocomplete,\n MatOptionModule,\n MatCommonModule,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n ],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, getMatAutocompleteMissingPanelError };\n","\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ option.display }}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport {\n\tControlContainer,\n\tControlValueAccessor,\n\tFormGroupDirective,\n\tFormsModule,\n\tNG_VALUE_ACCESSOR,\n\tReactiveFormsModule,\n\tUntypedFormControl,\n\tUntypedFormGroup,\n} from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PortalCoreFeature } from '@ats/cm/core';\nimport { AtsIconsModule } from '@ats/icons';\nimport { LocalizationService } from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { CmMiniButtonDirective } from '@cm/shared/ui/button';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { CMOption } from '../../models';\n\n// https://stackoverflow.com/questions/45659742/angular4-no-value-accessor-for-form-control/45659791\n\ntype ComparitorCallback = (option: CMOption, value: any) => any;\n\n@UntilDestroy()\n@Component({\n\tselector: 'cm-autocomplete',\n\timports: [\n\t\tCommonModule,\n\t\tCmMiniButtonDirective,\n\t\tMatAutocompleteModule,\n\t\tMatFormFieldModule,\n\t\tMatInputModule,\n\t\tMatTooltipModule,\n\t\tMatButtonModule,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tAtsIconsModule,\n\t],\n\ttemplateUrl: './autocomplete.component.html',\n\tstyleUrls: ['./autocomplete.component.scss'],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => CmAutocompleteComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class CmAutocompleteComponent implements ControlValueAccessor, OnInit {\n\t@Input() options$!: Observable;\n\t@Input() formControlName!: string;\n\t@Input() _value: CMOption | null = null;\n\t@Input() valueComparitor: ComparitorCallback | null = null;\n\t@Input() matchRequired = true;\n\t@Input() appearance: MatFormFieldAppearance = 'fill';\n\t@Input() maxlength: string | null = null;\n\t@Input() hideLabel: boolean = false;\n\n\tfilteredOptions$!: Observable;\n\tclearLoc$!: Observable;\n\toptionsSnapshot: CMOption[] = [];\n\tformGroup!: UntypedFormGroup;\n\tonChange = (_: any) => {};\n\tonTouched = () => {\n\t\tthis.control.markAsTouched();\n\t};\n\treadonly locFeature: PortalCoreFeature;\n\n\tget value(): CMOption | null {\n\t\treturn this._value;\n\t}\n\n\tset value(val: CMOption | null) {\n\t\tif (!!val) {\n\t\t\tthis._value = val.value;\n\t\t\tthis.onChange(val.value);\n\t\t\tthis.onTouched();\n\t\t}\n\t}\n\n\tget control(): UntypedFormControl {\n\t\treturn this.formGroup.get(this.formControlName) as UntypedFormControl;\n\t}\n\n\tget required(): boolean {\n\t\tif (!this.formGroup || !this.control) {\n\t\t\treturn false;\n\t\t}\n\t\tconst { validator } = this.control;\n\t\tif (validator) {\n\t\t\tconst validation = validator(new UntypedFormControl());\n\t\t\treturn validation !== null && validation['required'] === true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tget disabled(): boolean {\n\t\tif (!this.formGroup || !this.control) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.control.disabled;\n\t}\n\n\tconstructor(\n\t\tprivate readonly parentForm: FormGroupDirective,\n\t\tprivate readonly controlContainer: ControlContainer,\n\t\tprivate readonly settings: SettingsService,\n\t\tprivate readonly locService: LocalizationService\n\t) {\n\t\tthis.locFeature = this.settings.coreFeature;\n\t\tthis.clearLoc$ = this.locService\n\t\t\t.find$(`${this.locFeature}/System.Title.Clear`)\n\t\t\t.pipe(map(loc => loc?.value || ''));\n\t}\n\n\tngOnInit(): void {\n\t\tthis.formGroup = this.controlContainer.control as UntypedFormGroup;\n\n\t\tthis.options$\n\t\t\t.pipe(\n\t\t\t\tfilter(options => !!options),\n\t\t\t\tuntilDestroyed(this)\n\t\t\t)\n\t\t\t.subscribe(options => (this.optionsSnapshot = options));\n\n\t\tthis.filteredOptions$ = this.options$.pipe(\n\t\t\tfilter(options => !!options),\n\t\t\tswitchMap(options =>\n\t\t\t\t((this.formGroup.get(this.formControlName) || {}).valueChanges || of(null)).pipe(\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\tstartWith(null),\n\t\t\t\t\tmap(value => {\n\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst foundValue = this.displayFn(value);\n\t\t\t\t\t\treturn !foundValue ? value.toString() : foundValue;\n\t\t\t\t\t}),\n\t\t\t\t\ttap(option => {\n\t\t\t\t\t\tif (option && this.matchRequired) {\n\t\t\t\t\t\t\tconst matchedOptions = options.filter(opt => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t(opt.display.toString() || '').toLowerCase() ===\n\t\t\t\t\t\t\t\t\toption.toString().toLowerCase()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (matchedOptions.length === 0) {\n\t\t\t\t\t\t\t\tthis.control.setErrors({ noMatch: true });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tmap(name => {\n\t\t\t\t\t\treturn name ? this.filterOptions(name, options) : options.slice();\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\n\t\tconst valueChanges$ = this.control.valueChanges.pipe(distinctUntilChanged());\n\n\t\tcombineLatest([valueChanges$, this.options$])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroyed(this),\n\t\t\t\tfilter(([value]) => !!value)\n\t\t\t)\n\t\t\t.subscribe(([value, options]) => {\n\t\t\t\tif (\n\t\t\t\t\t!options\n\t\t\t\t\t\t.map(opt => (opt.value || '').toString().toLowerCase())\n\t\t\t\t\t\t.includes(value?.toString()?.toLowerCase())\n\t\t\t\t) {\n\t\t\t\t\tconst option = options.find(\n\t\t\t\t\t\topt =>\n\t\t\t\t\t\t\t(opt.display || '').toLowerCase() === value?.toString()?.toLowerCase()\n\t\t\t\t\t);\n\t\t\t\t\tif (option) {\n\t\t\t\t\t\tthis.control.setValue(option);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tclearValue(e: Event, trigger: MatAutocompleteTrigger, inp: HTMLInputElement): void {\n\t\te.stopPropagation();\n\t\tthis.control.setValue(null);\n\t\tthis.control.markAsDirty();\n\t\ttrigger.openPanel();\n\t\tinp.focus();\n\t}\n\n\tdisplayFn = (value: any): string => {\n\t\tif (!value || !this.optionsSnapshot) {\n\t\t\treturn '';\n\t\t}\n\t\tif (typeof value !== 'string' && value.display) {\n\t\t\tvalue = value.display;\n\t\t}\n\t\tconst option = !!this.valueComparitor\n\t\t\t? this.optionsSnapshot.find(opt =>\n\t\t\t\t\t!!this.valueComparitor ? this.valueComparitor(opt, value) : null\n\t\t\t )\n\t\t\t: this.optionsSnapshot.find(opt => opt.value === value);\n\t\treturn option && option.display ? option.display : value;\n\t};\n\n\twriteValue(value: any): void {\n\t\tif (value !== undefined) {\n\t\t\tthis.value = value;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\thandleSubmit(): void {\n\t\tthis.parentForm.ngSubmit.emit();\n\t}\n\n\tprivate filterOptions(name: string, options: CMOption[]): CMOption[] {\n\t\tconst filteredOptions = options.filter(opt =>\n\t\t\t(opt.display.toString() || '').toLowerCase().includes(name.toString().toLowerCase())\n\t\t);\n\t\treturn filteredOptions;\n\t}\n}\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\r\n\tstandalone: true,\r\n\tselector: 'button[cm-mini-button], a[cm-mini-button]',\r\n})\r\nexport class CmMiniButtonDirective {\r\n\t@HostBinding('class.cm-mini-button')\r\n\telementClass = true;\r\n\r\n\tconstructor() {}\r\n}\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n\tselector: 'input[cmTrimWhitespace]',\n\tstandalone: true,\n})\nexport class CmTrimWhitespaceDirective {\n\t@HostListener('blur') onBlur(): void {\n\t\tthis.trimAndPatchValue();\n\t}\n\n\t@HostListener('keyup.enter') onEnter(): void {\n\t\tif (this.ngControl.control) {\n\t\t\tthis.trimAndPatchValue();\n\t\t}\n\t}\n\n\tconstructor(private ngControl: NgControl, private el: ElementRef) {}\n\n\tprivate trimAndPatchValue(): void {\n\t\tif (this.ngControl.control) {\n\t\t\tconst trimmed = this.el.nativeElement.value.trim();\n\t\t\tthis.ngControl.control.patchValue(trimmed);\n\t\t}\n\t}\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { AtsCsv } from '@ats/utility';\nimport { UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Directive({\n\tstandalone: true,\n\tselector: 'button[cm-csv-export], a[cm-csv-export]',\n})\nexport class CmCsvExportDirective {\n\t@Input({ required: true }) headers!: string[];\n\t@Input({ required: true }) data!: any[];\n\t@Input() fileName: string = 'CSV-Export.csv';\n\n\t@HostListener('click', ['$event.target'])\n\tonClick(_: any) {\n\t\tAtsCsv.download(AtsCsv.createBlob(this.data, this.headers), this.fileName);\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n\tname: 'safeHtml',\r\n\tstandalone: true,\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\tconstructor(private readonly sanitizer: DomSanitizer) {}\r\n\r\n\ttransform(value: SafeHtml | string | null = ''): SafeHtml {\r\n\t\tif (typeof value === 'string' || value === null) {\r\n\t\t\treturn this.sanitizer.bypassSecurityTrustHtml((value ?? '').toString());\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HubFeature, PortalType } from '@ats/api/cm';\r\nimport { CmAuthService, CmFeatureService } from '@ats/cm/core';\r\nimport { SettingsService } from '@cm/core/settings';\r\nimport { Observable, combineLatest, filter, map, of, shareReplay, switchMap, take, withLatestFrom } from 'rxjs';\r\nimport { IngressType } from '../models/ingress';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class IngressService {\r\n\ttype$: Observable;\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly features: CmFeatureService,\r\n\t\tprivate readonly settings: SettingsService,\r\n\t\tprivate readonly auth: CmAuthService\r\n\t) {\r\n\t\tthis.type$ = this.features.public$.pipe(\r\n\t\t\tfilter(features => !!features),\r\n\t\t\tmap(features =>\r\n\t\t\t\tthis.settings.portal === PortalType.CandidatePortal\r\n\t\t\t\t\t? this.getCpIngressType(features)\r\n\t\t\t\t\t: this.getSpIngressType(features)\r\n\t\t\t),\r\n\t\t\tshareReplay(1)\r\n\t\t);\r\n\t}\r\n\r\n\trouteToLogin(): void {\r\n\t\tconst internalGuard$ = this.auth.guard$.pipe(map(guard => guard.reset().isInternal().all));\r\n\r\n\t\tconst internal$ = this.auth.token$.pipe(switchMap(token => (!token ? of(false) : internalGuard$)));\r\n\r\n\t\tcombineLatest([this.settings.client$, this.settings.cultureCode$, internal$])\r\n\t\t\t.pipe(withLatestFrom(this.type$), take(1))\r\n\t\t\t.subscribe(([[client, culture, isInternal], ingressType]) => {\r\n\t\t\t\tif (ingressType === 'login') {\r\n\t\t\t\t\tthis.router.navigate([client, culture, 'login']);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet redirectUri = `${this.settings.env.apiUrl}/${client}`;\r\n\t\t\t\t\tif (this.settings.portal === PortalType.SponsorPortal) {\r\n\t\t\t\t\t\tredirectUri += isInternal ? '/internal' : '/sponsor';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tredirectUri += `/sso/ingress/${ingressType}`;\r\n\t\t\t\t\tlocation.href = redirectUri;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate getCpIngressType(features: string[]): IngressType {\r\n\t\tif (features.includes(HubFeature.CandidateAccessIntegrationIngressOidc)) {\r\n\t\t\treturn 'oidc';\r\n\t\t} else if (features.includes(HubFeature.CandidateAccessIntegrationIngressJwt)) {\r\n\t\t\treturn 'jwt';\r\n\t\t} else if (features.includes(HubFeature.CandidateAccessIntegrationIngressWsTrust)) {\r\n\t\t\treturn 'wstrust';\r\n\t\t}\r\n\t\treturn 'login';\r\n\t}\r\n\r\n\tprivate getSpIngressType(features: string[]): IngressType {\r\n\t\tif (features.includes(HubFeature.UserAccessIntegrationOidc)) {\r\n\t\t\treturn 'oidc';\r\n\t\t} else if (features.includes(HubFeature.UserAccessIntegrationJwt)) {\r\n\t\t\treturn 'jwt';\r\n\t\t} else if (features.includes(HubFeature.UserAccessIntegrationWsTrust)) {\r\n\t\t\treturn 'wstrust';\r\n\t\t}\r\n\t\treturn 'login';\r\n\t}\r\n}\r\n","import { formatDate } from '@angular/common';\r\n\r\nexport const format = (value: any, format?: string, timezone?: string): string => {\r\n\tconst dateString = Date.parse(value);\r\n\tif (!dateString) {\r\n\t\treturn '';\r\n\t}\r\n\tformat = format ? format : 'yyyy-MM-dd';\r\n\treturn formatDate(dateString, format, 'en', timezone ? timezone : undefined);\r\n};\r\n","import { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\nimport { SharedLocType } from '../../shared.locs';\r\n\r\nconst dpRoot = 'System|Localization|Dialog';\r\n\r\nexport type LocalizationFormLocs = 'CMSystemLocalizationDialogEditSectionTitle';\r\n\r\nexport const localizationFormLocs: LocDefs = {\r\n\tCMSystemLocalizationDialogEditSectionTitle: {\r\n\t\tdefaultValue: 'Edit',\r\n\t\tdisplayPath: `${dpRoot}|Edit`,\r\n\t\tdescription: 'Title for the edit section of the HTML editor.',\r\n\t\tdisplayType: 'Title',\r\n\t},\r\n};\r\n\r\nexport const LOC_KEYS = MapLocKeys(localizationFormLocs);\r\nexport type FormLocType = LocMap & SharedLocType;\r\n","import { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'System|Localization|Dialog';\r\n\r\ntype InliningLocalizationLocs = 'CMSystemLocalizationDialogModificationWarning' | 'CMSystemLocalizationNoValueSet';\r\n\r\nexport const inliningLocalizationLocs: LocDefs = {\r\n\tCMSystemLocalizationDialogModificationWarning: {\r\n\t\tdefaultValue: 'Your localization code may have been modified for security reasons. Please verify the result.',\r\n\t\tdisplayPath: `${dpRoot}|Code Modified`,\r\n\t\tdescription:\r\n\t\t\t'Message shown when code has been changed in the localization modal, indicating that it may have been updated for security and the new defaultValue needs tested.',\r\n\t\tdisplayType: 'Notification',\r\n\t},\r\n\tCMSystemLocalizationNoValueSet: {\r\n\t\tdefaultValue: 'No Localization Set',\r\n\t\tdisplayPath: `System|Localization|No Value Set`,\r\n\t\tdescription: 'Message shown when a localization has no default or localized value.',\r\n\t\tdisplayType: 'Content',\r\n\t},\r\n};\r\n\r\nexport const GLOBAL_LOCALIZATION_KEYS = MapLocKeys(inliningLocalizationLocs);\r\nexport type InliningLocType = LocMap;\r\n","\n\t\n\t\t\n\t\t\t{{ locs.CMSystemLocalizationDialogEditSectionTitle | localize | async }}\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\t{{ locs.CMSystemLocalizationDialogDefaultValue | localize | async }}\n\t\t\n\t\t\n\t\t\t
\n\t\t
\n\t
\n\t\n\t\t\n\t\t\t{{ locs.CMSystemLocalizationDialogCurrentValue | localize | async }}\n\t\t\n\t\t\n\t\t\t
\n\t\t
\n\t
\n
\n","import { CommonModule } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInput,\n\tOutput,\n\tRenderer2,\n\tViewChild,\n\tforwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { AtsRegex } from '@ats/utility';\nimport { LOC_INJECTOR, LocalizationProvider } from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { TINYMCE } from '@cm/shared/ui/tinymce';\nimport { EditorModule, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';\nimport { LocalizePipe } from '../../pipes/localize.pipe';\nimport { sharedLocalizationLocs } from '../../shared.locs';\nimport { FormLocType, localizationFormLocs } from './html-localize-form.locs';\n\n@Component({\n selector: 'cm-html-localize-form',\n templateUrl: './html-localize-form.component.html',\n styleUrls: ['./html-localize-form.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlLocalizeFormComponent), multi: true },\n { provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' },\n LocalizationProvider({ ...localizationFormLocs, ...sharedLocalizationLocs }),\n ],\n imports: [CommonModule, MatTabsModule, FormsModule, EditorModule, LocalizePipe]\n})\nexport class HtmlLocalizeFormComponent implements ControlValueAccessor {\n\t@ViewChild('editor', { read: ElementRef }) editor!: ElementRef;\n\t@Input() defaultValue: string = '';\n\t@Output() codeEditorClose = new EventEmitter();\n\ttiny: typeof TINYMCE;\n\tprivate value: string = '';\n\tpublic get locValue(): string {\n\t\treturn this.value;\n\t}\n\tpublic set locValue(value: string) {\n\t\tif (value !== this.value) {\n\t\t\tthis.value = value;\n\t\t\tthis.onChange(value);\n\t\t}\n\t}\n\n\tconstructor(\n\t\t@Inject(LOC_INJECTOR) public readonly locs: FormLocType,\n\t\tprivate readonly renderer: Renderer2,\n\t\tprivate readonly settings: SettingsService\n\t) {\n\t\tthis.tiny = {\n\t\t\tAPI_KEY: TINYMCE.API_KEY,\n\t\t\tCONFIG: {\n\t\t\t\t...TINYMCE.CONFIG,\n\t\t\t\tauto_focus: 'tiny-input',\n\t\t\t\tsetup: this.getEditorWhitespaceScrubberConfig(),\n\t\t\t},\n\t\t};\n\t}\n\n\tonChange = (value: string) => {};\n\tonTouched = () => {};\n\n\twriteValue(value: string): void {\n\t\tthis.locValue = value;\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouched = fn;\n\t}\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tif (this.editor) {\n\t\t\tthis.renderer.setProperty(this.editor.nativeElement, 'disabled', isDisabled);\n\t\t}\n\t}\n\n\tprivate getEditorWhitespaceScrubberConfig = (): ((editor: any) => any) => {\n\t\treturn editor =>\n\t\t\teditor.on('ExecCommand', (e: any) => {\n\t\t\t\tif (e.command === 'mceCodeEditor') {\n\t\t\t\t\te.target.on('CloseWindow', (e2: any) => {\n\t\t\t\t\t\tconst data = e2.dialog.getData();\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\tthis.codeEditorClose.emit(\n\t\t\t\t\t\t\t\tdata.code &&\n\t\t\t\t\t\t\t\t\tthis.value &&\n\t\t\t\t\t\t\t\t\tdata.code.replace(AtsRegex.WHITESPACE, '').toLowerCase() !==\n\t\t\t\t\t\t\t\t\t\tthis.value.replace(AtsRegex.WHITESPACE, '').toLowerCase()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.codeEditorClose.emit(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.target.off('CloseWindow');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t};\n}\n","
\n\t
\n\t\t

\n\t\t\t{{ locs.CMSystemLocalizationDialogDialogTitle | localize | async }}:\n\t\t\t{{ loc.displayPath }}\n\t\t

\n\t\t\n\t\t\t\n\t\t\n\t
\n
\n\n
\n\t\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogSystemId | localize | async }}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ loc.name }}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogFeature | localize | async }}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ loc.feature }}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogDescription | localize | async }}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ loc.description }}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogShared | localize | async }}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ loc.shared | cmLocalizeBool | async }}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogAllowHTML | localize | async }}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ loc.htmlAllowed | cmLocalizeBool | async }}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogDefaultValue | localize | async }}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{{ loc.defaultValue }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogCurrentValue | localize | async }}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{{ currentValue$ | async }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogCurrentLanguage | localize | async }}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ culture.label }} ({{ culture.nativeLabel }})\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ locs.CMSystemLocalizationDialogNewValue | localize | async }}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t
\n
\n\n
\n\t\n\t\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CmCulture } from '@ats/cm/core';\nimport { AtsIconsModule } from '@ats/icons';\nimport { AtsNotificationService } from '@ats/notifications';\nimport {\n\tLOC_INJECTOR,\n\tLocalization,\n\tLocalizationProvider,\n\tLocalizationService,\n} from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { Observable, firstValueFrom, of, switchMap, tap } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { LocalizeBooleanPipe } from '../../pipes/localize-boolean.pipe';\nimport { LocalizePipe } from '../../pipes/localize.pipe';\nimport { sharedLocalizationLocs } from '../../shared.locs';\nimport { HtmlLocalizeFormComponent } from '../html-localize-form/html-localize-form.component';\nimport { DialogLocType, localizationModalLocs } from './localization-dialog.locs';\n\nexport interface LocalizationDialogData {\n\tloc: Localization;\n}\n\n@Component({\n selector: 'cm-localization-dialog',\n templateUrl: './localization-dialog.component.html',\n styleUrls: ['./localization-dialog.component.scss'],\n imports: [\n CommonModule,\n LocalizePipe,\n LocalizeBooleanPipe,\n MatDialogModule,\n MatButtonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatInputModule,\n HtmlLocalizeFormComponent,\n AtsIconsModule,\n ],\n providers: [LocalizationProvider({ ...localizationModalLocs, ...sharedLocalizationLocs })]\n})\nexport class LocalizationDialogComponent {\n\tcultures$!: Observable;\n\tcurrentValue$: Observable;\n\tloc: Localization;\n\tform!: FormGroup;\n\thasCodeChanges = false;\n\n\tget language(): AbstractControl | null {\n\t\treturn this.form.get('language') as AbstractControl;\n\t}\n\n\tget value(): AbstractControl | null {\n\t\treturn this.form.get('value') as AbstractControl;\n\t}\n\tconstructor(\n\t\t@Inject(LOC_INJECTOR) public readonly locs: DialogLocType,\n\t\t@Inject(MAT_DIALOG_DATA) private readonly data: LocalizationDialogData,\n\t\tprivate readonly dialogRef: MatDialogRef,\n\t\tprivate readonly fb: FormBuilder,\n\t\tprivate readonly localizationService: LocalizationService,\n\t\tprivate readonly notifications: AtsNotificationService,\n\t\tprivate readonly settings: SettingsService\n\t) {\n\t\tthis.loc = this.data.loc;\n\t\tthis.cultures$ = this.settings.supportedCultures$;\n\t\tthis.form = this.getForm();\n\n\t\tthis.currentValue$ = !this.language\n\t\t\t? of(this.loc?.value || '')\n\t\t\t: this.language.valueChanges.pipe(\n\t\t\t\t\tswitchMap(culture =>\n\t\t\t\t\t\tthis.localizationService.getByCulture$(\n\t\t\t\t\t\t\tthis.loc.name,\n\t\t\t\t\t\t\tculture,\n\t\t\t\t\t\t\tthis.loc.type\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\ttap(val => {\n\t\t\t\t\t\tif (this.value) {\n\t\t\t\t\t\t\tthis.value.setValue(val);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t );\n\t}\n\n\thandleCodeChanges(ev: boolean) {\n\t\tthis.hasCodeChanges = ev;\n\t}\n\n\tremove(): void {\n\t\tthis.localizationService\n\t\t\t.deleteClientLoc$({\n\t\t\t\tname: this.loc.name,\n\t\t\t\tportal: this.loc.portal,\n\t\t\t\tcultureName: this.language?.value || 'en',\n\t\t\t})\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(result => {\n\t\t\t\tif (result === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.dialogRef.close(false);\n\t\t\t});\n\t}\n\n\thandleSubmit(): void {\n\t\tthis.form.markAllAsTouched();\n\t\tif (!this.form.valid) {\n\t\t\tfirstValueFrom(\n\t\t\t\tthis.localizationService.findValue$('Core/System.Global.Notification.NoChanges')\n\t\t\t).then(message =>\n\t\t\t\tthis.notifications.popError({\n\t\t\t\t\tid: 'loc-update-error',\n\t\t\t\t\tmessage,\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.localizationService\n\t\t\t.createOrUpdateClientLoc$({\n\t\t\t\tname: this.loc.name,\n\t\t\t\tcultureName: this.language?.value,\n\t\t\t\tportal: this.loc.portal,\n\t\t\t\tvalue: this.value?.value,\n\t\t\t})\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.notifications.showSuccess(this.locs.CMSystemLocalizationDialogChangesSaved);\n\t\t\t\t// Doesn't matter if a loc is returned. In the table, CP locs aren't saved.\n\t\t\t\tthis.dialogRef.close(this.hasCodeChanges);\n\t\t\t});\n\t}\n\n\thandleCancel(): void {\n\t\tthis.dialogRef.close(false);\n\t}\n\n\tprivate getForm(): FormGroup {\n\t\treturn this.fb.group({\n\t\t\tlanguage: this.loc?.cultureInfoName || 'en',\n\t\t\tvalue: this.loc.value || '',\n\t\t});\n\t}\n}\n","import { HubFeature } from '@ats/api/cm';\r\nimport { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\nimport { SharedLocType } from '../../shared.locs';\r\n\r\nconst dpRoot = 'System|Localization|Dialog';\r\n\r\nexport type LocalizationDialogLocs =\r\n\t| 'CMSystemLocalizationDialogDelete'\r\n\t| 'CMSystemLocalizationDialogCancel'\r\n\t| 'CMSystemLocalizationDialogSave'\r\n\t| 'CMSystemLocalizationDialogAllowHTML'\r\n\t| 'CMSystemLocalizationDialogDescription'\r\n\t| 'CMSystemLocalizationDialogNewValue'\r\n\t| 'CMSystemLocalizationDialogShared'\r\n\t| 'CMSystemLocalizationDialogDialogTitle'\r\n\t| 'CMSystemLocalizationDialogCurrentLanguage'\r\n\t| 'CMSystemLocalizationDialogSystemId'\r\n\t| 'CMSystemLocalizationDialogFeature'\r\n\t| 'CMSystemLocalizationDialogChangesSaved';\r\n\r\nexport const localizationModalLocs: LocDefs = {\r\n\tCMSystemLocalizationDialogCancel: {\r\n\t\tdefaultValue: 'Cancel Changes',\r\n\t\tdisplayPath: `${dpRoot}|Cancel Changes`,\r\n\t\tdescription: 'Button to cancel the changes and close the localize modal.',\r\n\t\tdisplayType: 'Button',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogDelete: {\r\n\t\tdefaultValue: 'Delete',\r\n\t\tdisplayPath: `${dpRoot}|Delete Label`,\r\n\t\tdescription: 'Accessibility label for the delete localization button.',\r\n\t\tdisplayType: 'Button',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogSave: {\r\n\t\tdefaultValue: 'Save Changes',\r\n\t\tdisplayPath: `${dpRoot}|Save Changes`,\r\n\t\tdescription: 'Button to save the changes and close the localize modal.',\r\n\t\tdisplayType: 'Button',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogAllowHTML: {\r\n\t\tdefaultValue: 'Allows HTML',\r\n\t\tdisplayPath: `${dpRoot}|Allow HTML`,\r\n\t\tdescription: 'Label for the \"allows html\" section.',\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogDescription: {\r\n\t\tdefaultValue: 'Description',\r\n\t\tdisplayPath: `${dpRoot}|Description`,\r\n\t\tdescription: 'Label for the description. This is both on the string and HTML editor.',\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogNewValue: {\r\n\t\tdefaultValue: 'New Value',\r\n\t\tdisplayPath: `${dpRoot}|New Value`,\r\n\t\tdescription: 'Label for the new defaultValue.',\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogShared: {\r\n\t\tdefaultValue: 'Shared',\r\n\t\tdisplayPath: `${dpRoot}|Shared`,\r\n\t\tdescription: 'Label for the \"shared\" section.',\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogDialogTitle: {\r\n\t\tdefaultValue: 'Localizing',\r\n\t\tdisplayPath: `${dpRoot}|Title`,\r\n\t\tdescription: 'Title of the localize modal.',\r\n\t\tdisplayType: 'Title',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogCurrentLanguage: {\r\n\t\tdefaultValue: 'Current Language',\r\n\t\tdisplayPath: `${dpRoot}|Current Language`,\r\n\t\tdescription: 'The accessibility text for the language select.',\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogSystemId: {\r\n\t\tdefaultValue: 'System ID',\r\n\t\tdisplayPath: `${dpRoot}|System ID`,\r\n\t\tdescription: 'Identifier for the localization in the system.',\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogFeature: {\r\n\t\tdefaultValue: 'Feature',\r\n\t\tdisplayPath: `${dpRoot}|Feature`,\r\n\t\tdescription: 'Feature for the localization.',\r\n\t\tdisplayType: 'Label',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n\tCMSystemLocalizationDialogChangesSaved: {\r\n\t\tdefaultValue: 'Changes Saved',\r\n\t\tdisplayPath: `${dpRoot}|Changes Saved`,\r\n\t\tdescription: 'Content of the notification when localization changes are saved.',\r\n\t\tdisplayType: 'Notification',\r\n\t\tportal: 'All',\r\n\t\tfeature: HubFeature.Core,\r\n\t},\r\n};\r\n\r\nexport type DialogLocType = LocMap & SharedLocType;\r\nexport const LOC_KEYS = MapLocKeys(localizationModalLocs);\r\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { CmModalSettings } from '@ats/cm/ui';\nimport { AtsNotificationService } from '@ats/notifications';\nimport {\n\tLOC_INJECTOR,\n\tLocalization,\n\tLocalizationProvider,\n\tLocalizationService,\n} from '@cm/core/localization';\nimport { SafeHtmlPipe } from '@cm/shared/ui/utilities';\nimport { Observable, Subject, of, withLatestFrom } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, take } from 'rxjs/operators';\nimport { LocalizationDialogComponent } from '../localization-dialog/localization-dialog.component';\nimport { InliningLocType, inliningLocalizationLocs } from './inlining-localization.locs';\ntype CustomStyle = {\n\t[key: string]: string;\n};\n@Component({\n\tselector: 'cm-inlining-localization',\n\ttemplateUrl: './inlining-localization.component.html',\n\tstyleUrls: ['./inlining-localization.component.scss'],\n\timports: [CommonModule, MatDialogModule, SafeHtmlPipe],\n\tproviders: [LocalizationProvider(inliningLocalizationLocs)],\n})\nexport class InliningLocalizationComponent implements OnInit, OnChanges {\n\t@Input() loc?: Localization;\n\t@Input() customInliningStyle?: CustomStyle;\n\tprivate readonly displayValue = new Subject();\n\tdisplayValue$!: Observable;\n\tconstructor(\n\t\t@Inject(LOC_INJECTOR) public readonly locs: InliningLocType,\n\t\tprivate readonly dialog: MatDialog,\n\t\tprivate readonly locService: LocalizationService,\n\t\tprivate readonly notificationService: AtsNotificationService\n\t) {}\n\n\tngOnInit() {\n\t\tthis.displayValue$ = this.displayValue.asObservable().pipe(\n\t\t\tstartWith((this.loc || {}).value || ' '),\n\t\t\tdistinctUntilChanged(),\n\t\t\twithLatestFrom(this.locService.findValue$(this.locs.CMSystemLocalizationNoValueSet)),\n\t\t\tmap(([value, noValue]) => value || noValue)\n\t\t);\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['loc']) {\n\t\t\tthis.displayValue.next((changes['loc'].currentValue || {}).value || '');\n\t\t}\n\t}\n\n\tlocalize(e: Event): void {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (this.loc) {\n\t\t\tthis.dialog\n\t\t\t\t.open(LocalizationDialogComponent, {\n\t\t\t\t\t...CmModalSettings.Medium,\n\t\t\t\t\tautoFocus: '.loc-dialog-first',\n\t\t\t\t\tdata: { loc: this.loc },\n\t\t\t\t})\n\t\t\t\t.afterClosed()\n\t\t\t\t.pipe(\n\t\t\t\t\tswitchMap(hasCodeChanges =>\n\t\t\t\t\t\thasCodeChanges\n\t\t\t\t\t\t\t? this.locService.findValue$(\n\t\t\t\t\t\t\t\t\tthis.locs.CMSystemLocalizationDialogModificationWarning\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: of(null)\n\t\t\t\t\t),\n\t\t\t\t\ttake(1)\n\t\t\t\t)\n\t\t\t\t.subscribe(message => {\n\t\t\t\t\tif (message) {\n\t\t\t\t\t\tthis.notificationService.popInfo({\n\t\t\t\t\t\t\tid: 'possible-loc-changes',\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t}\n}\n","\n\n\n\n\t\n\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t{{\n\t\t\t\tloc.value\n\t\t\t}}\n\t\t\n\t\n\n\t\n\t\t\n\t\n\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { PortalType } from '@ats/api/cm';\nimport { filterNullOrUndefined } from '@ats/utility';\nimport { Localization, LocalizationService } from '@cm/core/localization';\nimport { SettingsService } from '@cm/core/settings';\nimport { SafeHtmlPipe } from '@cm/shared/ui/utilities';\nimport { BehaviorSubject, map, Observable, switchMap } from 'rxjs';\nimport { LocalizationViewService } from '../../services/localization-view.service';\nimport { InliningLocalizationComponent } from '../inlining-localization/inlining-localization.component';\n\ntype CustomStyle = {\n\t[key: string]: string;\n};\n\n@Component({\n\tselector: 'cm-localize',\n\ttemplateUrl: './localize.component.html',\n\tstyleUrls: ['./localize.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [CommonModule, InliningLocalizationComponent, SafeHtmlPipe],\n})\nexport class LocalizeComponent implements OnChanges {\n\t@Input({ required: true }) name!: string;\n\t@Input() cpName?: string;\n\t@Input() hideOn: 'never' | 'emptyString' | 'null' = 'never';\n\t@Input() sanitize = true;\n\t@Input() customStyle?: CustomStyle;\n\t@Input() customInliningStyle?: CustomStyle;\n\treadonly inlineEnabled$: Observable;\n\treadonly loc$: Observable<(Localization & { safeHtml?: SafeHtml }) | null>;\n\tprivate readonly locInputChange = new BehaviorSubject(null);\n\tconstructor(\n\t\tprivate readonly localizationService: LocalizationService,\n\t\tprivate readonly localizationViewService: LocalizationViewService,\n\t\tprivate readonly sanitizer: DomSanitizer,\n\t\tprivate readonly settingsService: SettingsService\n\t) {\n\t\tthis.inlineEnabled$ = this.localizationViewService.inlineEnabled$;\n\t\tthis.loc$ = this.locInputChange.asObservable().pipe(\n\t\t\tfilterNullOrUndefined(),\n\t\t\tswitchMap(name => this.localizationService.find$(name)),\n\t\t\tmap(loc =>\n\t\t\t\t!this.sanitize && loc?.htmlAllowed\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...loc,\n\t\t\t\t\t\t\tsafeHtml: this.sanitizer.bypassSecurityTrustHtml(loc.value || ''),\n\t\t\t\t\t\t}\n\t\t\t\t\t: loc\n\t\t\t)\n\t\t);\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\t// Instantiate all of our vars\n\t\tlet nextValue: string | null = null;\n\t\tconst currentValue = this.locInputChange.getValue();\n\t\tconst nameValue = changes['name']?.currentValue;\n\t\tconst cpNameValue = changes['cpName']?.currentValue;\n\n\t\t// Default to the name input value\n\t\tnextValue = nameValue;\n\n\t\t// Check if we are in the candidate portal and use cpName if it exists\n\t\tif (this.settingsService.portal === PortalType.CandidatePortal && cpNameValue) {\n\t\t\tnextValue = cpNameValue;\n\t\t}\n\n\t\t// Fire off the change if it is set and has a different than the current value\n\t\tif (nextValue && currentValue !== nextValue) {\n\t\t\tthis.locInputChange.next(nextValue);\n\t\t}\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizedText } from '@ats/cm/core';\r\n\r\n@Pipe({\r\n\tname: 'isLegacyLoc',\r\n\tstandalone: true,\r\n})\r\nexport class IsLegacyLocalizePipe implements PipeTransform {\r\n\tconstructor() {}\r\n\r\n\ttransform(name: string | LocalizedText): boolean {\r\n\t\tif (typeof name !== 'string') {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn name.includes('.');\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from '@cm/core/localization';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Pipe({\r\n\tname: 'cmLocalizeBool',\r\n\tstandalone: true,\r\n})\r\nexport class LocalizeBooleanPipe implements PipeTransform {\r\n\tconstructor(private readonly localizationService: LocalizationService) {}\r\n\r\n\ttransform(value: boolean | string, binary = true): Observable {\r\n\t\tlet loc: string;\r\n\t\tif (!binary && value === null) {\r\n\t\t\tloc = this.localizationService.Keys.GlobalValues.CMSystemGlobalNA;\r\n\t\t} else if (!value || value === '' || value === '0') {\r\n\t\t\tloc = this.localizationService.Keys.GlobalValues.CMSystemGlobalFalse;\r\n\t\t} else {\r\n\t\t\tloc = this.localizationService.Keys.GlobalValues.CMSystemGlobalTrue;\r\n\t\t}\r\n\t\treturn this.localizationService.find$(loc).pipe(map(loc => (loc || {}).value || ''));\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from '@cm/core/localization';\nimport { Observable, map } from 'rxjs';\n\n@Pipe({\n\tname: 'localize',\n\tstandalone: true,\n})\nexport class LocalizePipe implements PipeTransform {\n\tconstructor(private readonly localizationService: LocalizationService) {}\n\n\ttransform(name: string): Observable {\n\t\treturn this.localizationService.find$(name).pipe(map(loc => (loc || {}).value || ''));\n\t}\n}\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CmAuthService } from '@ats/cm/core';\r\nimport { CmModalSettings } from '@ats/cm/ui';\r\nimport { AtsNotificationService } from '@ats/notifications';\r\nimport { filterNullOrUndefined } from '@ats/utility';\r\nimport { LocalizationService } from '@cm/core/localization';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { BehaviorSubject, Observable, distinctUntilChanged } from 'rxjs';\r\nimport { switchMap, take } from 'rxjs/operators';\r\nimport {\r\n\tLocalizationDialogComponent,\r\n\tLocalizationDialogData,\r\n} from '../components/localization-dialog/localization-dialog.component';\r\n\r\n@UntilDestroy()\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LocalizationViewService {\r\n\tprivate readonly inlineEnabled = new BehaviorSubject(false);\r\n\treadonly inlineEnabled$: Observable = this.inlineEnabled.asObservable().pipe(distinctUntilChanged());\r\n\r\n\tconstructor(\r\n\t\tpublic readonly locService: LocalizationService,\r\n\t\tprivate readonly dialog: MatDialog,\r\n\t\tprivate readonly notificationService: AtsNotificationService,\r\n\t\tprivate readonly auth: CmAuthService\r\n\t) {\r\n\t\tthis.auth.token$.pipe(untilDestroyed(this)).subscribe(token => {\r\n\t\t\tif (!token) {\r\n\t\t\t\tthis.inlineEnabled.next(false);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleInline(): void {\r\n\t\tthis.inlineEnabled.next(!this.inlineEnabled.getValue());\r\n\t}\r\n\r\n\tlocalize(name: string): Observable {\r\n\t\treturn this.locService.find$(name).pipe(\r\n\t\t\ttake(1),\r\n\t\t\tfilterNullOrUndefined(),\r\n\t\t\tswitchMap(loc =>\r\n\t\t\t\tthis.dialog\r\n\t\t\t\t\t.open(LocalizationDialogComponent, {\r\n\t\t\t\t\t\t...CmModalSettings.Medium,\r\n\t\t\t\t\t\tautoFocus: '.loc-dialog-first',\r\n\t\t\t\t\t\tdata: { loc },\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.afterClosed()\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpopSystemError(id: string = 'system-error'): void {\r\n\t\tthis.locService\r\n\t\t\t.findValue$('Core/Error.GUID.SystemError')\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe(message => {\r\n\t\t\t\tthis.notificationService.popError({\r\n\t\t\t\t\tmessage,\r\n\t\t\t\t\tid,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n}\r\n","import { LocDefs, LocMap, MapLocKeys } from '@cm/core/localization';\r\n\r\nconst dpRoot = 'System|Localization|Dialog';\r\n\r\nexport type SharedLocalizationLocs =\r\n\t| 'CMSystemLocalizationDialogCurrentValue'\r\n\t| 'CMSystemLocalizationDialogDefaultValue';\r\n\r\nexport const sharedLocalizationLocs: LocDefs = {\r\n\tCMSystemLocalizationDialogCurrentValue: {\r\n\t\tdefaultValue: 'Current Value',\r\n\t\tdisplayPath: `${dpRoot}|Current Value`,\r\n\t\tdescription: 'Label for the current defaultValue. This is both on the string and HTML editor.',\r\n\t\tdisplayType: 'Label',\r\n\t},\r\n\tCMSystemLocalizationDialogDefaultValue: {\r\n\t\tdefaultValue: 'Default Value',\r\n\t\tdisplayPath: `${dpRoot}|Default Value`,\r\n\t\tdescription: 'Label for the default defaultValue. This is both on the string and HTML editor.',\r\n\t\tdisplayType: 'Label',\r\n\t},\r\n};\r\n\r\nexport const SHARED_LOCALIZATION_KEYS = MapLocKeys(sharedLocalizationLocs);\r\nexport type SharedLocType = LocMap;\r\n","/* eslint-disable @angular-eslint/directive-selector */\r\nimport { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\n selector: '[matTooltip]:not([aria-label])',\n standalone: false\n})\r\nexport class CmTooltipLabelDirective implements OnChanges {\r\n\t@Input() matTooltip?: string;\r\n\t@Input() skipAriaLabel: boolean = false;\r\n\t@Input() prependToAriaLabel: string = '';\r\n\t@Input() appendToAriaLabel: string = '';\r\n\r\n\tconstructor(private readonly elRef: ElementRef, private readonly renderer: Renderer2) {}\r\n\r\n\tngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (\r\n\t\t\t!this.skipAriaLabel &&\r\n\t\t\t(changes['matTooltip'] || {}).previousValue !== (changes['matTooltip'] || {}).currentValue\r\n\t\t) {\r\n\t\t\tthis.renderer.setAttribute(\r\n\t\t\t\tthis.elRef.nativeElement,\r\n\t\t\t\t'aria-label',\r\n\t\t\t\t`${this.prependToAriaLabel}${this.matTooltip}${this.appendToAriaLabel}`\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CmTooltipLabelDirective } from './directives/cm-tooltip-label.directive';\r\n\r\nconst declarations = [CmTooltipLabelDirective];\r\n\r\n@NgModule({\r\n\tdeclarations,\r\n\texports: [...declarations],\r\n})\r\nexport class AccessibilityModule {}\r\n","// Built using https://www.tiny.cloud/docs/configure/content-filtering/#valid_elements\r\nconst VALID_ELEMENTS = [\r\n\t'@[style|title|aria-*|class]',\r\n\t'a[href|target|style|title|aria-*]',\r\n\t'img[src|alt|width|height|style|title|aria-*]',\r\n\t'embed[src]',\r\n\t'address',\r\n\t'article',\r\n\t'aside',\r\n\t'footer',\r\n\t'header',\r\n\t'h2',\r\n\t'h3',\r\n\t'h4',\r\n\t'h5',\r\n\t'h6',\r\n\t'hgroup',\r\n\t'nav',\r\n\t'section',\r\n\t'blockquote',\r\n\t'dd',\r\n\t'div',\r\n\t'dl',\r\n\t'dt',\r\n\t'figcaption',\r\n\t'figure',\r\n\t'hr',\r\n\t'li',\r\n\t'ol',\r\n\t'p',\r\n\t'pre',\r\n\t'ul',\r\n\t'abbr',\r\n\t'b',\r\n\t'br',\r\n\t'em',\r\n\t'i',\r\n\t'q',\r\n\t's',\r\n\t'small',\r\n\t'span',\r\n\t'strong',\r\n\t'sub',\r\n\t'sup',\r\n\t'time',\r\n\t'u',\r\n\t'var',\r\n\t'caption',\r\n\t'col',\r\n\t'colgroup',\r\n\t'table',\r\n\t'tbody',\r\n\t'td',\r\n\t'tfoot',\r\n\t'th',\r\n\t'thead',\r\n\t'tr',\r\n];\r\n\r\nexport const TINYMCE_CONFIG = {\r\n\tbase_url: '/tinymce',\r\n\tvalid_elements: VALID_ELEMENTS.join(','),\r\n\tsuffix: '.min',\r\n\tplugins: [\r\n\t\t'link',\r\n\t\t'lists',\r\n\t\t'table',\r\n\t\t'code',\r\n\t\t'image',\r\n\t\t'autoresize',\r\n\t\t'preview',\r\n\t\t'wordcount',\r\n\t\t'fullscreen',\r\n\t\t'charmap',\r\n\t\t'media',\r\n\t],\r\n\tbranding: false,\r\n\tresize: true,\r\n\tbrowser_spellcheck: true,\r\n\ttoolbar:\r\n\t\t'preview fullscreen | undo redo | formatselect | fontsizeselect | alignleft aligncenter alignright alignjustify | \\\r\n\t link | template hr | \\\r\n\t bold italic underline strikethrough superscript subscript | formats | removeformat forecolor backcolor | \\\r\n\t bullist numlist table charmap | cell row column | spellchecker code',\r\n\ttoolbar_mode: 'wrap',\r\n\tstatusbar: true,\r\n\tblock_formats: 'Paragraph=p; Title=h2; header=h3; Subheader=h4',\r\n\tfontsize_formats: '8pt 10pt 12pt 14pt 16pt 18pt 24pt 36pt 48pt',\r\n\tmenubar: 'view insert edit format table tools help',\r\n\tmenu: {\r\n\t\tedit: { title: 'Edit', items: 'undo redo | selectall' },\r\n\t\tview: {\r\n\t\t\ttitle: 'View',\r\n\t\t\titems: 'preview fullscreen code | visualchars visualblocks | spellchecker',\r\n\t\t},\r\n\t\tinsert: { title: 'Insert', items: 'image media inserttable | charmap hr | pagebreak nonbreaking anchor' },\r\n\t\tformat: {\r\n\t\t\ttitle: 'Format',\r\n\t\t\titems: 'bold italic underline strikethrough superscript subscript | formats blockformats fontsizes align lineheight | forecolor backcolor | removeformat',\r\n\t\t},\r\n\t\ttools: { title: 'Tools', items: 'spellchecker spellcheckerlanguage | code wordcount' },\r\n\t\ttable: { title: 'Table', items: 'inserttable | cell row column | tableprops deletetable' },\r\n\t\thelp: { title: 'Help', items: 'help' },\r\n\t},\r\n\trelative_urls: false,\r\n\tremove_script_host: true,\r\n\turlconverter_callback: (url: string) => url,\r\n\ttarget_list: [\r\n\t\t{ title: 'None', value: '' },\r\n\t\t{ title: 'Same page', value: '_self' },\r\n\t\t{ title: 'New page', value: '_blank' },\r\n\t],\r\n\tdefault_link_target: '_blank',\r\n\tpromotion: false,\r\n\tpaste_data_images: false,\r\n};\r\n\r\nexport const TINYMCE_API_KEY = 'azxqxh1v22skfywk8cy23wykx7ozgjk535j4lx9swcf7hy8h';\r\n\r\nexport const TINYMCE: { CONFIG: any; API_KEY: string } = {\r\n\tCONFIG: TINYMCE_CONFIG,\r\n\tAPI_KEY: TINYMCE_API_KEY,\r\n};\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { StorageModule } from '@cm/core/storage';\n/**\n *\n * @deprecated Use @cm/core/storage StorageModule\n */\n@NgModule({\n\timports: [CommonModule, StorageModule],\n})\nexport class AtsStoreModule {}\n","import { Injectable } from '@angular/core';\r\nimport { StorageService } from '@cm/core/storage';\r\n\r\n/**\r\n *\r\n * @deprecated Use @cm/core/storage StorageService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AtsStoreService {\r\n\tconstructor(private readonly storage: StorageService) {}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/storage StorageService.get\r\n\t */\r\n\tpublic getFromStore(name: string): T {\r\n\t\treturn this.storage.get(name);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/storage StorageService.delete\r\n\t */\r\n\tpublic deleteFromStore(name) {\r\n\t\tthis.storage.delete(name);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @deprecated Use @cm/core/storage StorageService.save\r\n\t */\r\n\tpublic saveToStore(name: string, value: string, expiresIn: number = 90) {\r\n\t\tthis.storage.save(name, value, expiresIn);\r\n\t}\r\n}\r\n","import { OverlayContainer } from '@angular/cdk/overlay';\r\nimport { ElementRef, Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AtsOverlayContainer extends OverlayContainer {\r\n\tpublic atsCreateContainer(el: ElementRef) {\r\n\t\tconst container = document.createElement('div');\r\n\t\tcontainer.style.pointerEvents = 'none';\r\n\t\tel.nativeElement.appendChild(container);\r\n\t\tthis._containerElement = container;\r\n\t}\r\n\r\n\tprotected _createContainer(): void {\r\n\t\treturn;\r\n\t}\r\n}\r\n","import * as i0 from '@angular/core';\nimport { signal, Component, ViewEncapsulation, ChangeDetectionStrategy, inject, NgZone, Injectable, InjectionToken, ElementRef, booleanAttribute, Directive, Input, ViewContainerRef, ChangeDetectorRef, EventEmitter, Injector, afterNextRender, numberAttribute, Output, TemplateRef, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ViewportRuler, ScrollDispatcher, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader, _IdGenerator } from '@angular/cdk/a11y';\nimport { coerceElement, coerceNumberProperty, coerceArray } from '@angular/cdk/coercion';\nimport { _getEventTarget, normalizePassiveListenerOptions, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, interval, animationFrameScheduler, Observable, merge, BehaviorSubject } from 'rxjs';\nimport { takeUntil, map, take, tap, switchMap, startWith } from 'rxjs/operators';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { Directionality } from '@angular/cdk/bidi';\n\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[i].removeAttribute('id');\n }\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n }\n else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n }\n catch { }\n }\n}\n\n/** Gets a mutable version of an element's bounding `DOMRect`. */\nfunction getMutableClientRect(element) {\n const rect = element.getBoundingClientRect();\n // We need to clone the `clientRect` here, because all the values on it are readonly\n // and we need to be able to update them. Also we can't use a spread here, because\n // the values on a `DOMRect` aren't own properties. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes\n return {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n x: rect.x,\n y: rect.y,\n };\n}\n/**\n * Checks whether some coordinates are within a `DOMRect`.\n * @param clientRect DOMRect that is being checked.\n * @param x Coordinates along the X axis.\n * @param y Coordinates along the Y axis.\n */\nfunction isInsideClientRect(clientRect, x, y) {\n const { top, bottom, left, right } = clientRect;\n return y >= top && y <= bottom && x >= left && x <= right;\n}\n/**\n * Updates the top/left positions of a `DOMRect`, as well as their bottom/right counterparts.\n * @param domRect `DOMRect` that should be updated.\n * @param top Amount to add to the `top` position.\n * @param left Amount to add to the `left` position.\n */\nfunction adjustDomRect(domRect, top, left) {\n domRect.top += top;\n domRect.bottom = domRect.top + domRect.height;\n domRect.left += left;\n domRect.right = domRect.left + domRect.width;\n}\n/**\n * Checks whether the pointer coordinates are close to a DOMRect.\n * @param rect DOMRect to check against.\n * @param threshold Threshold around the DOMRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nfunction isPointerNearDomRect(rect, threshold, pointerX, pointerY) {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n return (pointerY > top - yThreshold &&\n pointerY < bottom + yThreshold &&\n pointerX > left - xThreshold &&\n pointerX < right + xThreshold);\n}\n\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nclass ParentPositionTracker {\n _document;\n /** Cached positions of the scrollable parent elements. */\n positions = new Map();\n constructor(_document) {\n this._document = _document;\n }\n /** Clears the cached positions. */\n clear() {\n this.positions.clear();\n }\n /** Caches the positions. Should be called at the beginning of a drag sequence. */\n cache(elements) {\n this.clear();\n this.positions.set(this._document, {\n scrollPosition: this.getViewportScrollPosition(),\n });\n elements.forEach(element => {\n this.positions.set(element, {\n scrollPosition: { top: element.scrollTop, left: element.scrollLeft },\n clientRect: getMutableClientRect(element),\n });\n });\n }\n /** Handles scrolling while a drag is taking place. */\n handleScroll(event) {\n const target = _getEventTarget(event);\n const cachedPosition = this.positions.get(target);\n if (!cachedPosition) {\n return null;\n }\n const scrollPosition = cachedPosition.scrollPosition;\n let newTop;\n let newLeft;\n if (target === this._document) {\n const viewportScrollPosition = this.getViewportScrollPosition();\n newTop = viewportScrollPosition.top;\n newLeft = viewportScrollPosition.left;\n }\n else {\n newTop = target.scrollTop;\n newLeft = target.scrollLeft;\n }\n const topDifference = scrollPosition.top - newTop;\n const leftDifference = scrollPosition.left - newLeft;\n // Go through and update the cached positions of the scroll\n // parents that are inside the element that was scrolled.\n this.positions.forEach((position, node) => {\n if (position.clientRect && target !== node && target.contains(node)) {\n adjustDomRect(position.clientRect, topDifference, leftDifference);\n }\n });\n scrollPosition.top = newTop;\n scrollPosition.left = newLeft;\n return { top: topDifference, left: leftDifference };\n }\n /**\n * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly,\n * instead of going through the `ViewportRuler`, because the first value the ruler looks at is\n * the top/left offset of the `document.documentElement` which works for most cases, but breaks\n * if the element is offset by something like the `BlockScrollStrategy`.\n */\n getViewportScrollPosition() {\n return { top: window.scrollY, left: window.scrollX };\n }\n}\n\n/**\n * Gets the root HTML element of an embedded view.\n * If the root is not an HTML element it gets wrapped in one.\n */\nfunction getRootNode(viewRef, _document) {\n const rootNodes = viewRef.rootNodes;\n if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n return rootNodes[0];\n }\n const wrapper = _document.createElement('div');\n rootNodes.forEach(node => wrapper.appendChild(node));\n return wrapper;\n}\n\n/**\n * Shallow-extends a stylesheet object with another stylesheet-like object.\n * Note that the keys in `source` have to be dash-cased.\n * @docs-private\n */\nfunction extendStyles(dest, source, importantProperties) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n if (value) {\n dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');\n }\n else {\n dest.removeProperty(key);\n }\n }\n }\n return dest;\n}\n/**\n * Toggles whether the native drag interactions should be enabled for an element.\n * @param element Element on which to toggle the drag interactions.\n * @param enable Whether the drag interactions should be enabled.\n * @docs-private\n */\nfunction toggleNativeDragInteractions(element, enable) {\n const userSelect = enable ? '' : 'none';\n extendStyles(element.style, {\n 'touch-action': enable ? '' : 'none',\n '-webkit-user-drag': enable ? '' : 'none',\n '-webkit-tap-highlight-color': enable ? '' : 'transparent',\n 'user-select': userSelect,\n '-ms-user-select': userSelect,\n '-webkit-user-select': userSelect,\n '-moz-user-select': userSelect,\n });\n}\n/**\n * Toggles whether an element is visible while preserving its dimensions.\n * @param element Element whose visibility to toggle\n * @param enable Whether the element should be visible.\n * @param importantProperties Properties to be set as `!important`.\n * @docs-private\n */\nfunction toggleVisibility(element, enable, importantProperties) {\n extendStyles(element.style, {\n position: enable ? '' : 'fixed',\n top: enable ? '' : '0',\n opacity: enable ? '' : '0',\n left: enable ? '' : '-999em',\n }, importantProperties);\n}\n/**\n * Combines a transform string with an optional other transform\n * that exited before the base transform was applied.\n */\nfunction combineTransforms(transform, initialTransform) {\n return initialTransform && initialTransform != 'none'\n ? transform + ' ' + initialTransform\n : transform;\n}\n/**\n * Matches the target element's size to the source's size.\n * @param target Element that needs to be resized.\n * @param sourceRect Dimensions of the source element.\n */\nfunction matchElementSize(target, sourceRect) {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n target.style.transform = getTransform(sourceRect.left, sourceRect.top);\n}\n/**\n * Gets a 3d `transform` that can be applied to an element.\n * @param x Desired position of the element along the X axis.\n * @param y Desired position of the element along the Y axis.\n */\nfunction getTransform(x, y) {\n // Round the transforms since some browsers will\n // blur the elements for sub-pixel transforms.\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n\n/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value) {\n // Some browsers will return it in seconds, whereas others will return milliseconds.\n const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;\n return parseFloat(value) * multiplier;\n}\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nfunction getTransformTransitionDurationInMs(element) {\n const computedStyle = getComputedStyle(element);\n const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n // If there's no transition for `all` or `transform`, we shouldn't do anything.\n if (!property) {\n return 0;\n }\n // Get the index of the property that we're interested in and match\n // it up to the same index in `transition-delay` and `transition-duration`.\n const propertyIndex = transitionedProperties.indexOf(property);\n const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');\n const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');\n return (parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n parseCssTimeUnitsToMs(rawDelays[propertyIndex]));\n}\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle, name) {\n const value = computedStyle.getPropertyValue(name);\n return value.split(',').map(part => part.trim());\n}\n\n/** Inline styles to be set as `!important` while dragging. */\nconst importantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position',\n]);\nclass PreviewRef {\n _document;\n _rootElement;\n _direction;\n _initialDomRect;\n _previewTemplate;\n _previewClass;\n _pickupPositionOnPage;\n _initialTransform;\n _zIndex;\n /** Reference to the view of the preview element. */\n _previewEmbeddedView;\n /** Reference to the preview element. */\n _preview;\n get element() {\n return this._preview;\n }\n constructor(_document, _rootElement, _direction, _initialDomRect, _previewTemplate, _previewClass, _pickupPositionOnPage, _initialTransform, _zIndex) {\n this._document = _document;\n this._rootElement = _rootElement;\n this._direction = _direction;\n this._initialDomRect = _initialDomRect;\n this._previewTemplate = _previewTemplate;\n this._previewClass = _previewClass;\n this._pickupPositionOnPage = _pickupPositionOnPage;\n this._initialTransform = _initialTransform;\n this._zIndex = _zIndex;\n }\n attach(parent) {\n this._preview = this._createPreview();\n parent.appendChild(this._preview);\n // The null check is necessary for browsers that don't support the popover API.\n // Note that we use a string access for compatibility with Closure.\n if (supportsPopover(this._preview)) {\n this._preview['showPopover']();\n }\n }\n destroy() {\n this._preview.remove();\n this._previewEmbeddedView?.destroy();\n this._preview = this._previewEmbeddedView = null;\n }\n setTransform(value) {\n this._preview.style.transform = value;\n }\n getBoundingClientRect() {\n return this._preview.getBoundingClientRect();\n }\n addClass(className) {\n this._preview.classList.add(className);\n }\n getTransitionDuration() {\n return getTransformTransitionDurationInMs(this._preview);\n }\n addEventListener(name, handler) {\n this._preview.addEventListener(name, handler);\n }\n removeEventListener(name, handler) {\n this._preview.removeEventListener(name, handler);\n }\n _createPreview() {\n const previewConfig = this._previewTemplate;\n const previewClass = this._previewClass;\n const previewTemplate = previewConfig ? previewConfig.template : null;\n let preview;\n if (previewTemplate && previewConfig) {\n // Measure the element before we've inserted the preview\n // since the insertion could throw off the measurement.\n const rootRect = previewConfig.matchSize ? this._initialDomRect : null;\n const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate, previewConfig.context);\n viewRef.detectChanges();\n preview = getRootNode(viewRef, this._document);\n this._previewEmbeddedView = viewRef;\n if (previewConfig.matchSize) {\n matchElementSize(preview, rootRect);\n }\n else {\n preview.style.transform = getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n }\n }\n else {\n preview = deepCloneNode(this._rootElement);\n matchElementSize(preview, this._initialDomRect);\n if (this._initialTransform) {\n preview.style.transform = this._initialTransform;\n }\n }\n extendStyles(preview.style, {\n // It's important that we disable the pointer events on the preview, because\n // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.\n 'pointer-events': 'none',\n // If the preview has a margin, it can throw off our positioning so we reset it. The reset\n // value for `margin-right` needs to be `auto` when opened as a popover, because our\n // positioning is always top/left based, but native popover seems to position itself\n // to the top/right if `` or `` have `dir=\"rtl\"` (see #29604). Setting it\n // to `auto` pushed it to the top/left corner in RTL and is a noop in LTR.\n 'margin': supportsPopover(preview) ? '0 auto 0 0' : '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': this._zIndex + '',\n }, importantProperties);\n toggleNativeDragInteractions(preview, false);\n preview.classList.add('cdk-drag-preview');\n preview.setAttribute('popover', 'manual');\n preview.setAttribute('dir', this._direction);\n if (previewClass) {\n if (Array.isArray(previewClass)) {\n previewClass.forEach(className => preview.classList.add(className));\n }\n else {\n preview.classList.add(previewClass);\n }\n }\n return preview;\n }\n}\n/** Checks whether a specific element supports the popover API. */\nfunction supportsPopover(element) {\n return 'showPopover' in element;\n}\n\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({ passive: false });\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions$1 = normalizePassiveListenerOptions({\n passive: false,\n capture: true,\n});\n/**\n * Time in milliseconds for which to ignore mouse events, after\n * receiving a touch event. Used to avoid doing double work for\n * touch devices where the browser fires fake mouse events, in\n * addition to touch events.\n */\nconst MOUSE_EVENT_IGNORE_TIME = 800;\n/** Inline styles to be set as `!important` while dragging. */\nconst dragImportantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position',\n]);\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nclass DragRef {\n _config;\n _document;\n _ngZone;\n _viewportRuler;\n _dragDropRegistry;\n /** Element displayed next to the user's pointer while the element is dragged. */\n _preview;\n /** Container into which to insert the preview. */\n _previewContainer;\n /** Reference to the view of the placeholder element. */\n _placeholderRef;\n /** Element that is rendered instead of the draggable item while it is being sorted. */\n _placeholder;\n /** Coordinates within the element at which the user picked up the element. */\n _pickupPositionInElement;\n /** Coordinates on the page at which the user picked up the element. */\n _pickupPositionOnPage;\n /**\n * Anchor node used to save the place in the DOM where the element was\n * picked up so that it can be restored at the end of the drag sequence.\n */\n _anchor;\n /**\n * CSS `transform` applied to the element when it isn't being dragged. We need a\n * passive transform in order for the dragged element to retain its new position\n * after the user has stopped dragging and because we need to know the relative\n * position in case they start dragging again. This corresponds to `element.style.transform`.\n */\n _passiveTransform = { x: 0, y: 0 };\n /** CSS `transform` that is applied to the element while it's being dragged. */\n _activeTransform = { x: 0, y: 0 };\n /** Inline `transform` value that the element had before the first dragging sequence. */\n _initialTransform;\n /**\n * Whether the dragging sequence has been started. Doesn't\n * necessarily mean that the element has been moved.\n */\n _hasStartedDragging = signal(false);\n /** Whether the element has moved since the user started dragging it. */\n _hasMoved;\n /** Drop container in which the DragRef resided when dragging began. */\n _initialContainer;\n /** Index at which the item started in its initial container. */\n _initialIndex;\n /** Cached positions of scrollable parent elements. */\n _parentPositions;\n /** Emits when the item is being moved. */\n _moveEvents = new Subject();\n /** Keeps track of the direction in which the user is dragging along each axis. */\n _pointerDirectionDelta;\n /** Pointer position at which the last change in the delta occurred. */\n _pointerPositionAtLastDirectionChange;\n /** Position of the pointer at the last pointer event. */\n _lastKnownPointerPosition;\n /**\n * Root DOM node of the drag instance. This is the element that will\n * be moved around as the user is dragging.\n */\n _rootElement;\n /**\n * Nearest ancestor SVG, relative to which coordinates are calculated if dragging SVGElement\n */\n _ownerSVGElement;\n /**\n * Inline style value of `-webkit-tap-highlight-color` at the time the\n * dragging was started. Used to restore the value once we're done dragging.\n */\n _rootElementTapHighlight;\n /** Subscription to pointer movement events. */\n _pointerMoveSubscription = Subscription.EMPTY;\n /** Subscription to the event that is dispatched when the user lifts their pointer. */\n _pointerUpSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being scrolled. */\n _scrollSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being resized. */\n _resizeSubscription = Subscription.EMPTY;\n /**\n * Time at which the last touch event occurred. Used to avoid firing the same\n * events multiple times on touch devices where the browser will fire a fake\n * mouse event for each touch event, after a certain time.\n */\n _lastTouchEventTime;\n /** Time at which the last dragging sequence was started. */\n _dragStartTime;\n /** Cached reference to the boundary element. */\n _boundaryElement = null;\n /** Whether the native dragging interactions have been enabled on the root element. */\n _nativeInteractionsEnabled = true;\n /** Client rect of the root element when the dragging sequence has started. */\n _initialDomRect;\n /** Cached dimensions of the preview element. Should be read via `_getPreviewRect`. */\n _previewRect;\n /** Cached dimensions of the boundary element. */\n _boundaryRect;\n /** Element that will be used as a template to create the draggable item's preview. */\n _previewTemplate;\n /** Template for placeholder element rendered to show where a draggable would be dropped. */\n _placeholderTemplate;\n /** Elements that can be used to drag the draggable item. */\n _handles = [];\n /** Registered handles that are currently disabled. */\n _disabledHandles = new Set();\n /** Droppable container that the draggable is a part of. */\n _dropContainer;\n /** Layout direction of the item. */\n _direction = 'ltr';\n /** Ref that the current drag item is nested in. */\n _parentDragRef;\n /**\n * Cached shadow root that the element is placed in. `null` means that the element isn't in\n * the shadow DOM and `undefined` means that it hasn't been resolved yet. Should be read via\n * `_getShadowRoot`, not directly.\n */\n _cachedShadowRoot;\n /** Axis along which dragging is locked. */\n lockAxis;\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n dragStartDelay = 0;\n /** Class to be added to the preview element. */\n previewClass;\n /**\n * If the parent of the dragged element has a `scale` transform, it can throw off the\n * positioning when the user starts dragging. Use this input to notify the CDK of the scale.\n */\n scale = 1;\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n }\n set disabled(value) {\n if (value !== this._disabled) {\n this._disabled = value;\n this._toggleNativeDragInteractions();\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, value));\n }\n }\n _disabled = false;\n /** Emits as the drag sequence is being prepared. */\n beforeStarted = new Subject();\n /** Emits when the user starts dragging the item. */\n started = new Subject();\n /** Emits when the user has released a drag item, before any animations have started. */\n released = new Subject();\n /** Emits when the user stops dragging an item in the container. */\n ended = new Subject();\n /** Emits when the user has moved the item into a new container. */\n entered = new Subject();\n /** Emits when the user removes the item its container by dragging it into another container. */\n exited = new Subject();\n /** Emits when the user drops the item inside a container. */\n dropped = new Subject();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n moved = this._moveEvents;\n /** Arbitrary data that can be attached to the drag item. */\n data;\n /**\n * Function that can be used to customize the logic of how the position of the drag item\n * is limited while it's being dragged. Gets called with a point containing the current position\n * of the user's pointer on the page, a reference to the item being dragged and its dimensions.\n * Should return a point describing where the item should be rendered.\n */\n constrainPosition;\n constructor(element, _config, _document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._config = _config;\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n this.withRootElement(element).withParent(_config.parentDragRef || null);\n this._parentPositions = new ParentPositionTracker(_document);\n _dragDropRegistry.registerDragItem(this);\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._placeholder;\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._rootElement;\n }\n /**\n * Gets the currently-visible element that represents the drag item.\n * While dragging this is the placeholder, otherwise it's the root element.\n */\n getVisibleElement() {\n return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n }\n /** Registers the handles that can be used to drag the element. */\n withHandles(handles) {\n this._handles = handles.map(handle => coerceElement(handle));\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));\n this._toggleNativeDragInteractions();\n // Delete any lingering disabled handles that may have been destroyed. Note that we re-create\n // the set, rather than iterate over it and filter out the destroyed handles, because while\n // the ES spec allows for sets to be modified while they're being iterated over, some polyfills\n // use an array internally which may throw an error.\n const disabledHandles = new Set();\n this._disabledHandles.forEach(handle => {\n if (this._handles.indexOf(handle) > -1) {\n disabledHandles.add(handle);\n }\n });\n this._disabledHandles = disabledHandles;\n return this;\n }\n /**\n * Registers the template that should be used for the drag preview.\n * @param template Template that from which to stamp out the preview.\n */\n withPreviewTemplate(template) {\n this._previewTemplate = template;\n return this;\n }\n /**\n * Registers the template that should be used for the drag placeholder.\n * @param template Template that from which to stamp out the placeholder.\n */\n withPlaceholderTemplate(template) {\n this._placeholderTemplate = template;\n return this;\n }\n /**\n * Sets an alternate drag root element. The root element is the element that will be moved as\n * the user is dragging. Passing an alternate root element is useful when trying to enable\n * dragging on an element that you might not have access to.\n */\n withRootElement(rootElement) {\n const element = coerceElement(rootElement);\n if (element !== this._rootElement) {\n if (this._rootElement) {\n this._removeRootElementListeners(this._rootElement);\n }\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.addEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n });\n this._initialTransform = undefined;\n this._rootElement = element;\n }\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n this._ownerSVGElement = this._rootElement.ownerSVGElement;\n }\n return this;\n }\n /**\n * Element to which the draggable's position will be constrained.\n */\n withBoundaryElement(boundaryElement) {\n this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;\n this._resizeSubscription.unsubscribe();\n if (boundaryElement) {\n this._resizeSubscription = this._viewportRuler\n .change(10)\n .subscribe(() => this._containInsideBoundaryOnResize());\n }\n return this;\n }\n /** Sets the parent ref that the ref is nested in. */\n withParent(parent) {\n this._parentDragRef = parent;\n return this;\n }\n /** Removes the dragging functionality from the DOM element. */\n dispose() {\n this._removeRootElementListeners(this._rootElement);\n // Do this check before removing from the registry since it'll\n // stop being considered as dragged once it is removed.\n if (this.isDragging()) {\n // Since we move out the element to the end of the body while it's being\n // dragged, we have to make sure that it's removed if it gets destroyed.\n this._rootElement?.remove();\n }\n this._anchor?.remove();\n this._destroyPreview();\n this._destroyPlaceholder();\n this._dragDropRegistry.removeDragItem(this);\n this._removeListeners();\n this.beforeStarted.complete();\n this.started.complete();\n this.released.complete();\n this.ended.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this._moveEvents.complete();\n this._handles = [];\n this._disabledHandles.clear();\n this._dropContainer = undefined;\n this._resizeSubscription.unsubscribe();\n this._parentPositions.clear();\n this._boundaryElement =\n this._rootElement =\n this._ownerSVGElement =\n this._placeholderTemplate =\n this._previewTemplate =\n this._anchor =\n this._parentDragRef =\n null;\n }\n /** Checks whether the element is currently being dragged. */\n isDragging() {\n return this._hasStartedDragging() && this._dragDropRegistry.isDragging(this);\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._rootElement.style.transform = this._initialTransform || '';\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform = { x: 0, y: 0 };\n }\n /**\n * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.\n * @param handle Handle element that should be disabled.\n */\n disableHandle(handle) {\n if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {\n this._disabledHandles.add(handle);\n toggleNativeDragInteractions(handle, true);\n }\n }\n /**\n * Enables a handle, if it has been disabled.\n * @param handle Handle element to be enabled.\n */\n enableHandle(handle) {\n if (this._disabledHandles.has(handle)) {\n this._disabledHandles.delete(handle);\n toggleNativeDragInteractions(handle, this.disabled);\n }\n }\n /** Sets the layout direction of the draggable item. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /** Sets the container that the item is part of. */\n _withDropContainer(container) {\n this._dropContainer = container;\n }\n /**\n * Gets the current position in pixels the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n return { x: position.x, y: position.y };\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform.x = value.x;\n this._passiveTransform.y = value.y;\n if (!this._dropContainer) {\n this._applyRootElementTransform(value.x, value.y);\n }\n return this;\n }\n /**\n * Sets the container into which to insert the preview element.\n * @param value Container into which to insert the preview.\n */\n withPreviewContainer(value) {\n this._previewContainer = value;\n return this;\n }\n /** Updates the item's sort order based on the last-known pointer position. */\n _sortFromLastPointerPosition() {\n const position = this._lastKnownPointerPosition;\n if (position && this._dropContainer) {\n this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n }\n }\n /** Unsubscribes from the global subscriptions. */\n _removeListeners() {\n this._pointerMoveSubscription.unsubscribe();\n this._pointerUpSubscription.unsubscribe();\n this._scrollSubscription.unsubscribe();\n this._getShadowRoot()?.removeEventListener('selectstart', shadowDomSelectStart, activeCapturingEventOptions$1);\n }\n /** Destroys the preview element and its ViewRef. */\n _destroyPreview() {\n this._preview?.destroy();\n this._preview = null;\n }\n /** Destroys the placeholder element and its ViewRef. */\n _destroyPlaceholder() {\n this._placeholder?.remove();\n this._placeholderRef?.destroy();\n this._placeholder = this._placeholderRef = null;\n }\n /** Handler for the `mousedown`/`touchstart` events. */\n _pointerDown = (event) => {\n this.beforeStarted.next();\n // Delegate the event based on whether it started from a handle or the element itself.\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n this._initializeDragSequence(targetHandle, event);\n }\n }\n else if (!this.disabled) {\n this._initializeDragSequence(this._rootElement, event);\n }\n };\n /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n _pointerMove = (event) => {\n const pointerPosition = this._getPointerPositionOnPage(event);\n if (!this._hasStartedDragging()) {\n const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);\n const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);\n const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;\n // Only start dragging after the user has moved more than the minimum distance in either\n // direction. Note that this is preferable over doing something like `skip(minimumDistance)`\n // in the `pointerMove` subscription, because we're not guaranteed to have one move event\n // per pixel of movement (e.g. if the user moves their pointer quickly).\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);\n const container = this._dropContainer;\n if (!isDelayElapsed) {\n this._endDragSequence(event);\n return;\n }\n // Prevent other drag sequences from starting while something in the container is still\n // being dragged. This can happen while we're waiting for the drop animation to finish\n // and can cause errors, because some elements might still be moving around.\n if (!container || (!container.isDragging() && !container.isReceiving())) {\n // Prevent the default action as soon as the dragging sequence is considered as\n // \"started\" since waiting for the next event can allow the device to begin scrolling.\n if (event.cancelable) {\n event.preventDefault();\n }\n this._hasStartedDragging.set(true);\n this._ngZone.run(() => this._startDragSequence(event));\n }\n }\n return;\n }\n // We prevent the default action down here so that we know that dragging has started. This is\n // important for touch devices where doing this too early can unnecessarily block scrolling,\n // if there's a dragging delay.\n if (event.cancelable) {\n event.preventDefault();\n }\n const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n this._hasMoved = true;\n this._lastKnownPointerPosition = pointerPosition;\n this._updatePointerDirectionDelta(constrainedPointerPosition);\n if (this._dropContainer) {\n this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\n }\n else {\n // If there's a position constraint function, we want the element's top/left to be at the\n // specific position on the page. Use the initial position as a reference if that's the case.\n const offset = this.constrainPosition ? this._initialDomRect : this._pickupPositionOnPage;\n const activeTransform = this._activeTransform;\n activeTransform.x = constrainedPointerPosition.x - offset.x + this._passiveTransform.x;\n activeTransform.y = constrainedPointerPosition.y - offset.y + this._passiveTransform.y;\n this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n }\n // Since this event gets fired for every pixel while dragging, we only\n // want to fire it if the consumer opted into it. Also we have to\n // re-enter the zone because we run all of the events on the outside.\n if (this._moveEvents.observers.length) {\n this._ngZone.run(() => {\n this._moveEvents.next({\n source: this,\n pointerPosition: constrainedPointerPosition,\n event,\n distance: this._getDragDistance(constrainedPointerPosition),\n delta: this._pointerDirectionDelta,\n });\n });\n }\n };\n /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n _pointerUp = (event) => {\n this._endDragSequence(event);\n };\n /**\n * Clears subscriptions and stops the dragging sequence.\n * @param event Browser event object that ended the sequence.\n */\n _endDragSequence(event) {\n // Note that here we use `isDragging` from the service, rather than from `this`.\n // The difference is that the one from the service reflects whether a dragging sequence\n // has been initiated, whereas the one on `this` includes whether the user has passed\n // the minimum dragging threshold.\n if (!this._dragDropRegistry.isDragging(this)) {\n return;\n }\n this._removeListeners();\n this._dragDropRegistry.stopDragging(this);\n this._toggleNativeDragInteractions();\n if (this._handles) {\n this._rootElement.style.webkitTapHighlightColor =\n this._rootElementTapHighlight;\n }\n if (!this._hasStartedDragging()) {\n return;\n }\n this.released.next({ source: this, event });\n if (this._dropContainer) {\n // Stop scrolling immediately, instead of waiting for the animation to finish.\n this._dropContainer._stopScrolling();\n this._animatePreviewToPlaceholder().then(() => {\n this._cleanupDragArtifacts(event);\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n });\n }\n else {\n // Convert the active transform into a passive one. This means that next time\n // the user starts dragging the item, its position will be calculated relatively\n // to the new passive transform.\n this._passiveTransform.x = this._activeTransform.x;\n const pointerPosition = this._getPointerPositionOnPage(event);\n this._passiveTransform.y = this._activeTransform.y;\n this._ngZone.run(() => {\n this.ended.next({\n source: this,\n distance: this._getDragDistance(pointerPosition),\n dropPoint: pointerPosition,\n event,\n });\n });\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n }\n }\n /** Starts the dragging sequence. */\n _startDragSequence(event) {\n if (isTouchEvent(event)) {\n this._lastTouchEventTime = Date.now();\n }\n this._toggleNativeDragInteractions();\n // Needs to happen before the root element is moved.\n const shadowRoot = this._getShadowRoot();\n const dropContainer = this._dropContainer;\n if (shadowRoot) {\n // In some browsers the global `selectstart` that we maintain in the `DragDropRegistry`\n // doesn't cross the shadow boundary so we have to prevent it at the shadow root (see #28792).\n this._ngZone.runOutsideAngular(() => {\n shadowRoot.addEventListener('selectstart', shadowDomSelectStart, activeCapturingEventOptions$1);\n });\n }\n if (dropContainer) {\n const element = this._rootElement;\n const parent = element.parentNode;\n const placeholder = (this._placeholder = this._createPlaceholderElement());\n const anchor = (this._anchor =\n this._anchor ||\n this._document.createComment(typeof ngDevMode === 'undefined' || ngDevMode ? 'cdk-drag-anchor' : ''));\n // Insert an anchor node so that we can restore the element's position in the DOM.\n parent.insertBefore(anchor, element);\n // There's no risk of transforms stacking when inside a drop container so\n // we can keep the initial transform up to date any time dragging starts.\n this._initialTransform = element.style.transform || '';\n // Create the preview after the initial transform has\n // been cached, because it can be affected by the transform.\n this._preview = new PreviewRef(this._document, this._rootElement, this._direction, this._initialDomRect, this._previewTemplate || null, this.previewClass || null, this._pickupPositionOnPage, this._initialTransform, this._config.zIndex || 1000);\n this._preview.attach(this._getPreviewInsertionPoint(parent, shadowRoot));\n // We move the element out at the end of the body and we make it hidden, because keeping it in\n // place will throw off the consumer's `:last-child` selectors. We can't remove the element\n // from the DOM completely, because iOS will stop firing all subsequent events in the chain.\n toggleVisibility(element, false, dragImportantProperties);\n this._document.body.appendChild(parent.replaceChild(placeholder, element));\n this.started.next({ source: this, event }); // Emit before notifying the container.\n dropContainer.start();\n this._initialContainer = dropContainer;\n this._initialIndex = dropContainer.getItemIndex(this);\n }\n else {\n this.started.next({ source: this, event });\n this._initialContainer = this._initialIndex = undefined;\n }\n // Important to run after we've called `start` on the parent container\n // so that it has had time to resolve its scrollable parents.\n this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);\n }\n /**\n * Sets up the different variables and subscriptions\n * that will be necessary for the dragging sequence.\n * @param referenceElement Element that started the drag sequence.\n * @param event Browser event object that started the sequence.\n */\n _initializeDragSequence(referenceElement, event) {\n // Stop propagation if the item is inside another\n // draggable so we don't start multiple drag sequences.\n if (this._parentDragRef) {\n event.stopPropagation();\n }\n const isDragging = this.isDragging();\n const isTouchSequence = isTouchEvent(event);\n const isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;\n const rootElement = this._rootElement;\n const target = _getEventTarget(event);\n const isSyntheticEvent = !isTouchSequence &&\n this._lastTouchEventTime &&\n this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n const isFakeEvent = isTouchSequence\n ? isFakeTouchstartFromScreenReader(event)\n : isFakeMousedownFromScreenReader(event);\n // If the event started from an element with the native HTML drag&drop, it'll interfere\n // with our own dragging (e.g. `img` tags do it by default). Prevent the default action\n // to stop it from happening. Note that preventing on `dragstart` also seems to work, but\n // it's flaky and it fails if the user drags it away quickly. Also note that we only want\n // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`\n // events from firing on touch devices.\n if (target && target.draggable && event.type === 'mousedown') {\n event.preventDefault();\n }\n // Abort if the user is already dragging or is using a mouse button other than the primary one.\n if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {\n return;\n }\n // If we've got handles, we need to disable the tap highlight on the entire root element,\n // otherwise iOS will still add it, even though all the drag interactions on the handle\n // are disabled.\n if (this._handles.length) {\n const rootStyles = rootElement.style;\n this._rootElementTapHighlight = rootStyles.webkitTapHighlightColor || '';\n rootStyles.webkitTapHighlightColor = 'transparent';\n }\n this._hasMoved = false;\n this._hasStartedDragging.set(this._hasMoved);\n // Avoid multiple subscriptions and memory leaks when multi touch\n // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)\n this._removeListeners();\n this._initialDomRect = this._rootElement.getBoundingClientRect();\n this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);\n this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);\n this._scrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));\n if (this._boundaryElement) {\n this._boundaryRect = getMutableClientRect(this._boundaryElement);\n }\n // If we have a custom preview we can't know ahead of time how large it'll be so we position\n // it next to the cursor. The exception is when the consumer has opted into making the preview\n // the same size as the root element, in which case we do know the size.\n const previewTemplate = this._previewTemplate;\n this._pickupPositionInElement =\n previewTemplate && previewTemplate.template && !previewTemplate.matchSize\n ? { x: 0, y: 0 }\n : this._getPointerPositionInElement(this._initialDomRect, referenceElement, event);\n const pointerPosition = (this._pickupPositionOnPage =\n this._lastKnownPointerPosition =\n this._getPointerPositionOnPage(event));\n this._pointerDirectionDelta = { x: 0, y: 0 };\n this._pointerPositionAtLastDirectionChange = { x: pointerPosition.x, y: pointerPosition.y };\n this._dragStartTime = Date.now();\n this._dragDropRegistry.startDragging(this, event);\n }\n /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n _cleanupDragArtifacts(event) {\n // Restore the element's visibility and insert it at its old position in the DOM.\n // It's important that we maintain the position, because moving the element around in the DOM\n // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,\n // while moving the existing elements in all other cases.\n toggleVisibility(this._rootElement, true, dragImportantProperties);\n this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);\n this._destroyPreview();\n this._destroyPlaceholder();\n this._initialDomRect =\n this._boundaryRect =\n this._previewRect =\n this._initialTransform =\n undefined;\n // Re-enter the NgZone since we bound `document` events on the outside.\n this._ngZone.run(() => {\n const container = this._dropContainer;\n const currentIndex = container.getItemIndex(this);\n const pointerPosition = this._getPointerPositionOnPage(event);\n const distance = this._getDragDistance(pointerPosition);\n const isPointerOverContainer = container._isOverContainer(pointerPosition.x, pointerPosition.y);\n this.ended.next({ source: this, distance, dropPoint: pointerPosition, event });\n this.dropped.next({\n item: this,\n currentIndex,\n previousIndex: this._initialIndex,\n container: container,\n previousContainer: this._initialContainer,\n isPointerOverContainer,\n distance,\n dropPoint: pointerPosition,\n event,\n });\n container.drop(this, currentIndex, this._initialIndex, this._initialContainer, isPointerOverContainer, distance, pointerPosition, event);\n this._dropContainer = this._initialContainer;\n });\n }\n /**\n * Updates the item's position in its drop container, or moves it\n * into a new one, depending on its current drag position.\n */\n _updateActiveDropContainer({ x, y }, { x: rawX, y: rawY }) {\n // Drop container that draggable has been moved into.\n let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n // If we couldn't find a new container to move the item into, and the item has left its\n // initial container, check whether the it's over the initial container. This handles the\n // case where two containers are connected one way and the user tries to undo dragging an\n // item into a new container.\n if (!newContainer &&\n this._dropContainer !== this._initialContainer &&\n this._initialContainer._isOverContainer(x, y)) {\n newContainer = this._initialContainer;\n }\n if (newContainer && newContainer !== this._dropContainer) {\n this._ngZone.run(() => {\n // Notify the old container that the item has left.\n this.exited.next({ item: this, container: this._dropContainer });\n this._dropContainer.exit(this);\n // Notify the new container that the item has entered.\n this._dropContainer = newContainer;\n this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&\n // If we're re-entering the initial container and sorting is disabled,\n // put item the into its starting index to begin with.\n newContainer.sortingDisabled\n ? this._initialIndex\n : undefined);\n this.entered.next({\n item: this,\n container: newContainer,\n currentIndex: newContainer.getItemIndex(this),\n });\n });\n }\n // Dragging may have been interrupted as a result of the events above.\n if (this.isDragging()) {\n this._dropContainer._startScrollingIfNecessary(rawX, rawY);\n this._dropContainer._sortItem(this, x, y, this._pointerDirectionDelta);\n if (this.constrainPosition) {\n this._applyPreviewTransform(x, y);\n }\n else {\n this._applyPreviewTransform(x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);\n }\n }\n }\n /**\n * Animates the preview element from its current position to the location of the drop placeholder.\n * @returns Promise that resolves when the animation completes.\n */\n _animatePreviewToPlaceholder() {\n // If the user hasn't moved yet, the transitionend event won't fire.\n if (!this._hasMoved) {\n return Promise.resolve();\n }\n const placeholderRect = this._placeholder.getBoundingClientRect();\n // Apply the class that adds a transition to the preview.\n this._preview.addClass('cdk-drag-animating');\n // Move the preview to the placeholder position.\n this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);\n // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since\n // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to\n // apply its style, we take advantage of the available info to figure out whether we need to\n // bind the event in the first place.\n const duration = this._preview.getTransitionDuration();\n if (duration === 0) {\n return Promise.resolve();\n }\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n const handler = ((event) => {\n if (!event ||\n (this._preview &&\n _getEventTarget(event) === this._preview.element &&\n event.propertyName === 'transform')) {\n this._preview?.removeEventListener('transitionend', handler);\n resolve();\n clearTimeout(timeout);\n }\n });\n // If a transition is short enough, the browser might not fire the `transitionend` event.\n // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll\n // fire if the transition hasn't completed when it was supposed to.\n const timeout = setTimeout(handler, duration * 1.5);\n this._preview.addEventListener('transitionend', handler);\n });\n });\n }\n /** Creates an element that will be shown instead of the current element while dragging. */\n _createPlaceholderElement() {\n const placeholderConfig = this._placeholderTemplate;\n const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n let placeholder;\n if (placeholderTemplate) {\n this._placeholderRef = placeholderConfig.viewContainer.createEmbeddedView(placeholderTemplate, placeholderConfig.context);\n this._placeholderRef.detectChanges();\n placeholder = getRootNode(this._placeholderRef, this._document);\n }\n else {\n placeholder = deepCloneNode(this._rootElement);\n }\n // Stop pointer events on the preview so the user can't\n // interact with it while the preview is animating.\n placeholder.style.pointerEvents = 'none';\n placeholder.classList.add('cdk-drag-placeholder');\n return placeholder;\n }\n /**\n * Figures out the coordinates at which an element was picked up.\n * @param referenceElement Element that initiated the dragging.\n * @param event Event that initiated the dragging.\n */\n _getPointerPositionInElement(elementRect, referenceElement, event) {\n const handleElement = referenceElement === this._rootElement ? null : referenceElement;\n const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;\n const point = isTouchEvent(event) ? event.targetTouches[0] : event;\n const scrollPosition = this._getViewportScrollPosition();\n const x = point.pageX - referenceRect.left - scrollPosition.left;\n const y = point.pageY - referenceRect.top - scrollPosition.top;\n return {\n x: referenceRect.left - elementRect.left + x,\n y: referenceRect.top - elementRect.top + y,\n };\n }\n /** Determines the point of the page that was touched by the user. */\n _getPointerPositionOnPage(event) {\n const scrollPosition = this._getViewportScrollPosition();\n const point = isTouchEvent(event)\n ? // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`\n // to have a value, but Firefox in device emulation mode has a bug where both can be empty\n // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid\n // throwing an error. The value returned here will be incorrect, but since this only\n // breaks inside a developer tool and the value is only used for secondary information,\n // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.\n event.touches[0] || event.changedTouches[0] || { pageX: 0, pageY: 0 }\n : event;\n const x = point.pageX - scrollPosition.left;\n const y = point.pageY - scrollPosition.top;\n // if dragging SVG element, try to convert from the screen coordinate system to the SVG\n // coordinate system\n if (this._ownerSVGElement) {\n const svgMatrix = this._ownerSVGElement.getScreenCTM();\n if (svgMatrix) {\n const svgPoint = this._ownerSVGElement.createSVGPoint();\n svgPoint.x = x;\n svgPoint.y = y;\n return svgPoint.matrixTransform(svgMatrix.inverse());\n }\n }\n return { x, y };\n }\n /** Gets the pointer position on the page, accounting for any position constraints. */\n _getConstrainedPointerPosition(point) {\n const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n let { x, y } = this.constrainPosition\n ? this.constrainPosition(point, this, this._initialDomRect, this._pickupPositionInElement)\n : point;\n if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n y =\n this._pickupPositionOnPage.y -\n (this.constrainPosition ? this._pickupPositionInElement.y : 0);\n }\n else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n x =\n this._pickupPositionOnPage.x -\n (this.constrainPosition ? this._pickupPositionInElement.x : 0);\n }\n if (this._boundaryRect) {\n // If not using a custom constrain we need to account for the pickup position in the element\n // otherwise we do not need to do this, as it has already been accounted for\n const { x: pickupX, y: pickupY } = !this.constrainPosition\n ? this._pickupPositionInElement\n : { x: 0, y: 0 };\n const boundaryRect = this._boundaryRect;\n const { width: previewWidth, height: previewHeight } = this._getPreviewRect();\n const minY = boundaryRect.top + pickupY;\n const maxY = boundaryRect.bottom - (previewHeight - pickupY);\n const minX = boundaryRect.left + pickupX;\n const maxX = boundaryRect.right - (previewWidth - pickupX);\n x = clamp$1(x, minX, maxX);\n y = clamp$1(y, minY, maxY);\n }\n return { x, y };\n }\n /** Updates the current drag delta, based on the user's current pointer position on the page. */\n _updatePointerDirectionDelta(pointerPositionOnPage) {\n const { x, y } = pointerPositionOnPage;\n const delta = this._pointerDirectionDelta;\n const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n // Amount of pixels the user has dragged since the last time the direction changed.\n const changeX = Math.abs(x - positionSinceLastChange.x);\n const changeY = Math.abs(y - positionSinceLastChange.y);\n // Because we handle pointer events on a per-pixel basis, we don't want the delta\n // to change for every pixel, otherwise anything that depends on it can look erratic.\n // To make the delta more consistent, we track how much the user has moved since the last\n // delta change and we only update it after it has reached a certain threshold.\n if (changeX > this._config.pointerDirectionChangeThreshold) {\n delta.x = x > positionSinceLastChange.x ? 1 : -1;\n positionSinceLastChange.x = x;\n }\n if (changeY > this._config.pointerDirectionChangeThreshold) {\n delta.y = y > positionSinceLastChange.y ? 1 : -1;\n positionSinceLastChange.y = y;\n }\n return delta;\n }\n /** Toggles the native drag interactions, based on how many handles are registered. */\n _toggleNativeDragInteractions() {\n if (!this._rootElement || !this._handles) {\n return;\n }\n const shouldEnable = this._handles.length > 0 || !this.isDragging();\n if (shouldEnable !== this._nativeInteractionsEnabled) {\n this._nativeInteractionsEnabled = shouldEnable;\n toggleNativeDragInteractions(this._rootElement, shouldEnable);\n }\n }\n /** Removes the manually-added event listeners from the root element. */\n _removeRootElementListeners(element) {\n element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.removeEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n }\n /**\n * Applies a `transform` to the root element, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyRootElementTransform(x, y) {\n const scale = 1 / this.scale;\n const transform = getTransform(x * scale, y * scale);\n const styles = this._rootElement.style;\n // Cache the previous transform amount only after the first drag sequence, because\n // we don't want our own transforms to stack on top of each other.\n // Should be excluded none because none + translate3d(x, y, x) is invalid css\n if (this._initialTransform == null) {\n this._initialTransform =\n styles.transform && styles.transform != 'none' ? styles.transform : '';\n }\n // Preserve the previous `transform` value, if there was one. Note that we apply our own\n // transform before the user's, because things like rotation can affect which direction\n // the element will be translated towards.\n styles.transform = combineTransforms(transform, this._initialTransform);\n }\n /**\n * Applies a `transform` to the preview, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyPreviewTransform(x, y) {\n // Only apply the initial transform if the preview is a clone of the original element, otherwise\n // it could be completely different and the transform might not make sense anymore.\n const initialTransform = this._previewTemplate?.template ? undefined : this._initialTransform;\n const transform = getTransform(x, y);\n this._preview.setTransform(combineTransforms(transform, initialTransform));\n }\n /**\n * Gets the distance that the user has dragged during the current drag sequence.\n * @param currentPosition Current position of the user's pointer.\n */\n _getDragDistance(currentPosition) {\n const pickupPosition = this._pickupPositionOnPage;\n if (pickupPosition) {\n return { x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y };\n }\n return { x: 0, y: 0 };\n }\n /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n _cleanupCachedDimensions() {\n this._boundaryRect = this._previewRect = undefined;\n this._parentPositions.clear();\n }\n /**\n * Checks whether the element is still inside its boundary after the viewport has been resized.\n * If not, the position is adjusted so that the element fits again.\n */\n _containInsideBoundaryOnResize() {\n let { x, y } = this._passiveTransform;\n if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n return;\n }\n // Note: don't use `_clientRectAtStart` here, because we want the latest position.\n const elementRect = this._rootElement.getBoundingClientRect();\n const boundaryRect = this._boundaryElement.getBoundingClientRect();\n // It's possible that the element got hidden away after dragging (e.g. by switching to a\n // different tab). Don't do anything in this case so we don't clear the user's position.\n if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||\n (elementRect.width === 0 && elementRect.height === 0)) {\n return;\n }\n const leftOverflow = boundaryRect.left - elementRect.left;\n const rightOverflow = elementRect.right - boundaryRect.right;\n const topOverflow = boundaryRect.top - elementRect.top;\n const bottomOverflow = elementRect.bottom - boundaryRect.bottom;\n // If the element has become wider than the boundary, we can't\n // do much to make it fit so we just anchor it to the left.\n if (boundaryRect.width > elementRect.width) {\n if (leftOverflow > 0) {\n x += leftOverflow;\n }\n if (rightOverflow > 0) {\n x -= rightOverflow;\n }\n }\n else {\n x = 0;\n }\n // If the element has become taller than the boundary, we can't\n // do much to make it fit so we just anchor it to the top.\n if (boundaryRect.height > elementRect.height) {\n if (topOverflow > 0) {\n y += topOverflow;\n }\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n }\n }\n else {\n y = 0;\n }\n if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n this.setFreeDragPosition({ y, x });\n }\n }\n /** Gets the drag start delay, based on the event type. */\n _getDragStartDelay(event) {\n const value = this.dragStartDelay;\n if (typeof value === 'number') {\n return value;\n }\n else if (isTouchEvent(event)) {\n return value.touch;\n }\n return value ? value.mouse : 0;\n }\n /** Updates the internal state of the draggable element when scrolling has occurred. */\n _updateOnScroll(event) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n const target = _getEventTarget(event);\n // DOMRect dimensions are based on the scroll position of the page and its parent\n // node so we have to update the cached boundary DOMRect if the user has scrolled.\n if (this._boundaryRect &&\n target !== this._boundaryElement &&\n target.contains(this._boundaryElement)) {\n adjustDomRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n }\n this._pickupPositionOnPage.x += scrollDifference.left;\n this._pickupPositionOnPage.y += scrollDifference.top;\n // If we're in free drag mode, we have to update the active transform, because\n // it isn't relative to the viewport like the preview inside a drop list.\n if (!this._dropContainer) {\n this._activeTransform.x -= scrollDifference.left;\n this._activeTransform.y -= scrollDifference.top;\n this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);\n }\n }\n }\n /** Gets the scroll position of the viewport. */\n _getViewportScrollPosition() {\n return (this._parentPositions.positions.get(this._document)?.scrollPosition ||\n this._parentPositions.getViewportScrollPosition());\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (this._cachedShadowRoot === undefined) {\n this._cachedShadowRoot = _getShadowRoot(this._rootElement);\n }\n return this._cachedShadowRoot;\n }\n /** Gets the element into which the drag preview should be inserted. */\n _getPreviewInsertionPoint(initialParent, shadowRoot) {\n const previewContainer = this._previewContainer || 'global';\n if (previewContainer === 'parent') {\n return initialParent;\n }\n if (previewContainer === 'global') {\n const documentRef = this._document;\n // We can't use the body if the user is in fullscreen mode,\n // because the preview will render under the fullscreen element.\n // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.\n return (shadowRoot ||\n documentRef.fullscreenElement ||\n documentRef.webkitFullscreenElement ||\n documentRef.mozFullScreenElement ||\n documentRef.msFullscreenElement ||\n documentRef.body);\n }\n return coerceElement(previewContainer);\n }\n /** Lazily resolves and returns the dimensions of the preview. */\n _getPreviewRect() {\n // Cache the preview element rect if we haven't cached it already or if\n // we cached it too early before the element dimensions were computed.\n if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {\n this._previewRect = this._preview\n ? this._preview.getBoundingClientRect()\n : this._initialDomRect;\n }\n return this._previewRect;\n }\n /** Handles a native `dragstart` event. */\n _nativeDragStart = (event) => {\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n event.preventDefault();\n }\n }\n else if (!this.disabled) {\n // Usually this isn't necessary since the we prevent the default action in `pointerDown`,\n // but some cases like dragging of links can slip through (see #24403).\n event.preventDefault();\n }\n };\n /** Gets a handle that is the target of an event. */\n _getTargetHandle(event) {\n return this._handles.find(handle => {\n return event.target && (event.target === handle || handle.contains(event.target));\n });\n }\n}\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp$1(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/** Callback invoked for `selectstart` events inside the shadow DOM. */\nfunction shadowDomSelectStart(event) {\n event.preventDefault();\n}\n\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nfunction moveItemInArray(array, fromIndex, toIndex) {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n if (from === to) {\n return;\n }\n const target = array[from];\n const delta = to < from ? -1 : 1;\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n array[to] = target;\n}\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nfunction transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\n}\n/**\n * Copies an item from one array to another, leaving it in its\n * original position in current array.\n * @param currentArray Array from which to copy the item.\n * @param targetArray Array into which is copy the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n *\n */\nfunction copyArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray[currentIndex]);\n }\n}\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value, max) {\n return Math.max(0, Math.min(max, value));\n}\n\n/**\n * Strategy that only supports sorting along a single axis.\n * Items are reordered using CSS transforms which allows for sorting to be animated.\n * @docs-private\n */\nclass SingleAxisSortStrategy {\n _dragDropRegistry;\n /** Root element container of the drop list. */\n _element;\n /** Function used to determine if an item can be sorted into a specific index. */\n _sortPredicate;\n /** Cache of the dimensions of all the items inside the container. */\n _itemPositions = [];\n /**\n * Draggable items that are currently active inside the container. Includes the items\n * that were there at the start of the sequence, as well as any items that have been dragged\n * in, but haven't been dropped yet.\n */\n _activeDraggables;\n /** Direction in which the list is oriented. */\n orientation = 'vertical';\n /** Layout direction of the drop list. */\n direction;\n constructor(_dragDropRegistry) {\n this._dragDropRegistry = _dragDropRegistry;\n }\n /**\n * Keeps track of the item that was last swapped with the dragged item, as well as what direction\n * the pointer was moving in when the swap occurred and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n _previousSwap = {\n drag: null,\n delta: 0,\n overlaps: false,\n };\n /**\n * To be called when the drag sequence starts.\n * @param items Items that are currently in the list.\n */\n start(items) {\n this.withItems(items);\n }\n /**\n * To be called when an item is being sorted.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n sort(item, pointerX, pointerY, pointerDelta) {\n const siblings = this._itemPositions;\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n if (newIndex === -1 && siblings.length > 0) {\n return null;\n }\n const isHorizontal = this.orientation === 'horizontal';\n const currentIndex = siblings.findIndex(currentItem => currentItem.drag === item);\n const siblingAtNewPosition = siblings[newIndex];\n const currentPosition = siblings[currentIndex].clientRect;\n const newPosition = siblingAtNewPosition.clientRect;\n const delta = currentIndex > newIndex ? 1 : -1;\n // How many pixels the item's placeholder should be offset.\n const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n // How many pixels all the other items should be offset.\n const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n // Save the previous order of the items before moving the item to its new index.\n // We use this to check whether an item has been moved as a result of the sorting.\n const oldOrder = siblings.slice();\n // Shuffle the array in place.\n moveItemInArray(siblings, currentIndex, newIndex);\n siblings.forEach((sibling, index) => {\n // Don't do anything if the position hasn't changed.\n if (oldOrder[index] === sibling) {\n return;\n }\n const isDraggedItem = sibling.drag === item;\n const offset = isDraggedItem ? itemOffset : siblingOffset;\n const elementToOffset = isDraggedItem\n ? item.getPlaceholderElement()\n : sibling.drag.getRootElement();\n // Update the offset to reflect the new position.\n sibling.offset += offset;\n const transformAmount = Math.round(sibling.offset * (1 / sibling.drag.scale));\n // Since we're moving the items with a `transform`, we need to adjust their cached\n // client rects to reflect their new position, as well as swap their positions in the cache.\n // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the\n // elements may be mid-animation which will give us a wrong result.\n if (isHorizontal) {\n // Round the transforms since some browsers will\n // blur the elements, for sub-pixel transforms.\n elementToOffset.style.transform = combineTransforms(`translate3d(${transformAmount}px, 0, 0)`, sibling.initialTransform);\n adjustDomRect(sibling.clientRect, 0, offset);\n }\n else {\n elementToOffset.style.transform = combineTransforms(`translate3d(0, ${transformAmount}px, 0)`, sibling.initialTransform);\n adjustDomRect(sibling.clientRect, offset, 0);\n }\n });\n // Note that it's important that we do this after the client rects have been adjusted.\n this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);\n this._previousSwap.drag = siblingAtNewPosition.drag;\n this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;\n return { previousIndex: currentIndex, currentIndex: newIndex };\n }\n /**\n * Called when an item is being moved into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n const newIndex = index == null || index < 0\n ? // We use the coordinates of where the item entered the drop\n // zone to figure out at which index it should be inserted.\n this._getItemIndexFromPointerPosition(item, pointerX, pointerY)\n : index;\n const activeDraggables = this._activeDraggables;\n const currentIndex = activeDraggables.indexOf(item);\n const placeholder = item.getPlaceholderElement();\n let newPositionReference = activeDraggables[newIndex];\n // If the item at the new position is the same as the item that is being dragged,\n // it means that we're trying to restore the item to its initial position. In this\n // case we should use the next item from the list as the reference.\n if (newPositionReference === item) {\n newPositionReference = activeDraggables[newIndex + 1];\n }\n // If we didn't find a new position reference, it means that either the item didn't start off\n // in this container, or that the item requested to be inserted at the end of the list.\n if (!newPositionReference &&\n (newIndex == null || newIndex === -1 || newIndex < activeDraggables.length - 1) &&\n this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n newPositionReference = activeDraggables[0];\n }\n // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it\n // into another container and back again), we have to ensure that it isn't duplicated.\n if (currentIndex > -1) {\n activeDraggables.splice(currentIndex, 1);\n }\n // Don't use items that are being dragged as a reference, because\n // their element has been moved down to the bottom of the body.\n if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {\n const element = newPositionReference.getRootElement();\n element.parentElement.insertBefore(placeholder, element);\n activeDraggables.splice(newIndex, 0, item);\n }\n else {\n this._element.appendChild(placeholder);\n activeDraggables.push(item);\n }\n // The transform needs to be cleared so it doesn't throw off the measurements.\n placeholder.style.transform = '';\n // Note that usually `start` is called together with `enter` when an item goes into a new\n // container. This will cache item positions, but we need to refresh them since the amount\n // of items has changed.\n this._cacheItemPositions();\n }\n /** Sets the items that are currently part of the list. */\n withItems(items) {\n this._activeDraggables = items.slice();\n this._cacheItemPositions();\n }\n /** Assigns a sort predicate to the strategy. */\n withSortPredicate(predicate) {\n this._sortPredicate = predicate;\n }\n /** Resets the strategy to its initial state before dragging was started. */\n reset() {\n // TODO(crisbeto): may have to wait for the animations to finish.\n this._activeDraggables?.forEach(item => {\n const rootElement = item.getRootElement();\n if (rootElement) {\n const initialTransform = this._itemPositions.find(p => p.drag === item)?.initialTransform;\n rootElement.style.transform = initialTransform || '';\n }\n });\n this._itemPositions = [];\n this._activeDraggables = [];\n this._previousSwap.drag = null;\n this._previousSwap.delta = 0;\n this._previousSwap.overlaps = false;\n }\n /**\n * Gets a snapshot of items currently in the list.\n * Can include items that we dragged in from another list.\n */\n getActiveItemsSnapshot() {\n return this._activeDraggables;\n }\n /** Gets the index of a specific item. */\n getItemIndex(item) {\n // Items are sorted always by top/left in the cache, however they flow differently in RTL.\n // The rest of the logic still stands no matter what orientation we're in, however\n // we need to invert the array when determining the index.\n const items = this.orientation === 'horizontal' && this.direction === 'rtl'\n ? this._itemPositions.slice().reverse()\n : this._itemPositions;\n return items.findIndex(currentItem => currentItem.drag === item);\n }\n /** Used to notify the strategy that the scroll position has changed. */\n updateOnScroll(topDifference, leftDifference) {\n // Since we know the amount that the user has scrolled we can shift all of the\n // client rectangles ourselves. This is cheaper than re-measuring everything and\n // we can avoid inconsistent behavior where we might be measuring the element before\n // its position has changed.\n this._itemPositions.forEach(({ clientRect }) => {\n adjustDomRect(clientRect, topDifference, leftDifference);\n });\n // We need two loops for this, because we want all of the cached\n // positions to be up-to-date before we re-sort the item.\n this._itemPositions.forEach(({ drag }) => {\n if (this._dragDropRegistry.isDragging(drag)) {\n // We need to re-sort the item manually, because the pointer move\n // events won't be dispatched while the user is scrolling.\n drag._sortFromLastPointerPosition();\n }\n });\n }\n withElementContainer(container) {\n this._element = container;\n }\n /** Refreshes the position cache of the items and sibling containers. */\n _cacheItemPositions() {\n const isHorizontal = this.orientation === 'horizontal';\n this._itemPositions = this._activeDraggables\n .map(drag => {\n const elementToMeasure = drag.getVisibleElement();\n return {\n drag,\n offset: 0,\n initialTransform: elementToMeasure.style.transform || '',\n clientRect: getMutableClientRect(elementToMeasure),\n };\n })\n .sort((a, b) => {\n return isHorizontal\n ? a.clientRect.left - b.clientRect.left\n : a.clientRect.top - b.clientRect.top;\n });\n }\n /**\n * Gets the offset in pixels by which the item that is being dragged should be moved.\n * @param currentPosition Current position of the item.\n * @param newPosition Position of the item where the current item should be moved.\n * @param delta Direction in which the user is moving.\n */\n _getItemOffsetPx(currentPosition, newPosition, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n let itemOffset = isHorizontal\n ? newPosition.left - currentPosition.left\n : newPosition.top - currentPosition.top;\n // Account for differences in the item width/height.\n if (delta === -1) {\n itemOffset += isHorizontal\n ? newPosition.width - currentPosition.width\n : newPosition.height - currentPosition.height;\n }\n return itemOffset;\n }\n /**\n * Gets the offset in pixels by which the items that aren't being dragged should be moved.\n * @param currentIndex Index of the item currently being dragged.\n * @param siblings All of the items in the list.\n * @param delta Direction in which the user is moving.\n */\n _getSiblingOffsetPx(currentIndex, siblings, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n const currentPosition = siblings[currentIndex].clientRect;\n const immediateSibling = siblings[currentIndex + delta * -1];\n let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;\n if (immediateSibling) {\n const start = isHorizontal ? 'left' : 'top';\n const end = isHorizontal ? 'right' : 'bottom';\n // Get the spacing between the start of the current item and the end of the one immediately\n // after it in the direction in which the user is dragging, or vice versa. We add it to the\n // offset in order to push the element to where it will be when it's inline and is influenced\n // by the `margin` of its siblings.\n if (delta === -1) {\n siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];\n }\n else {\n siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n }\n }\n return siblingOffset;\n }\n /**\n * Checks if pointer is entering in the first position\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n */\n _shouldEnterAsFirstChild(pointerX, pointerY) {\n if (!this._activeDraggables.length) {\n return false;\n }\n const itemPositions = this._itemPositions;\n const isHorizontal = this.orientation === 'horizontal';\n // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index\n // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)\n const reversed = itemPositions[0].drag !== this._activeDraggables[0];\n if (reversed) {\n const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;\n return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;\n }\n else {\n const firstItemRect = itemPositions[0].clientRect;\n return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n const index = this._itemPositions.findIndex(({ drag, clientRect }) => {\n // Skip the item itself.\n if (drag === item) {\n return false;\n }\n if (delta) {\n const direction = isHorizontal ? delta.x : delta.y;\n // If the user is still hovering over the same item as last time, their cursor hasn't left\n // the item after we made the swap, and they didn't change the direction in which they're\n // dragging, we don't consider it a direction swap.\n if (drag === this._previousSwap.drag &&\n this._previousSwap.overlaps &&\n direction === this._previousSwap.delta) {\n return false;\n }\n }\n return isHorizontal\n ? // Round these down since most browsers report client rects with\n // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.\n pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right)\n : pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);\n });\n return index === -1 || !this._sortPredicate(index, item) ? -1 : index;\n }\n}\n\n/**\n * Strategy that only supports sorting on a list that might wrap.\n * Items are reordered by moving their DOM nodes around.\n * @docs-private\n */\nclass MixedSortStrategy {\n _document;\n _dragDropRegistry;\n /** Root element container of the drop list. */\n _element;\n /** Function used to determine if an item can be sorted into a specific index. */\n _sortPredicate;\n /** Lazily-resolved root node containing the list. Use `_getRootNode` to read this. */\n _rootNode;\n /**\n * Draggable items that are currently active inside the container. Includes the items\n * that were there at the start of the sequence, as well as any items that have been dragged\n * in, but haven't been dropped yet.\n */\n _activeItems;\n /**\n * Keeps track of the item that was last swapped with the dragged item, as well as what direction\n * the pointer was moving in when the swap occurred and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n _previousSwap = {\n drag: null,\n deltaX: 0,\n deltaY: 0,\n overlaps: false,\n };\n /**\n * Keeps track of the relationship between a node and its next sibling. This information\n * is used to restore the DOM to the order it was in before dragging started.\n */\n _relatedNodes = [];\n constructor(_document, _dragDropRegistry) {\n this._document = _document;\n this._dragDropRegistry = _dragDropRegistry;\n }\n /**\n * To be called when the drag sequence starts.\n * @param items Items that are currently in the list.\n */\n start(items) {\n const childNodes = this._element.childNodes;\n this._relatedNodes = [];\n for (let i = 0; i < childNodes.length; i++) {\n const node = childNodes[i];\n this._relatedNodes.push([node, node.nextSibling]);\n }\n this.withItems(items);\n }\n /**\n * To be called when an item is being sorted.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n sort(item, pointerX, pointerY, pointerDelta) {\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY);\n const previousSwap = this._previousSwap;\n if (newIndex === -1 || this._activeItems[newIndex] === item) {\n return null;\n }\n const toSwapWith = this._activeItems[newIndex];\n // Prevent too many swaps over the same item.\n if (previousSwap.drag === toSwapWith &&\n previousSwap.overlaps &&\n previousSwap.deltaX === pointerDelta.x &&\n previousSwap.deltaY === pointerDelta.y) {\n return null;\n }\n const previousIndex = this.getItemIndex(item);\n const current = item.getPlaceholderElement();\n const overlapElement = toSwapWith.getRootElement();\n if (newIndex > previousIndex) {\n overlapElement.after(current);\n }\n else {\n overlapElement.before(current);\n }\n moveItemInArray(this._activeItems, previousIndex, newIndex);\n const newOverlapElement = this._getRootNode().elementFromPoint(pointerX, pointerY);\n // Note: it's tempting to save the entire `pointerDelta` object here, however that'll\n // break this functionality, because the same object is passed for all `sort` calls.\n previousSwap.deltaX = pointerDelta.x;\n previousSwap.deltaY = pointerDelta.y;\n previousSwap.drag = toSwapWith;\n previousSwap.overlaps =\n overlapElement === newOverlapElement || overlapElement.contains(newOverlapElement);\n return {\n previousIndex,\n currentIndex: newIndex,\n };\n }\n /**\n * Called when an item is being moved into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n let enterIndex = index == null || index < 0\n ? this._getItemIndexFromPointerPosition(item, pointerX, pointerY)\n : index;\n // In some cases (e.g. when the container has padding) we might not be able to figure\n // out which item to insert the dragged item next to, because the pointer didn't overlap\n // with anything. In that case we find the item that's closest to the pointer.\n if (enterIndex === -1) {\n enterIndex = this._getClosestItemIndexToPointer(item, pointerX, pointerY);\n }\n const targetItem = this._activeItems[enterIndex];\n const currentIndex = this._activeItems.indexOf(item);\n if (currentIndex > -1) {\n this._activeItems.splice(currentIndex, 1);\n }\n if (targetItem && !this._dragDropRegistry.isDragging(targetItem)) {\n this._activeItems.splice(enterIndex, 0, item);\n targetItem.getRootElement().before(item.getPlaceholderElement());\n }\n else {\n this._activeItems.push(item);\n this._element.appendChild(item.getPlaceholderElement());\n }\n }\n /** Sets the items that are currently part of the list. */\n withItems(items) {\n this._activeItems = items.slice();\n }\n /** Assigns a sort predicate to the strategy. */\n withSortPredicate(predicate) {\n this._sortPredicate = predicate;\n }\n /** Resets the strategy to its initial state before dragging was started. */\n reset() {\n const root = this._element;\n const previousSwap = this._previousSwap;\n // Moving elements around in the DOM can break things like the `@for` loop, because it\n // uses comment nodes to know where to insert elements. To avoid such issues, we restore\n // the DOM nodes in the list to their original order when the list is reset.\n // Note that this could be simpler if we just saved all the nodes, cleared the root\n // and then appended them in the original order. We don't do it, because it can break\n // down depending on when the snapshot was taken. E.g. we may end up snapshotting the\n // placeholder element which is removed after dragging.\n for (let i = this._relatedNodes.length - 1; i > -1; i--) {\n const [node, nextSibling] = this._relatedNodes[i];\n if (node.parentNode === root && node.nextSibling !== nextSibling) {\n if (nextSibling === null) {\n root.appendChild(node);\n }\n else if (nextSibling.parentNode === root) {\n root.insertBefore(node, nextSibling);\n }\n }\n }\n this._relatedNodes = [];\n this._activeItems = [];\n previousSwap.drag = null;\n previousSwap.deltaX = previousSwap.deltaY = 0;\n previousSwap.overlaps = false;\n }\n /**\n * Gets a snapshot of items currently in the list.\n * Can include items that we dragged in from another list.\n */\n getActiveItemsSnapshot() {\n return this._activeItems;\n }\n /** Gets the index of a specific item. */\n getItemIndex(item) {\n return this._activeItems.indexOf(item);\n }\n /** Used to notify the strategy that the scroll position has changed. */\n updateOnScroll() {\n this._activeItems.forEach(item => {\n if (this._dragDropRegistry.isDragging(item)) {\n // We need to re-sort the item manually, because the pointer move\n // events won't be dispatched while the user is scrolling.\n item._sortFromLastPointerPosition();\n }\n });\n }\n withElementContainer(container) {\n if (container !== this._element) {\n this._element = container;\n this._rootNode = undefined;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY) {\n const elementAtPoint = this._getRootNode().elementFromPoint(Math.floor(pointerX), Math.floor(pointerY));\n const index = elementAtPoint\n ? this._activeItems.findIndex(item => {\n const root = item.getRootElement();\n return elementAtPoint === root || root.contains(elementAtPoint);\n })\n : -1;\n return index === -1 || !this._sortPredicate(index, item) ? -1 : index;\n }\n /** Lazily resolves the list's root node. */\n _getRootNode() {\n // Resolve the root node lazily to ensure that the drop list is in its final place in the DOM.\n if (!this._rootNode) {\n this._rootNode = _getShadowRoot(this._element) || this._document;\n }\n return this._rootNode;\n }\n /**\n * Finds the index of the item that's closest to the item being dragged.\n * @param item Item being dragged.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n */\n _getClosestItemIndexToPointer(item, pointerX, pointerY) {\n if (this._activeItems.length === 0) {\n return -1;\n }\n if (this._activeItems.length === 1) {\n return 0;\n }\n let minDistance = Infinity;\n let minIndex = -1;\n // Find the Euclidean distance (https://en.wikipedia.org/wiki/Euclidean_distance) between each\n // item and the pointer, and return the smallest one. Note that this is a bit flawed in that DOM\n // nodes are rectangles, not points, so we use the top/left coordinates. It should be enough\n // for our purposes.\n for (let i = 0; i < this._activeItems.length; i++) {\n const current = this._activeItems[i];\n if (current !== item) {\n const { x, y } = current.getRootElement().getBoundingClientRect();\n const distance = Math.hypot(pointerX - x, pointerY - y);\n if (distance < minDistance) {\n minDistance = distance;\n minIndex = i;\n }\n }\n }\n return minIndex;\n }\n}\n\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n/** Vertical direction in which we can auto-scroll. */\nvar AutoScrollVerticalDirection;\n(function (AutoScrollVerticalDirection) {\n AutoScrollVerticalDirection[AutoScrollVerticalDirection[\"NONE\"] = 0] = \"NONE\";\n AutoScrollVerticalDirection[AutoScrollVerticalDirection[\"UP\"] = 1] = \"UP\";\n AutoScrollVerticalDirection[AutoScrollVerticalDirection[\"DOWN\"] = 2] = \"DOWN\";\n})(AutoScrollVerticalDirection || (AutoScrollVerticalDirection = {}));\n/** Horizontal direction in which we can auto-scroll. */\nvar AutoScrollHorizontalDirection;\n(function (AutoScrollHorizontalDirection) {\n AutoScrollHorizontalDirection[AutoScrollHorizontalDirection[\"NONE\"] = 0] = \"NONE\";\n AutoScrollHorizontalDirection[AutoScrollHorizontalDirection[\"LEFT\"] = 1] = \"LEFT\";\n AutoScrollHorizontalDirection[AutoScrollHorizontalDirection[\"RIGHT\"] = 2] = \"RIGHT\";\n})(AutoScrollHorizontalDirection || (AutoScrollHorizontalDirection = {}));\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nclass DropListRef {\n _dragDropRegistry;\n _ngZone;\n _viewportRuler;\n /** Element that the drop list is attached to. */\n element;\n /** Whether starting a dragging sequence from this container is disabled. */\n disabled = false;\n /** Whether sorting items within the list is disabled. */\n sortingDisabled = false;\n /** Locks the position of the draggable elements inside the container along the specified axis. */\n lockAxis;\n /**\n * Whether auto-scrolling the view when the user\n * moves their pointer close to the edges is disabled.\n */\n autoScrollDisabled = false;\n /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n autoScrollStep = 2;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n enterPredicate = () => true;\n /** Function that is used to determine whether an item can be sorted into a particular index. */\n sortPredicate = () => true;\n /** Emits right before dragging has started. */\n beforeStarted = new Subject();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n entered = new Subject();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n exited = new Subject();\n /** Emits when the user drops an item inside the container. */\n dropped = new Subject();\n /** Emits as the user is swapping items while actively dragging. */\n sorted = new Subject();\n /** Emits when a dragging sequence is started in a list connected to the current one. */\n receivingStarted = new Subject();\n /** Emits when a dragging sequence is stopped from a list connected to the current one. */\n receivingStopped = new Subject();\n /** Arbitrary data that can be attached to the drop list. */\n data;\n /** Element that is the direct parent of the drag items. */\n _container;\n /** Whether an item in the list is being dragged. */\n _isDragging = false;\n /** Keeps track of the positions of any parent scrollable elements. */\n _parentPositions;\n /** Strategy being used to sort items within the list. */\n _sortStrategy;\n /** Cached `DOMRect` of the drop list. */\n _domRect;\n /** Draggable items in the container. */\n _draggables = [];\n /** Drop lists that are connected to the current one. */\n _siblings = [];\n /** Connected siblings that currently have a dragged item. */\n _activeSiblings = new Set();\n /** Subscription to the window being scrolled. */\n _viewportScrollSubscription = Subscription.EMPTY;\n /** Vertical direction in which the list is currently scrolling. */\n _verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n /** Horizontal direction in which the list is currently scrolling. */\n _horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n /** Node that is being auto-scrolled. */\n _scrollNode;\n /** Used to signal to the current auto-scroll sequence when to stop. */\n _stopScrollTimers = new Subject();\n /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n _cachedShadowRoot = null;\n /** Reference to the document. */\n _document;\n /** Elements that can be scrolled while the user is dragging. */\n _scrollableElements = [];\n /** Initial value for the element's `scroll-snap-type` style. */\n _initialScrollSnap;\n /** Direction of the list's layout. */\n _direction = 'ltr';\n constructor(element, _dragDropRegistry, _document, _ngZone, _viewportRuler) {\n this._dragDropRegistry = _dragDropRegistry;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n const coercedElement = (this.element = coerceElement(element));\n this._document = _document;\n this.withOrientation('vertical').withElementContainer(coercedElement);\n _dragDropRegistry.registerDropContainer(this);\n this._parentPositions = new ParentPositionTracker(_document);\n }\n /** Removes the drop list functionality from the DOM element. */\n dispose() {\n this._stopScrolling();\n this._stopScrollTimers.complete();\n this._viewportScrollSubscription.unsubscribe();\n this.beforeStarted.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this.sorted.complete();\n this.receivingStarted.complete();\n this.receivingStopped.complete();\n this._activeSiblings.clear();\n this._scrollNode = null;\n this._parentPositions.clear();\n this._dragDropRegistry.removeDropContainer(this);\n }\n /** Whether an item from this list is currently being dragged. */\n isDragging() {\n return this._isDragging;\n }\n /** Starts dragging an item. */\n start() {\n this._draggingStarted();\n this._notifyReceivingSiblings();\n }\n /**\n * Attempts to move an item into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n this._draggingStarted();\n // If sorting is disabled, we want the item to return to its starting\n // position if the user is returning it to its initial container.\n if (index == null && this.sortingDisabled) {\n index = this._draggables.indexOf(item);\n }\n this._sortStrategy.enter(item, pointerX, pointerY, index);\n // Note that this usually happens inside `_draggingStarted` as well, but the dimensions\n // can change when the sort strategy moves the item around inside `enter`.\n this._cacheParentPositions();\n // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.\n this._notifyReceivingSiblings();\n this.entered.next({ item, container: this, currentIndex: this.getItemIndex(item) });\n }\n /**\n * Removes an item from the container after it was dragged into another container by the user.\n * @param item Item that was dragged out.\n */\n exit(item) {\n this._reset();\n this.exited.next({ item, container: this });\n }\n /**\n * Drops an item into this container.\n * @param item Item being dropped into the container.\n * @param currentIndex Index at which the item should be inserted.\n * @param previousIndex Index of the item when dragging started.\n * @param previousContainer Container from which the item got dragged in.\n * @param isPointerOverContainer Whether the user's pointer was over the\n * container when the item was dropped.\n * @param distance Distance the user has dragged since the start of the dragging sequence.\n * @param event Event that triggered the dropping sequence.\n *\n * @breaking-change 15.0.0 `previousIndex` and `event` parameters to become required.\n */\n drop(item, currentIndex, previousIndex, previousContainer, isPointerOverContainer, distance, dropPoint, event = {}) {\n this._reset();\n this.dropped.next({\n item,\n currentIndex,\n previousIndex,\n container: this,\n previousContainer,\n isPointerOverContainer,\n distance,\n dropPoint,\n event,\n });\n }\n /**\n * Sets the draggable items that are a part of this list.\n * @param items Items that are a part of this list.\n */\n withItems(items) {\n const previousItems = this._draggables;\n this._draggables = items;\n items.forEach(item => item._withDropContainer(this));\n if (this.isDragging()) {\n const draggedItems = previousItems.filter(item => item.isDragging());\n // If all of the items being dragged were removed\n // from the list, abort the current drag sequence.\n if (draggedItems.every(item => items.indexOf(item) === -1)) {\n this._reset();\n }\n else {\n this._sortStrategy.withItems(this._draggables);\n }\n }\n return this;\n }\n /** Sets the layout direction of the drop list. */\n withDirection(direction) {\n this._direction = direction;\n if (this._sortStrategy instanceof SingleAxisSortStrategy) {\n this._sortStrategy.direction = direction;\n }\n return this;\n }\n /**\n * Sets the containers that are connected to this one. When two or more containers are\n * connected, the user will be allowed to transfer items between them.\n * @param connectedTo Other containers that the current containers should be connected to.\n */\n connectedTo(connectedTo) {\n this._siblings = connectedTo.slice();\n return this;\n }\n /**\n * Sets the orientation of the container.\n * @param orientation New orientation for the container.\n */\n withOrientation(orientation) {\n if (orientation === 'mixed') {\n this._sortStrategy = new MixedSortStrategy(this._document, this._dragDropRegistry);\n }\n else {\n const strategy = new SingleAxisSortStrategy(this._dragDropRegistry);\n strategy.direction = this._direction;\n strategy.orientation = orientation;\n this._sortStrategy = strategy;\n }\n this._sortStrategy.withElementContainer(this._container);\n this._sortStrategy.withSortPredicate((index, item) => this.sortPredicate(index, item, this));\n return this;\n }\n /**\n * Sets which parent elements are can be scrolled while the user is dragging.\n * @param elements Elements that can be scrolled.\n */\n withScrollableParents(elements) {\n const element = this._container;\n // We always allow the current element to be scrollable\n // so we need to ensure that it's in the array.\n this._scrollableElements =\n elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();\n return this;\n }\n /**\n * Configures the drop list so that a different element is used as the container for the\n * dragged items. This is useful for the cases when one might not have control over the\n * full DOM that sets up the dragging.\n * Note that the alternate container needs to be a descendant of the drop list.\n * @param container New element container to be assigned.\n */\n withElementContainer(container) {\n if (container === this._container) {\n return this;\n }\n const element = coerceElement(this.element);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n container !== element &&\n !element.contains(container)) {\n throw new Error('Invalid DOM structure for drop list. Alternate container element must be a descendant of the drop list.');\n }\n const oldContainerIndex = this._scrollableElements.indexOf(this._container);\n const newContainerIndex = this._scrollableElements.indexOf(container);\n if (oldContainerIndex > -1) {\n this._scrollableElements.splice(oldContainerIndex, 1);\n }\n if (newContainerIndex > -1) {\n this._scrollableElements.splice(newContainerIndex, 1);\n }\n if (this._sortStrategy) {\n this._sortStrategy.withElementContainer(container);\n }\n this._cachedShadowRoot = null;\n this._scrollableElements.unshift(container);\n this._container = container;\n return this;\n }\n /** Gets the scrollable parents that are registered with this drop container. */\n getScrollableParents() {\n return this._scrollableElements;\n }\n /**\n * Figures out the index of an item in the container.\n * @param item Item whose index should be determined.\n */\n getItemIndex(item) {\n return this._isDragging\n ? this._sortStrategy.getItemIndex(item)\n : this._draggables.indexOf(item);\n }\n /**\n * Whether the list is able to receive the item that\n * is currently being dragged inside a connected drop list.\n */\n isReceiving() {\n return this._activeSiblings.size > 0;\n }\n /**\n * Sorts an item inside the container based on its position.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n _sortItem(item, pointerX, pointerY, pointerDelta) {\n // Don't sort the item if sorting is disabled or it's out of range.\n if (this.sortingDisabled ||\n !this._domRect ||\n !isPointerNearDomRect(this._domRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n return;\n }\n const result = this._sortStrategy.sort(item, pointerX, pointerY, pointerDelta);\n if (result) {\n this.sorted.next({\n previousIndex: result.previousIndex,\n currentIndex: result.currentIndex,\n container: this,\n item,\n });\n }\n }\n /**\n * Checks whether the user's pointer is close to the edges of either the\n * viewport or the drop list and starts the auto-scroll sequence.\n * @param pointerX User's pointer position along the x axis.\n * @param pointerY User's pointer position along the y axis.\n */\n _startScrollingIfNecessary(pointerX, pointerY) {\n if (this.autoScrollDisabled) {\n return;\n }\n let scrollNode;\n let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n // Check whether we should start scrolling any of the parent containers.\n this._parentPositions.positions.forEach((position, element) => {\n // We have special handling for the `document` below. Also this would be\n // nicer with a for...of loop, but it requires changing a compiler flag.\n if (element === this._document || !position.clientRect || scrollNode) {\n return;\n }\n if (isPointerNearDomRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(element, position.clientRect, this._direction, pointerX, pointerY);\n if (verticalScrollDirection || horizontalScrollDirection) {\n scrollNode = element;\n }\n }\n });\n // Otherwise check if we can start scrolling the viewport.\n if (!verticalScrollDirection && !horizontalScrollDirection) {\n const { width, height } = this._viewportRuler.getViewportSize();\n const domRect = {\n width,\n height,\n top: 0,\n right: width,\n bottom: height,\n left: 0,\n };\n verticalScrollDirection = getVerticalScrollDirection(domRect, pointerY);\n horizontalScrollDirection = getHorizontalScrollDirection(domRect, pointerX);\n scrollNode = window;\n }\n if (scrollNode &&\n (verticalScrollDirection !== this._verticalScrollDirection ||\n horizontalScrollDirection !== this._horizontalScrollDirection ||\n scrollNode !== this._scrollNode)) {\n this._verticalScrollDirection = verticalScrollDirection;\n this._horizontalScrollDirection = horizontalScrollDirection;\n this._scrollNode = scrollNode;\n if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n this._ngZone.runOutsideAngular(this._startScrollInterval);\n }\n else {\n this._stopScrolling();\n }\n }\n }\n /** Stops any currently-running auto-scroll sequences. */\n _stopScrolling() {\n this._stopScrollTimers.next();\n }\n /** Starts the dragging sequence within the list. */\n _draggingStarted() {\n const styles = this._container.style;\n this.beforeStarted.next();\n this._isDragging = true;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n // Prevent the check from running on apps not using an alternate container. Ideally we\n // would always run it, but introducing it at this stage would be a breaking change.\n this._container !== coerceElement(this.element)) {\n for (const drag of this._draggables) {\n if (!drag.isDragging() && drag.getVisibleElement().parentNode !== this._container) {\n throw new Error('Invalid DOM structure for drop list. All items must be placed directly inside of the element container.');\n }\n }\n }\n // We need to disable scroll snapping while the user is dragging, because it breaks automatic\n // scrolling. The browser seems to round the value based on the snapping points which means\n // that we can't increment/decrement the scroll position.\n this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';\n styles.scrollSnapType = styles.msScrollSnapType = 'none';\n this._sortStrategy.start(this._draggables);\n this._cacheParentPositions();\n this._viewportScrollSubscription.unsubscribe();\n this._listenToScrollEvents();\n }\n /** Caches the positions of the configured scrollable parents. */\n _cacheParentPositions() {\n this._parentPositions.cache(this._scrollableElements);\n // The list element is always in the `scrollableElements`\n // so we can take advantage of the cached `DOMRect`.\n this._domRect = this._parentPositions.positions.get(this._container).clientRect;\n }\n /** Resets the container to its initial state. */\n _reset() {\n this._isDragging = false;\n const styles = this._container.style;\n styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n this._siblings.forEach(sibling => sibling._stopReceiving(this));\n this._sortStrategy.reset();\n this._stopScrolling();\n this._viewportScrollSubscription.unsubscribe();\n this._parentPositions.clear();\n }\n /** Starts the interval that'll auto-scroll the element. */\n _startScrollInterval = () => {\n this._stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this._stopScrollTimers))\n .subscribe(() => {\n const node = this._scrollNode;\n const scrollStep = this.autoScrollStep;\n if (this._verticalScrollDirection === AutoScrollVerticalDirection.UP) {\n node.scrollBy(0, -scrollStep);\n }\n else if (this._verticalScrollDirection === AutoScrollVerticalDirection.DOWN) {\n node.scrollBy(0, scrollStep);\n }\n if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n node.scrollBy(-scrollStep, 0);\n }\n else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n node.scrollBy(scrollStep, 0);\n }\n });\n };\n /**\n * Checks whether the user's pointer is positioned over the container.\n * @param x Pointer position along the X axis.\n * @param y Pointer position along the Y axis.\n */\n _isOverContainer(x, y) {\n return this._domRect != null && isInsideClientRect(this._domRect, x, y);\n }\n /**\n * Figures out whether an item should be moved into a sibling\n * drop container, based on its current position.\n * @param item Drag item that is being moved.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _getSiblingContainerFromPosition(item, x, y) {\n return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n }\n /**\n * Checks whether the drop list can receive the passed-in item.\n * @param item Item that is being dragged into the list.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _canReceive(item, x, y) {\n if (!this._domRect ||\n !isInsideClientRect(this._domRect, x, y) ||\n !this.enterPredicate(item, this)) {\n return false;\n }\n const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y);\n // If there's no element at the pointer position, then\n // the client rect is probably scrolled out of the view.\n if (!elementFromPoint) {\n return false;\n }\n // The `DOMRect`, that we're using to find the container over which the user is\n // hovering, doesn't give us any information on whether the element has been scrolled\n // out of the view or whether it's overlapping with other containers. This means that\n // we could end up transferring the item into a container that's invisible or is positioned\n // below another one. We use the result from `elementFromPoint` to get the top-most element\n // at the pointer position and to find whether it's one of the intersecting drop containers.\n return elementFromPoint === this._container || this._container.contains(elementFromPoint);\n }\n /**\n * Called by one of the connected drop lists when a dragging sequence has started.\n * @param sibling Sibling in which dragging has started.\n */\n _startReceiving(sibling, items) {\n const activeSiblings = this._activeSiblings;\n if (!activeSiblings.has(sibling) &&\n items.every(item => {\n // Note that we have to add an exception to the `enterPredicate` for items that started off\n // in this drop list. The drag ref has logic that allows an item to return to its initial\n // container, if it has left the initial container and none of the connected containers\n // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.\n return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;\n })) {\n activeSiblings.add(sibling);\n this._cacheParentPositions();\n this._listenToScrollEvents();\n this.receivingStarted.next({\n initiator: sibling,\n receiver: this,\n items,\n });\n }\n }\n /**\n * Called by a connected drop list when dragging has stopped.\n * @param sibling Sibling whose dragging has stopped.\n */\n _stopReceiving(sibling) {\n this._activeSiblings.delete(sibling);\n this._viewportScrollSubscription.unsubscribe();\n this.receivingStopped.next({ initiator: sibling, receiver: this });\n }\n /**\n * Starts listening to scroll events on the viewport.\n * Used for updating the internal state of the list.\n */\n _listenToScrollEvents() {\n this._viewportScrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(event => {\n if (this.isDragging()) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n this._sortStrategy.updateOnScroll(scrollDifference.top, scrollDifference.left);\n }\n }\n else if (this.isReceiving()) {\n this._cacheParentPositions();\n }\n });\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (!this._cachedShadowRoot) {\n const shadowRoot = _getShadowRoot(this._container);\n this._cachedShadowRoot = shadowRoot || this._document;\n }\n return this._cachedShadowRoot;\n }\n /** Notifies any siblings that may potentially receive the item. */\n _notifyReceivingSiblings() {\n const draggedItems = this._sortStrategy\n .getActiveItemsSnapshot()\n .filter(item => item.isDragging());\n this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));\n }\n}\n/**\n * Gets whether the vertical auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getVerticalScrollDirection(clientRect, pointerY) {\n const { top, bottom, height } = clientRect;\n const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n return AutoScrollVerticalDirection.UP;\n }\n else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n return AutoScrollVerticalDirection.DOWN;\n }\n return AutoScrollVerticalDirection.NONE;\n}\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nfunction getHorizontalScrollDirection(clientRect, pointerX) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return AutoScrollHorizontalDirection.LEFT;\n }\n else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return AutoScrollHorizontalDirection.RIGHT;\n }\n return AutoScrollHorizontalDirection.NONE;\n}\n/**\n * Gets the directions in which an element node should be scrolled,\n * assuming that the user's pointer is already within it scrollable region.\n * @param element Element for which we should calculate the scroll direction.\n * @param clientRect Bounding client rectangle of the element.\n * @param direction Layout direction of the drop list.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getElementScrollDirections(element, clientRect, direction, pointerX, pointerY) {\n const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n // Note that we here we do some extra checks for whether the element is actually scrollable in\n // a certain direction and we only assign the scroll direction if it is. We do this so that we\n // can allow other elements to be scrolled, if the current element can't be scrolled anymore.\n // This allows us to handle cases where the scroll regions of two scrollable elements overlap.\n if (computedVertical) {\n const scrollTop = element.scrollTop;\n if (computedVertical === AutoScrollVerticalDirection.UP) {\n if (scrollTop > 0) {\n verticalScrollDirection = AutoScrollVerticalDirection.UP;\n }\n }\n else if (element.scrollHeight - scrollTop > element.clientHeight) {\n verticalScrollDirection = AutoScrollVerticalDirection.DOWN;\n }\n }\n if (computedHorizontal) {\n const scrollLeft = element.scrollLeft;\n if (direction === 'rtl') {\n if (computedHorizontal === AutoScrollHorizontalDirection.RIGHT) {\n // In RTL `scrollLeft` will be negative when scrolled.\n if (scrollLeft < 0) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;\n }\n }\n else if (element.scrollWidth + scrollLeft > element.clientWidth) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;\n }\n }\n else {\n if (computedHorizontal === AutoScrollHorizontalDirection.LEFT) {\n if (scrollLeft > 0) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;\n }\n }\n else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;\n }\n }\n }\n return [verticalScrollDirection, horizontalScrollDirection];\n}\n\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions = normalizePassiveListenerOptions({\n passive: false,\n capture: true,\n});\n/**\n * Component used to load the drag&drop reset styles.\n * @docs-private\n */\nclass _ResetsLoader {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _ResetsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.0.0\", type: _ResetsLoader, isStandalone: true, selector: \"ng-component\", host: { attributes: { \"cdk-drag-resets-container\": \"\" } }, ngImport: i0, template: '', isInline: true, styles: [\"@layer cdk-resets{.cdk-drag-preview{background:none;border:none;padding:0;color:inherit;inset:auto}}.cdk-drag-placeholder *,.cdk-drag-preview *{pointer-events:none !important}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _ResetsLoader, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'cdk-drag-resets-container': '' }, styles: [\"@layer cdk-resets{.cdk-drag-preview{background:none;border:none;padding:0;color:inherit;inset:auto}}.cdk-drag-placeholder *,.cdk-drag-preview *{pointer-events:none !important}\"] }]\n }] });\n// TODO(crisbeto): remove generics when making breaking changes.\n/**\n * Service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document`.\n * @docs-private\n */\nclass DragDropRegistry {\n _ngZone = inject(NgZone);\n _document = inject(DOCUMENT);\n _styleLoader = inject(_CdkPrivateStyleLoader);\n /** Registered drop container instances. */\n _dropInstances = new Set();\n /** Registered drag item instances. */\n _dragInstances = new Set();\n /** Drag item instances that are currently being dragged. */\n _activeDragInstances = signal([]);\n /** Keeps track of the event listeners that we've bound to the `document`. */\n _globalListeners = new Map();\n /**\n * Predicate function to check if an item is being dragged. Moved out into a property,\n * because it'll be called a lot and we don't want to create a new function every time.\n */\n _draggingPredicate = (item) => item.isDragging();\n /**\n * Emits the `touchmove` or `mousemove` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n pointerMove = new Subject();\n /**\n * Emits the `touchend` or `mouseup` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n pointerUp = new Subject();\n /**\n * Emits when the viewport has been scrolled while the user is dragging an item.\n * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n * @breaking-change 13.0.0\n */\n scroll = new Subject();\n constructor() { }\n /** Adds a drop container to the registry. */\n registerDropContainer(drop) {\n if (!this._dropInstances.has(drop)) {\n this._dropInstances.add(drop);\n }\n }\n /** Adds a drag item instance to the registry. */\n registerDragItem(drag) {\n this._dragInstances.add(drag);\n // The `touchmove` event gets bound once, ahead of time, because WebKit\n // won't preventDefault on a dynamically-added `touchmove` listener.\n // See https://bugs.webkit.org/show_bug.cgi?id=184250.\n if (this._dragInstances.size === 1) {\n this._ngZone.runOutsideAngular(() => {\n // The event handler has to be explicitly active,\n // because newer browsers make it passive by default.\n this._document.addEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n });\n }\n }\n /** Removes a drop container from the registry. */\n removeDropContainer(drop) {\n this._dropInstances.delete(drop);\n }\n /** Removes a drag item instance from the registry. */\n removeDragItem(drag) {\n this._dragInstances.delete(drag);\n this.stopDragging(drag);\n if (this._dragInstances.size === 0) {\n this._document.removeEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n }\n }\n /**\n * Starts the dragging sequence for a drag instance.\n * @param drag Drag instance which is being dragged.\n * @param event Event that initiated the dragging.\n */\n startDragging(drag, event) {\n // Do not process the same drag twice to avoid memory leaks and redundant listeners\n if (this._activeDragInstances().indexOf(drag) > -1) {\n return;\n }\n this._styleLoader.load(_ResetsLoader);\n this._activeDragInstances.update(instances => [...instances, drag]);\n if (this._activeDragInstances().length === 1) {\n const isTouchEvent = event.type.startsWith('touch');\n // We explicitly bind __active__ listeners here, because newer browsers will default to\n // passive ones for `mousemove` and `touchmove`. The events need to be active, because we\n // use `preventDefault` to prevent the page from scrolling while the user is dragging.\n this._globalListeners\n .set(isTouchEvent ? 'touchend' : 'mouseup', {\n handler: (e) => this.pointerUp.next(e),\n options: true,\n })\n .set('scroll', {\n handler: (e) => this.scroll.next(e),\n // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't\n // the document. See https://github.com/angular/components/issues/17144.\n options: true,\n })\n // Preventing the default action on `mousemove` isn't enough to disable text selection\n // on Safari so we need to prevent the selection event as well. Alternatively this can\n // be done by setting `user-select: none` on the `body`, however it has causes a style\n // recalculation which can be expensive on pages with a lot of elements.\n .set('selectstart', {\n handler: this._preventDefaultWhileDragging,\n options: activeCapturingEventOptions,\n });\n // We don't have to bind a move event for touch drag sequences, because\n // we already have a persistent global one bound from `registerDragItem`.\n if (!isTouchEvent) {\n this._globalListeners.set('mousemove', {\n handler: (e) => this.pointerMove.next(e),\n options: activeCapturingEventOptions,\n });\n }\n this._ngZone.runOutsideAngular(() => {\n this._globalListeners.forEach((config, name) => {\n this._document.addEventListener(name, config.handler, config.options);\n });\n });\n }\n }\n /** Stops dragging a drag item instance. */\n stopDragging(drag) {\n this._activeDragInstances.update(instances => {\n const index = instances.indexOf(drag);\n if (index > -1) {\n instances.splice(index, 1);\n return [...instances];\n }\n return instances;\n });\n if (this._activeDragInstances().length === 0) {\n this._clearGlobalListeners();\n }\n }\n /** Gets whether a drag item instance is currently being dragged. */\n isDragging(drag) {\n return this._activeDragInstances().indexOf(drag) > -1;\n }\n /**\n * Gets a stream that will emit when any element on the page is scrolled while an item is being\n * dragged.\n * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n * Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n * be used to include an additional top-level listener at the shadow root level.\n */\n scrolled(shadowRoot) {\n const streams = [this.scroll];\n if (shadowRoot && shadowRoot !== this._document) {\n // Note that this is basically the same as `fromEvent` from rxjs, but we do it ourselves,\n // because we want to guarantee that the event is bound outside of the `NgZone`. With\n // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.\n streams.push(new Observable((observer) => {\n return this._ngZone.runOutsideAngular(() => {\n const eventOptions = true;\n const callback = (event) => {\n if (this._activeDragInstances().length) {\n observer.next(event);\n }\n };\n shadowRoot.addEventListener('scroll', callback, eventOptions);\n return () => {\n shadowRoot.removeEventListener('scroll', callback, eventOptions);\n };\n });\n }));\n }\n return merge(...streams);\n }\n ngOnDestroy() {\n this._dragInstances.forEach(instance => this.removeDragItem(instance));\n this._dropInstances.forEach(instance => this.removeDropContainer(instance));\n this._clearGlobalListeners();\n this.pointerMove.complete();\n this.pointerUp.complete();\n }\n /**\n * Event listener that will prevent the default browser action while the user is dragging.\n * @param event Event whose default action should be prevented.\n */\n _preventDefaultWhileDragging = (event) => {\n if (this._activeDragInstances().length > 0) {\n event.preventDefault();\n }\n };\n /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n _persistentTouchmoveListener = (event) => {\n if (this._activeDragInstances().length > 0) {\n // Note that we only want to prevent the default action after dragging has actually started.\n // Usually this is the same time at which the item is added to the `_activeDragInstances`,\n // but it could be pushed back if the user has set up a drag delay or threshold.\n if (this._activeDragInstances().some(this._draggingPredicate)) {\n event.preventDefault();\n }\n this.pointerMove.next(event);\n }\n };\n /** Clears out the global event listeners from the `document`. */\n _clearGlobalListeners() {\n this._globalListeners.forEach((config, name) => {\n this._document.removeEventListener(name, config.handler, config.options);\n });\n this._globalListeners.clear();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDropRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDropRegistry, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDropRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n dragStartThreshold: 5,\n pointerDirectionChangeThreshold: 5,\n};\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\nclass DragDrop {\n _document = inject(DOCUMENT);\n _ngZone = inject(NgZone);\n _viewportRuler = inject(ViewportRuler);\n _dragDropRegistry = inject(DragDropRegistry);\n constructor() { }\n /**\n * Turns an element into a draggable item.\n * @param element Element to which to attach the dragging functionality.\n * @param config Object used to configure the dragging behavior.\n */\n createDrag(element, config = DEFAULT_CONFIG) {\n return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler, this._dragDropRegistry);\n }\n /**\n * Turns an element into a drop list.\n * @param element Element to which to attach the drop list functionality.\n */\n createDropList(element) {\n return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone, this._viewportRuler);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDrop, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDrop, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDrop, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the\n * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily\n * to avoid circular imports.\n * @docs-private\n */\nconst CDK_DRAG_PARENT = new InjectionToken('CDK_DRAG_PARENT');\n\n/**\n * Asserts that a particular node is an element.\n * @param node Node to be checked.\n * @param name Name to attach to the error message.\n */\nfunction assertElementNode(node, name) {\n if (node.nodeType !== 1) {\n throw Error(`${name} must be attached to an element node. ` + `Currently attached to \"${node.nodeName}\".`);\n }\n}\n\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');\n/** Handle that can be used to drag a CdkDrag instance. */\nclass CdkDragHandle {\n element = inject(ElementRef);\n _parentDrag = inject(CDK_DRAG_PARENT, { optional: true, skipSelf: true });\n /** Emits when the state of the handle has changed. */\n _stateChanges = new Subject();\n /** Whether starting to drag through this handle is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._stateChanges.next(this);\n }\n _disabled = false;\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(this.element.nativeElement, 'cdkDragHandle');\n }\n this._parentDrag?._addHandle(this);\n }\n ngOnDestroy() {\n this._parentDrag?._removeHandle(this);\n this._stateChanges.complete();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDragHandle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkDragHandle, isStandalone: true, selector: \"[cdkDragHandle]\", inputs: { disabled: [\"cdkDragHandleDisabled\", \"disabled\", booleanAttribute] }, host: { classAttribute: \"cdk-drag-handle\" }, providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDragHandle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDragHandle]',\n host: {\n 'class': 'cdk-drag-handle',\n },\n providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }],\n }]\n }], ctorParameters: () => [], propDecorators: { disabled: [{\n type: Input,\n args: [{ alias: 'cdkDragHandleDisabled', transform: booleanAttribute }]\n }] } });\n\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nconst CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');\n\nconst DRAG_HOST_CLASS = 'cdk-drag';\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST = new InjectionToken('CdkDropList');\n/** Element that can be moved inside a CdkDropList container. */\nclass CdkDrag {\n element = inject(ElementRef);\n dropContainer = inject(CDK_DROP_LIST, { optional: true, skipSelf: true });\n _ngZone = inject(NgZone);\n _viewContainerRef = inject(ViewContainerRef);\n _dir = inject(Directionality, { optional: true });\n _changeDetectorRef = inject(ChangeDetectorRef);\n _selfHandle = inject(CDK_DRAG_HANDLE, { optional: true, self: true });\n _parentDrag = inject(CDK_DRAG_PARENT, { optional: true, skipSelf: true });\n _destroyed = new Subject();\n static _dragInstances = [];\n _handles = new BehaviorSubject([]);\n _previewTemplate;\n _placeholderTemplate;\n /** Reference to the underlying drag instance. */\n _dragRef;\n /** Arbitrary data to attach to this drag instance. */\n data;\n /** Locks the position of the dragged element along the specified axis. */\n lockAxis;\n /**\n * Selector that will be used to determine the root draggable element, starting from\n * the `cdkDrag` element and going up the DOM. Passing an alternate root element is useful\n * when trying to enable dragging on an element that you might not have access to.\n */\n rootElementSelector;\n /**\n * Node or selector that will be used to determine the element to which the draggable's\n * position will be constrained. If a string is passed in, it'll be used as a selector that\n * will be matched starting from the element's parent and going up the DOM until a match\n * has been found.\n */\n boundaryElement;\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n dragStartDelay;\n /**\n * Sets the position of a `CdkDrag` that is outside of a drop container.\n * Can be used to restore the element's position for a returning user.\n */\n freeDragPosition;\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || !!(this.dropContainer && this.dropContainer.disabled);\n }\n set disabled(value) {\n this._disabled = value;\n this._dragRef.disabled = this._disabled;\n }\n _disabled;\n /**\n * Function that can be used to customize the logic of how the position of the drag item\n * is limited while it's being dragged. Gets called with a point containing the current position\n * of the user's pointer on the page, a reference to the item being dragged and its dimensions.\n * Should return a point describing where the item should be rendered.\n */\n constrainPosition;\n /** Class to be added to the preview element. */\n previewClass;\n /**\n * Configures the place into which the preview of the item will be inserted. Can be configured\n * globally through `CDK_DROP_LIST`. Possible values:\n * - `global` - Preview will be inserted at the bottom of the ``. The advantage is that\n * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain\n * its inherited styles.\n * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that\n * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be\n * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors\n * like `:nth-child` and some flexbox configurations.\n * - `ElementRef | HTMLElement` - Preview will be inserted into a specific element.\n * Same advantages and disadvantages as `parent`.\n */\n previewContainer;\n /**\n * If the parent of the dragged element has a `scale` transform, it can throw off the\n * positioning when the user starts dragging. Use this input to notify the CDK of the scale.\n */\n scale = 1;\n /** Emits when the user starts dragging the item. */\n started = new EventEmitter();\n /** Emits when the user has released a drag item, before any animations have started. */\n released = new EventEmitter();\n /** Emits when the user stops dragging an item in the container. */\n ended = new EventEmitter();\n /** Emits when the user has moved the item into a new container. */\n entered = new EventEmitter();\n /** Emits when the user removes the item its container by dragging it into another container. */\n exited = new EventEmitter();\n /** Emits when the user drops the item inside a container. */\n dropped = new EventEmitter();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n moved = new Observable((observer) => {\n const subscription = this._dragRef.moved\n .pipe(map(movedEvent => ({\n source: this,\n pointerPosition: movedEvent.pointerPosition,\n event: movedEvent.event,\n delta: movedEvent.delta,\n distance: movedEvent.distance,\n })))\n .subscribe(observer);\n return () => {\n subscription.unsubscribe();\n };\n });\n _injector = inject(Injector);\n constructor() {\n const dropContainer = this.dropContainer;\n const config = inject(CDK_DRAG_CONFIG, { optional: true });\n const dragDrop = inject(DragDrop);\n this._dragRef = dragDrop.createDrag(this.element, {\n dragStartThreshold: config && config.dragStartThreshold != null ? config.dragStartThreshold : 5,\n pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null\n ? config.pointerDirectionChangeThreshold\n : 5,\n zIndex: config?.zIndex,\n });\n this._dragRef.data = this;\n // We have to keep track of the drag instances in order to be able to match an element to\n // a drag instance. We can't go through the global registry of `DragRef`, because the root\n // element could be different.\n CdkDrag._dragInstances.push(this);\n if (config) {\n this._assignDefaults(config);\n }\n // Note that usually the container is assigned when the drop list is picks up the item, but in\n // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation\n // where there are no items on the first change detection pass, but the items get picked up as\n // soon as the user triggers another pass by dragging. This is a problem, because the item would\n // have to switch from standalone mode to drag mode in the middle of the dragging sequence which\n // is too late since the two modes save different kinds of information. We work around it by\n // assigning the drop container both from here and the list.\n if (dropContainer) {\n this._dragRef._withDropContainer(dropContainer._dropListRef);\n dropContainer.addItem(this);\n // The drop container reads this so we need to sync it here.\n dropContainer._dropListRef.beforeStarted.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._dragRef.scale = this.scale;\n });\n }\n this._syncInputs(this._dragRef);\n this._handleEvents(this._dragRef);\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._dragRef.getPlaceholderElement();\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._dragRef.getRootElement();\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._dragRef.reset();\n }\n /**\n * Gets the pixel coordinates of the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n return this._dragRef.getFreeDragPosition();\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._dragRef.setFreeDragPosition(value);\n }\n ngAfterViewInit() {\n // We need to wait until after render, in order for the reference\n // element to be in the proper place in the DOM. This is mostly relevant\n // for draggable elements inside portals since they get stamped out in\n // their original DOM position, and then they get transferred to the portal.\n afterNextRender(() => {\n this._updateRootElement();\n this._setupHandlesListener();\n this._dragRef.scale = this.scale;\n if (this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }, { injector: this._injector });\n }\n ngOnChanges(changes) {\n const rootSelectorChange = changes['rootElementSelector'];\n const positionChange = changes['freeDragPosition'];\n // We don't have to react to the first change since it's being\n // handled in the `afterNextRender` queued up in the constructor.\n if (rootSelectorChange && !rootSelectorChange.firstChange) {\n this._updateRootElement();\n }\n // Scale affects the free drag position so we need to sync it up here.\n this._dragRef.scale = this.scale;\n // Skip the first change since it's being handled in the `afterNextRender` queued up in the\n // constructor.\n if (positionChange && !positionChange.firstChange && this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }\n ngOnDestroy() {\n if (this.dropContainer) {\n this.dropContainer.removeItem(this);\n }\n const index = CdkDrag._dragInstances.indexOf(this);\n if (index > -1) {\n CdkDrag._dragInstances.splice(index, 1);\n }\n // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.\n this._ngZone.runOutsideAngular(() => {\n this._handles.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._dragRef.dispose();\n });\n }\n _addHandle(handle) {\n const handles = this._handles.getValue();\n handles.push(handle);\n this._handles.next(handles);\n }\n _removeHandle(handle) {\n const handles = this._handles.getValue();\n const index = handles.indexOf(handle);\n if (index > -1) {\n handles.splice(index, 1);\n this._handles.next(handles);\n }\n }\n _setPreviewTemplate(preview) {\n this._previewTemplate = preview;\n }\n _resetPreviewTemplate(preview) {\n if (preview === this._previewTemplate) {\n this._previewTemplate = null;\n }\n }\n _setPlaceholderTemplate(placeholder) {\n this._placeholderTemplate = placeholder;\n }\n _resetPlaceholderTemplate(placeholder) {\n if (placeholder === this._placeholderTemplate) {\n this._placeholderTemplate = null;\n }\n }\n /** Syncs the root element with the `DragRef`. */\n _updateRootElement() {\n const element = this.element.nativeElement;\n let rootElement = element;\n if (this.rootElementSelector) {\n rootElement =\n element.closest !== undefined\n ? element.closest(this.rootElementSelector)\n : // Comment tag doesn't have closest method, so use parent's one.\n element.parentElement?.closest(this.rootElementSelector);\n }\n if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n assertElementNode(rootElement, 'cdkDrag');\n }\n this._dragRef.withRootElement(rootElement || element);\n }\n /** Gets the boundary element, based on the `boundaryElement` value. */\n _getBoundaryElement() {\n const boundary = this.boundaryElement;\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return this.element.nativeElement.closest(boundary);\n }\n return coerceElement(boundary);\n }\n /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n _syncInputs(ref) {\n ref.beforeStarted.subscribe(() => {\n if (!ref.isDragging()) {\n const dir = this._dir;\n const dragStartDelay = this.dragStartDelay;\n const placeholder = this._placeholderTemplate\n ? {\n template: this._placeholderTemplate.templateRef,\n context: this._placeholderTemplate.data,\n viewContainer: this._viewContainerRef,\n }\n : null;\n const preview = this._previewTemplate\n ? {\n template: this._previewTemplate.templateRef,\n context: this._previewTemplate.data,\n matchSize: this._previewTemplate.matchSize,\n viewContainer: this._viewContainerRef,\n }\n : null;\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.scale = this.scale;\n ref.dragStartDelay =\n typeof dragStartDelay === 'object' && dragStartDelay\n ? dragStartDelay\n : coerceNumberProperty(dragStartDelay);\n ref.constrainPosition = this.constrainPosition;\n ref.previewClass = this.previewClass;\n ref\n .withBoundaryElement(this._getBoundaryElement())\n .withPlaceholderTemplate(placeholder)\n .withPreviewTemplate(preview)\n .withPreviewContainer(this.previewContainer || 'global');\n if (dir) {\n ref.withDirection(dir.value);\n }\n }\n });\n // This only needs to be resolved once.\n ref.beforeStarted.pipe(take(1)).subscribe(() => {\n // If we managed to resolve a parent through DI, use it.\n if (this._parentDrag) {\n ref.withParent(this._parentDrag._dragRef);\n return;\n }\n // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if\n // the item was projected into another item by something like `ngTemplateOutlet`.\n let parent = this.element.nativeElement.parentElement;\n while (parent) {\n if (parent.classList.contains(DRAG_HOST_CLASS)) {\n ref.withParent(CdkDrag._dragInstances.find(drag => {\n return drag.element.nativeElement === parent;\n })?._dragRef || null);\n break;\n }\n parent = parent.parentElement;\n }\n });\n }\n /** Handles the events from the underlying `DragRef`. */\n _handleEvents(ref) {\n ref.started.subscribe(startEvent => {\n this.started.emit({ source: this, event: startEvent.event });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.released.subscribe(releaseEvent => {\n this.released.emit({ source: this, event: releaseEvent.event });\n });\n ref.ended.subscribe(endEvent => {\n this.ended.emit({\n source: this,\n distance: endEvent.distance,\n dropPoint: endEvent.dropPoint,\n event: endEvent.event,\n });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(enterEvent => {\n this.entered.emit({\n container: enterEvent.container.data,\n item: this,\n currentIndex: enterEvent.currentIndex,\n });\n });\n ref.exited.subscribe(exitEvent => {\n this.exited.emit({\n container: exitEvent.container.data,\n item: this,\n });\n });\n ref.dropped.subscribe(dropEvent => {\n this.dropped.emit({\n previousIndex: dropEvent.previousIndex,\n currentIndex: dropEvent.currentIndex,\n previousContainer: dropEvent.previousContainer.data,\n container: dropEvent.container.data,\n isPointerOverContainer: dropEvent.isPointerOverContainer,\n item: this,\n distance: dropEvent.distance,\n dropPoint: dropEvent.dropPoint,\n event: dropEvent.event,\n });\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled, rootElementSelector, previewContainer, } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.dragStartDelay = dragStartDelay || 0;\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n if (constrainPosition) {\n this.constrainPosition = constrainPosition;\n }\n if (previewClass) {\n this.previewClass = previewClass;\n }\n if (boundaryElement) {\n this.boundaryElement = boundaryElement;\n }\n if (rootElementSelector) {\n this.rootElementSelector = rootElementSelector;\n }\n if (previewContainer) {\n this.previewContainer = previewContainer;\n }\n }\n /** Sets up the listener that syncs the handles with the drag ref. */\n _setupHandlesListener() {\n // Listen for any newly-added handles.\n this._handles\n .pipe(\n // Sync the new handles with the DragRef.\n tap(handles => {\n const handleElements = handles.map(handle => handle.element);\n // Usually handles are only allowed to be a descendant of the drag element, but if\n // the consumer defined a different drag root, we should allow the drag element\n // itself to be a handle too.\n if (this._selfHandle && this.rootElementSelector) {\n handleElements.push(this.element);\n }\n this._dragRef.withHandles(handleElements);\n }), \n // Listen if the state of any of the handles changes.\n switchMap((handles) => {\n return merge(...handles.map(item => item._stateChanges.pipe(startWith(item))));\n }), takeUntil(this._destroyed))\n .subscribe(handleInstance => {\n // Enabled/disable the handle that changed in the DragRef.\n const dragRef = this._dragRef;\n const handle = handleInstance.element.nativeElement;\n handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDrag, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkDrag, isStandalone: true, selector: \"[cdkDrag]\", inputs: { data: [\"cdkDragData\", \"data\"], lockAxis: [\"cdkDragLockAxis\", \"lockAxis\"], rootElementSelector: [\"cdkDragRootElement\", \"rootElementSelector\"], boundaryElement: [\"cdkDragBoundary\", \"boundaryElement\"], dragStartDelay: [\"cdkDragStartDelay\", \"dragStartDelay\"], freeDragPosition: [\"cdkDragFreeDragPosition\", \"freeDragPosition\"], disabled: [\"cdkDragDisabled\", \"disabled\", booleanAttribute], constrainPosition: [\"cdkDragConstrainPosition\", \"constrainPosition\"], previewClass: [\"cdkDragPreviewClass\", \"previewClass\"], previewContainer: [\"cdkDragPreviewContainer\", \"previewContainer\"], scale: [\"cdkDragScale\", \"scale\", numberAttribute] }, outputs: { started: \"cdkDragStarted\", released: \"cdkDragReleased\", ended: \"cdkDragEnded\", entered: \"cdkDragEntered\", exited: \"cdkDragExited\", dropped: \"cdkDragDropped\", moved: \"cdkDragMoved\" }, host: { properties: { \"class.cdk-drag-disabled\": \"disabled\", \"class.cdk-drag-dragging\": \"_dragRef.isDragging()\" }, classAttribute: \"cdk-drag\" }, providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }], exportAs: [\"cdkDrag\"], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDrag, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDrag]',\n exportAs: 'cdkDrag',\n host: {\n 'class': DRAG_HOST_CLASS,\n '[class.cdk-drag-disabled]': 'disabled',\n '[class.cdk-drag-dragging]': '_dragRef.isDragging()',\n },\n providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }],\n }]\n }], ctorParameters: () => [], propDecorators: { data: [{\n type: Input,\n args: ['cdkDragData']\n }], lockAxis: [{\n type: Input,\n args: ['cdkDragLockAxis']\n }], rootElementSelector: [{\n type: Input,\n args: ['cdkDragRootElement']\n }], boundaryElement: [{\n type: Input,\n args: ['cdkDragBoundary']\n }], dragStartDelay: [{\n type: Input,\n args: ['cdkDragStartDelay']\n }], freeDragPosition: [{\n type: Input,\n args: ['cdkDragFreeDragPosition']\n }], disabled: [{\n type: Input,\n args: [{ alias: 'cdkDragDisabled', transform: booleanAttribute }]\n }], constrainPosition: [{\n type: Input,\n args: ['cdkDragConstrainPosition']\n }], previewClass: [{\n type: Input,\n args: ['cdkDragPreviewClass']\n }], previewContainer: [{\n type: Input,\n args: ['cdkDragPreviewContainer']\n }], scale: [{\n type: Input,\n args: [{ alias: 'cdkDragScale', transform: numberAttribute }]\n }], started: [{\n type: Output,\n args: ['cdkDragStarted']\n }], released: [{\n type: Output,\n args: ['cdkDragReleased']\n }], ended: [{\n type: Output,\n args: ['cdkDragEnded']\n }], entered: [{\n type: Output,\n args: ['cdkDragEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDragExited']\n }], dropped: [{\n type: Output,\n args: ['cdkDragDropped']\n }], moved: [{\n type: Output,\n args: ['cdkDragMoved']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST_GROUP = new InjectionToken('CdkDropListGroup');\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\nclass CdkDropListGroup {\n /** Drop lists registered inside the group. */\n _items = new Set();\n /** Whether starting a dragging sequence from inside this group is disabled. */\n disabled = false;\n ngOnDestroy() {\n this._items.clear();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDropListGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkDropListGroup, isStandalone: true, selector: \"[cdkDropListGroup]\", inputs: { disabled: [\"cdkDropListGroupDisabled\", \"disabled\", booleanAttribute] }, providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }], exportAs: [\"cdkDropListGroup\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDropListGroup, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropListGroup]',\n exportAs: 'cdkDropListGroup',\n providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }],\n }]\n }], propDecorators: { disabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListGroupDisabled', transform: booleanAttribute }]\n }] } });\n\n/** Container that wraps a set of draggable items. */\nclass CdkDropList {\n element = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _scrollDispatcher = inject(ScrollDispatcher);\n _dir = inject(Directionality, { optional: true });\n _group = inject(CDK_DROP_LIST_GROUP, {\n optional: true,\n skipSelf: true,\n });\n /** Emits when the list has been destroyed. */\n _destroyed = new Subject();\n /** Whether the element's scrollable parents have been resolved. */\n _scrollableParentsResolved;\n /** Keeps track of the drop lists that are currently on the page. */\n static _dropLists = [];\n /** Reference to the underlying drop list instance. */\n _dropListRef;\n /**\n * Other draggable containers that this container is connected to and into which the\n * container's items can be transferred. Can either be references to other drop containers,\n * or their unique IDs.\n */\n connectedTo = [];\n /** Arbitrary data to attach to this container. */\n data;\n /** Direction in which the list is oriented. */\n orientation;\n /**\n * Unique ID for the drop zone. Can be used as a reference\n * in the `connectedTo` of another `CdkDropList`.\n */\n id = inject(_IdGenerator).getId('cdk-drop-list-');\n /** Locks the position of the draggable elements inside the container along the specified axis. */\n lockAxis;\n /** Whether starting a dragging sequence from this container is disabled. */\n get disabled() {\n return this._disabled || (!!this._group && this._group.disabled);\n }\n set disabled(value) {\n // Usually we sync the directive and ref state right before dragging starts, in order to have\n // a single point of failure and to avoid having to use setters for everything. `disabled` is\n // a special case, because it can prevent the `beforeStarted` event from firing, which can lock\n // the user in a disabled state, so we also need to sync it as it's being set.\n this._dropListRef.disabled = this._disabled = value;\n }\n _disabled;\n /** Whether sorting within this drop list is disabled. */\n sortingDisabled;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n sortPredicate = () => true;\n /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */\n autoScrollDisabled;\n /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n autoScrollStep;\n /**\n * Selector that will be used to resolve an alternate element container for the drop list.\n * Passing an alternate container is useful for the cases where one might not have control\n * over the parent node of the draggable items within the list (e.g. due to content projection).\n * This allows for usages like:\n *\n * ```\n *
\n *
\n *
\n *
\n *
\n * ```\n */\n elementContainerSelector;\n /** Emits when the user drops an item inside the container. */\n dropped = new EventEmitter();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n entered = new EventEmitter();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n exited = new EventEmitter();\n /** Emits as the user is swapping items while actively dragging. */\n sorted = new EventEmitter();\n /**\n * Keeps track of the items that are registered with this container. Historically we used to\n * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n * well which means that we can't handle cases like dragging the headers of a `mat-table`\n * correctly. What we do instead is to have the items register themselves with the container\n * and then we sort them based on their position in the DOM.\n */\n _unsortedItems = new Set();\n constructor() {\n const dragDrop = inject(DragDrop);\n const config = inject(CDK_DRAG_CONFIG, { optional: true });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(this.element.nativeElement, 'cdkDropList');\n }\n this._dropListRef = dragDrop.createDropList(this.element);\n this._dropListRef.data = this;\n if (config) {\n this._assignDefaults(config);\n }\n this._dropListRef.enterPredicate = (drag, drop) => {\n return this.enterPredicate(drag.data, drop.data);\n };\n this._dropListRef.sortPredicate = (index, drag, drop) => {\n return this.sortPredicate(index, drag.data, drop.data);\n };\n this._setupInputSyncSubscription(this._dropListRef);\n this._handleEvents(this._dropListRef);\n CdkDropList._dropLists.push(this);\n if (this._group) {\n this._group._items.add(this);\n }\n }\n /** Registers an items with the drop list. */\n addItem(item) {\n this._unsortedItems.add(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Removes an item from the drop list. */\n removeItem(item) {\n this._unsortedItems.delete(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Gets the registered items in the list, sorted by their position in the DOM. */\n getSortedItems() {\n return Array.from(this._unsortedItems).sort((a, b) => {\n const documentPosition = a._dragRef\n .getVisibleElement()\n .compareDocumentPosition(b._dragRef.getVisibleElement());\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n }\n ngOnDestroy() {\n const index = CdkDropList._dropLists.indexOf(this);\n if (index > -1) {\n CdkDropList._dropLists.splice(index, 1);\n }\n if (this._group) {\n this._group._items.delete(this);\n }\n this._unsortedItems.clear();\n this._dropListRef.dispose();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n _setupInputSyncSubscription(ref) {\n if (this._dir) {\n this._dir.change\n .pipe(startWith(this._dir.value), takeUntil(this._destroyed))\n .subscribe(value => ref.withDirection(value));\n }\n ref.beforeStarted.subscribe(() => {\n const siblings = coerceArray(this.connectedTo).map(drop => {\n if (typeof drop === 'string') {\n const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);\n if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n }\n return correspondingDropList;\n }\n return drop;\n });\n if (this._group) {\n this._group._items.forEach(drop => {\n if (siblings.indexOf(drop) === -1) {\n siblings.push(drop);\n }\n });\n }\n // Note that we resolve the scrollable parents here so that we delay the resolution\n // as long as possible, ensuring that the element is in its final place in the DOM.\n if (!this._scrollableParentsResolved) {\n const scrollableParents = this._scrollDispatcher\n .getAncestorScrollContainers(this.element)\n .map(scrollable => scrollable.getElementRef().nativeElement);\n this._dropListRef.withScrollableParents(scrollableParents);\n // Only do this once since it involves traversing the DOM and the parents\n // shouldn't be able to change without the drop list being destroyed.\n this._scrollableParentsResolved = true;\n }\n if (this.elementContainerSelector) {\n const container = this.element.nativeElement.querySelector(this.elementContainerSelector);\n if (!container && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error(`CdkDropList could not find an element container matching the selector \"${this.elementContainerSelector}\"`);\n }\n ref.withElementContainer(container);\n }\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.sortingDisabled = this.sortingDisabled;\n ref.autoScrollDisabled = this.autoScrollDisabled;\n ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);\n ref\n .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n .withOrientation(this.orientation);\n });\n }\n /** Handles events from the underlying DropListRef. */\n _handleEvents(ref) {\n ref.beforeStarted.subscribe(() => {\n this._syncItemsWithRef();\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: this,\n item: event.item.data,\n currentIndex: event.currentIndex,\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: this,\n item: event.item.data,\n });\n this._changeDetectorRef.markForCheck();\n });\n ref.sorted.subscribe(event => {\n this.sorted.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n container: this,\n item: event.item.data,\n });\n });\n ref.dropped.subscribe(dropEvent => {\n this.dropped.emit({\n previousIndex: dropEvent.previousIndex,\n currentIndex: dropEvent.currentIndex,\n previousContainer: dropEvent.previousContainer.data,\n container: dropEvent.container.data,\n item: dropEvent.item.data,\n isPointerOverContainer: dropEvent.isPointerOverContainer,\n distance: dropEvent.distance,\n dropPoint: dropEvent.dropPoint,\n event: dropEvent.event,\n });\n // Mark for check since all of these events run outside of change\n // detection and we're not guaranteed for something else to have triggered it.\n this._changeDetectorRef.markForCheck();\n });\n merge(ref.receivingStarted, ref.receivingStopped).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;\n this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;\n this.orientation = listOrientation || 'vertical';\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n }\n /** Syncs up the registered drag items with underlying drop list ref. */\n _syncItemsWithRef() {\n this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDropList, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkDropList, isStandalone: true, selector: \"[cdkDropList], cdk-drop-list\", inputs: { connectedTo: [\"cdkDropListConnectedTo\", \"connectedTo\"], data: [\"cdkDropListData\", \"data\"], orientation: [\"cdkDropListOrientation\", \"orientation\"], id: \"id\", lockAxis: [\"cdkDropListLockAxis\", \"lockAxis\"], disabled: [\"cdkDropListDisabled\", \"disabled\", booleanAttribute], sortingDisabled: [\"cdkDropListSortingDisabled\", \"sortingDisabled\", booleanAttribute], enterPredicate: [\"cdkDropListEnterPredicate\", \"enterPredicate\"], sortPredicate: [\"cdkDropListSortPredicate\", \"sortPredicate\"], autoScrollDisabled: [\"cdkDropListAutoScrollDisabled\", \"autoScrollDisabled\", booleanAttribute], autoScrollStep: [\"cdkDropListAutoScrollStep\", \"autoScrollStep\"], elementContainerSelector: [\"cdkDropListElementContainer\", \"elementContainerSelector\"] }, outputs: { dropped: \"cdkDropListDropped\", entered: \"cdkDropListEntered\", exited: \"cdkDropListExited\", sorted: \"cdkDropListSorted\" }, host: { properties: { \"attr.id\": \"id\", \"class.cdk-drop-list-disabled\": \"disabled\", \"class.cdk-drop-list-dragging\": \"_dropListRef.isDragging()\", \"class.cdk-drop-list-receiving\": \"_dropListRef.isReceiving()\" }, classAttribute: \"cdk-drop-list\" }, providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ], exportAs: [\"cdkDropList\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDropList, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropList], cdk-drop-list',\n exportAs: 'cdkDropList',\n providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ],\n host: {\n 'class': 'cdk-drop-list',\n '[attr.id]': 'id',\n '[class.cdk-drop-list-disabled]': 'disabled',\n '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',\n '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',\n },\n }]\n }], ctorParameters: () => [], propDecorators: { connectedTo: [{\n type: Input,\n args: ['cdkDropListConnectedTo']\n }], data: [{\n type: Input,\n args: ['cdkDropListData']\n }], orientation: [{\n type: Input,\n args: ['cdkDropListOrientation']\n }], id: [{\n type: Input\n }], lockAxis: [{\n type: Input,\n args: ['cdkDropListLockAxis']\n }], disabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListDisabled', transform: booleanAttribute }]\n }], sortingDisabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListSortingDisabled', transform: booleanAttribute }]\n }], enterPredicate: [{\n type: Input,\n args: ['cdkDropListEnterPredicate']\n }], sortPredicate: [{\n type: Input,\n args: ['cdkDropListSortPredicate']\n }], autoScrollDisabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListAutoScrollDisabled', transform: booleanAttribute }]\n }], autoScrollStep: [{\n type: Input,\n args: ['cdkDropListAutoScrollStep']\n }], elementContainerSelector: [{\n type: Input,\n args: ['cdkDropListElementContainer']\n }], dropped: [{\n type: Output,\n args: ['cdkDropListDropped']\n }], entered: [{\n type: Output,\n args: ['cdkDropListEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDropListExited']\n }], sorted: [{\n type: Output,\n args: ['cdkDropListSorted']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\nclass CdkDragPreview {\n templateRef = inject(TemplateRef);\n _drag = inject(CDK_DRAG_PARENT, { optional: true });\n /** Context data to be added to the preview template instance. */\n data;\n /** Whether the preview should preserve the same size as the item that is being dragged. */\n matchSize = false;\n constructor() {\n this._drag?._setPreviewTemplate(this);\n }\n ngOnDestroy() {\n this._drag?._resetPreviewTemplate(this);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDragPreview, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkDragPreview, isStandalone: true, selector: \"ng-template[cdkDragPreview]\", inputs: { data: \"data\", matchSize: [\"matchSize\", \"matchSize\", booleanAttribute] }, providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDragPreview, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPreview]',\n providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }],\n }]\n }], ctorParameters: () => [], propDecorators: { data: [{\n type: Input\n }], matchSize: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\nclass CdkDragPlaceholder {\n templateRef = inject(TemplateRef);\n _drag = inject(CDK_DRAG_PARENT, { optional: true });\n /** Context data to be added to the placeholder template instance. */\n data;\n constructor() {\n this._drag?._setPlaceholderTemplate(this);\n }\n ngOnDestroy() {\n this._drag?._resetPlaceholderTemplate(this);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDragPlaceholder, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkDragPlaceholder, isStandalone: true, selector: \"ng-template[cdkDragPlaceholder]\", inputs: { data: \"data\" }, providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkDragPlaceholder, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPlaceholder]',\n providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }],\n }]\n }], ctorParameters: () => [], propDecorators: { data: [{\n type: Input\n }] } });\n\nconst DRAG_DROP_DIRECTIVES = [\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n];\nclass DragDropModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDropModule, imports: [CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder], exports: [CdkScrollableModule, CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDropModule, providers: [DragDrop], imports: [CdkScrollableModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DragDropModule, decorators: [{\n type: NgModule,\n args: [{\n imports: DRAG_DROP_DIRECTIVES,\n exports: [CdkScrollableModule, ...DRAG_DROP_DIRECTIVES],\n providers: [DragDrop],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_DRAG_CONFIG, CDK_DRAG_HANDLE, CDK_DRAG_PARENT, CDK_DRAG_PLACEHOLDER, CDK_DRAG_PREVIEW, CDK_DROP_LIST, CDK_DROP_LIST_GROUP, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDragPreview, CdkDropList, CdkDropListGroup, DragDrop, DragDropModule, DragDropRegistry, DragRef, DropListRef, copyArrayItem, moveItemInArray, transferArrayItem };\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate 29\n */\nexport function getDaysInMonth(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","import { millisecondsInHour, millisecondsInMinute } from \"./constants.mjs\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n const result = new Date(0);\n result.setFullYear(\n dirtyDate.getUTCFullYear(),\n dirtyDate.getUTCMonth(),\n dirtyDate.getUTCDate(),\n );\n result.setHours(\n dirtyDate.getUTCHours(),\n dirtyDate.getUTCMinutes(),\n dirtyDate.getUTCSeconds(),\n dirtyDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { transpose } from \"../../transpose.mjs\";\nimport { constructFrom } from \"../../constructFrom.mjs\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\n\nexport class ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\n\nexport class DateToSystemTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, Date));\n }\n}\n","import { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam DateInputType - The input `Date` type derived from the passed argument.\n * @typeParam DateOutputType - The output `Date` type derived from the passed constructor.\n *\n * @param fromDate - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(fromDate, constructor) {\n const date =\n constructor instanceof Date\n ? constructFrom(constructor, 0)\n : new constructor(0);\n date.setFullYear(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate(),\n );\n date.setHours(\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds(),\n );\n return date;\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { ValueSetter } from \"./Setter.mjs\";\n\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\n","export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n millisecondsInSecond,\n} from \"../../constants.mjs\";\nimport { numericPatterns } from \"./constants.mjs\";\n\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * millisecondsInHour +\n minutes * millisecondsInMinute +\n seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.mjs\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { addDays } from \"./addDays.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const currentDay = _date.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { EraParser } from \"./parsers/EraParser.mjs\";\nimport { YearParser } from \"./parsers/YearParser.mjs\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.mjs\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.mjs\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.mjs\";\nimport { QuarterParser } from \"./parsers/QuarterParser.mjs\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.mjs\";\nimport { MonthParser } from \"./parsers/MonthParser.mjs\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.mjs\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.mjs\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.mjs\";\nimport { DateParser } from \"./parsers/DateParser.mjs\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.mjs\";\nimport { DayParser } from \"./parsers/DayParser.mjs\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.mjs\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.mjs\";\nimport { ISODayParser } from \"./parsers/ISODayParser.mjs\";\nimport { AMPMParser } from \"./parsers/AMPMParser.mjs\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.mjs\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.mjs\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.mjs\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.mjs\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.mjs\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.mjs\";\nimport { MinuteParser } from \"./parsers/MinuteParser.mjs\";\nimport { SecondParser } from \"./parsers/SecondParser.mjs\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.mjs\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.mjs\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.mjs\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.mjs\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- It's ok, we want any here\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser(),\n};\n","import { Parser } from \"../Parser.mjs\";\n\nexport class EraParser extends Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { getWeekYear } from \"../../../getWeekYear.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class QuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MonthParser extends Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setWeek } from \"../../../setWeek.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { getWeek } from \"./getWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const _date = toDate(date);\n const diff = getWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setISOWeek } from \"../../../setISOWeek.mjs\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getISOWeek } from \"./getISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week) {\n const _date = toDate(date);\n const diff = getISOWeek(_date) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.mjs\";\n\nexport class DayOfYearParser extends Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\n","import { setISODay } from \"../../../setISODay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.mjs\";\nimport { getISODay } from \"./getISODay.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day) {\n const _date = toDate(date);\n const currentDay = getISODay(_date);\n const diff = day - currentDay;\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date) {\n const _date = toDate(date);\n let day = _date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MinuteParser extends Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class SecondParser extends Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getDefaultOptions } from \"./getDefaultOptions.mjs\";\nimport { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { parsers } from \"./parse/_lib/parsers.mjs\";\nimport { DateToSystemTimezoneSetter } from \"./parse/_lib/Setter.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (formatStr === \"\") {\n if (dateStr === \"\") {\n return toDate(referenceDate);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n const setters = [new DateToSystemTimezoneSetter()];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return constructFrom(referenceDate, NaN);\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return constructFrom(referenceDate, NaN);\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = toDate(referenceDate);\n\n if (isNaN(date.getTime())) {\n return constructFrom(referenceDate, NaN);\n }\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return constructFrom(referenceDate, NaN);\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return constructFrom(referenceDate, date);\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import * as i0 from '@angular/core';\nimport { inject, Injectable, NgModule } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { getYear, getMonth, getDate, getDay, getDaysInMonth, parseISO, parse, format, addYears, addMonths, addDays, formatISO, isDate, isValid, set, getHours, getMinutes, getSeconds, addSeconds } from 'date-fns';\n\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n// date-fns doesn't have a way to read/print month names or days of the week directly,\n// so we get them by formatting a date with a format that produces the desired month/day.\nconst MONTH_FORMATS = {\n long: 'LLLL',\n short: 'LLL',\n narrow: 'LLLLL',\n};\nconst DAY_OF_WEEK_FORMATS = {\n long: 'EEEE',\n short: 'EEE',\n narrow: 'EEEEE',\n};\n/** Adds date-fns support to Angular Material. */\nclass DateFnsAdapter extends DateAdapter {\n constructor() {\n super();\n const matDateLocale = inject(MAT_DATE_LOCALE, { optional: true });\n this.setLocale(matDateLocale);\n }\n getYear(date) {\n return getYear(date);\n }\n getMonth(date) {\n return getMonth(date);\n }\n getDate(date) {\n return getDate(date);\n }\n getDayOfWeek(date) {\n return getDay(date);\n }\n getMonthNames(style) {\n const pattern = MONTH_FORMATS[style];\n return range(12, i => this.format(new Date(2017, i, 1), pattern));\n }\n getDateNames() {\n const dtf = typeof Intl !== 'undefined'\n ? new Intl.DateTimeFormat(this.locale.code, {\n day: 'numeric',\n timeZone: 'utc',\n })\n : null;\n return range(31, i => {\n if (dtf) {\n // date-fns doesn't appear to support this functionality.\n // Fall back to `Intl` on supported browsers.\n const date = new Date();\n date.setUTCFullYear(2017, 0, i + 1);\n date.setUTCHours(0, 0, 0, 0);\n return dtf.format(date).replace(/[\\u200e\\u200f]/g, '');\n }\n return i + '';\n });\n }\n getDayOfWeekNames(style) {\n const pattern = DAY_OF_WEEK_FORMATS[style];\n return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));\n }\n getYearName(date) {\n return this.format(date, 'y');\n }\n getFirstDayOfWeek() {\n return this.locale.options?.weekStartsOn ?? 0;\n }\n getNumDaysInMonth(date) {\n return getDaysInMonth(date);\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const result = new Date();\n result.setFullYear(year, month, date);\n result.setHours(0, 0, 0, 0);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = parseISO(value);\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n if (!parseFormat.length) {\n throw Error('Formats array must not be empty.');\n }\n for (const currentFormat of formats) {\n const fromFormat = parse(value, currentFormat, new Date(), { locale: this.locale });\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n return this.invalid();\n }\n else if (typeof value === 'number') {\n return new Date(value);\n }\n else if (value instanceof Date) {\n return this.clone(value);\n }\n return null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('DateFnsAdapter: Cannot format invalid date.');\n }\n return format(date, displayFormat, { locale: this.locale });\n }\n addCalendarYears(date, years) {\n return addYears(date, years);\n }\n addCalendarMonths(date, months) {\n return addMonths(date, months);\n }\n addCalendarDays(date, days) {\n return addDays(date, days);\n }\n toIso8601(date) {\n return formatISO(date, { representation: 'date' });\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n const date = parseISO(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return isDate(obj);\n }\n isValid(date) {\n return isValid(date);\n }\n invalid() {\n return new Date(NaN);\n }\n setTime(target, hours, minutes, seconds) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (hours < 0 || hours > 23) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n if (minutes < 0 || minutes > 59) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n if (seconds < 0 || seconds > 59) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n return set(this.clone(target), { hours, minutes, seconds, milliseconds: 0 });\n }\n getHours(date) {\n return getHours(date);\n }\n getMinutes(date) {\n return getMinutes(date);\n }\n getSeconds(date) {\n return getSeconds(date);\n }\n parseTime(value, parseFormat) {\n return this.parse(value, parseFormat);\n }\n addSeconds(date, amount) {\n return addSeconds(date, amount);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DateFnsAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DateFnsAdapter });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DateFnsAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n\nconst MAT_DATE_FNS_FORMATS = {\n parse: {\n dateInput: 'P',\n timeInput: 'p',\n },\n display: {\n dateInput: 'P',\n timeInput: 'p',\n monthYearLabel: 'LLL uuuu',\n dateA11yLabel: 'PP',\n monthYearA11yLabel: 'LLLL uuuu',\n timeOptionLabel: 'p',\n },\n};\n\nclass DateFnsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DateFnsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: DateFnsModule });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DateFnsModule, providers: [\n {\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n ] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: DateFnsModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n {\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n ],\n }]\n }] });\nclass MatDateFnsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatDateFnsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: MatDateFnsModule });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatDateFnsModule, providers: [provideDateFnsAdapter()] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MatDateFnsModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [provideDateFnsAdapter()],\n }]\n }] });\nfunction provideDateFnsAdapter(formats = MAT_DATE_FNS_FORMATS) {\n return [\n {\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n { provide: MAT_DATE_FORMATS, useValue: formats },\n ];\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DateFnsAdapter, DateFnsModule, MAT_DATE_FNS_FORMATS, MatDateFnsModule, provideDateFnsAdapter };\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date) {\n return toDate(date).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport function getMonth(date) {\n const _date = toDate(date);\n const month = _date.getMonth();\n return month;\n}\n\n// Fallback for modularized imports:\nexport default getMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport function getDate(date) {\n const _date = toDate(date);\n const dayOfMonth = _date.getDate();\n return dayOfMonth;\n}\n\n// Fallback for modularized imports:\nexport default getDate;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date) {\n const _date = toDate(date);\n const day = _date.getDay();\n return day;\n}\n\n// Fallback for modularized imports:\nexport default getDay;\n","import { addMonths } from \"./addMonths.mjs\";\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount) {\n return addMonths(date, amount * 12);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { toDate } from \"./toDate.mjs\";\nimport { addLeadingZeros } from \"./_lib/addLeadingZeros.mjs\";\n\n/**\n * The {@link formatISO} function options.\n */\n\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options.\n *\n * @returns The formatted date string (in loca.l time zone)\n *\n * @throws `date` must not be Invalid Date\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport function formatISO(date, options) {\n const _date = toDate(date);\n\n if (isNaN(_date.getTime())) {\n throw new RangeError(\"Invalid time value\");\n }\n\n const format = options?.format ?? \"extended\";\n const representation = options?.representation ?? \"complete\";\n\n let result = \"\";\n let tzOffset = \"\";\n\n const dateDelimiter = format === \"extended\" ? \"-\" : \"\";\n const timeDelimiter = format === \"extended\" ? \":\" : \"\";\n\n // Representation is either 'date' or 'complete'\n if (representation !== \"time\") {\n const day = addLeadingZeros(_date.getDate(), 2);\n const month = addLeadingZeros(_date.getMonth() + 1, 2);\n const year = addLeadingZeros(_date.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`;\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== \"date\") {\n // Add the timezone.\n const offset = _date.getTimezoneOffset();\n\n if (offset !== 0) {\n const absoluteOffset = Math.abs(offset);\n const hourOffset = addLeadingZeros(Math.trunc(absoluteOffset / 60), 2);\n const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n const sign = offset < 0 ? \"+\" : \"-\";\n\n tzOffset = `${sign}${hourOffset}:${minuteOffset}`;\n } else {\n tzOffset = \"Z\";\n }\n\n const hour = addLeadingZeros(_date.getHours(), 2);\n const minute = addLeadingZeros(_date.getMinutes(), 2);\n const second = addLeadingZeros(_date.getSeconds(), 2);\n\n // If there's also date, separate it with time with 'T'\n const separator = result === \"\" ? \"\" : \"T\";\n\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n const time = [hour, minute, second].join(timeDelimiter);\n\n // HHmmss or HH:mm:ss.\n result = `${result}${separator}${time}${tzOffset}`;\n }\n\n return result;\n}\n\n// Fallback for modularized imports:\nexport default formatISO;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { setMonth } from \"./setMonth.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param values - The date values to be set\n *\n * @returns The new date with options set\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\n\nexport function set(date, values) {\n let _date = toDate(date);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+_date)) {\n return constructFrom(date, NaN);\n }\n\n if (values.year != null) {\n _date.setFullYear(values.year);\n }\n\n if (values.month != null) {\n _date = setMonth(_date, values.month);\n }\n\n if (values.date != null) {\n _date.setDate(values.date);\n }\n\n if (values.hours != null) {\n _date.setHours(values.hours);\n }\n\n if (values.minutes != null) {\n _date.setMinutes(values.minutes);\n }\n\n if (values.seconds != null) {\n _date.setSeconds(values.seconds);\n }\n\n if (values.milliseconds != null) {\n _date.setMilliseconds(values.milliseconds);\n }\n\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default set;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getDaysInMonth } from \"./getDaysInMonth.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport function setMonth(date, month) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const day = _date.getDate();\n\n const dateWithDesiredMonth = constructFrom(date, 0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n const daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n _date.setMonth(month, Math.min(day, daysInMonth));\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport function getHours(date) {\n const _date = toDate(date);\n const hours = _date.getHours();\n return hours;\n}\n\n// Fallback for modularized imports:\nexport default getHours;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport function getMinutes(date) {\n const _date = toDate(date);\n const minutes = _date.getMinutes();\n return minutes;\n}\n\n// Fallback for modularized imports:\nexport default getMinutes;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport function getSeconds(date) {\n const _date = toDate(date);\n const seconds = _date.getSeconds();\n return seconds;\n}\n\n// Fallback for modularized imports:\nexport default getSeconds;\n","import { addMilliseconds } from \"./addMilliseconds.mjs\";\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount) {\n return addMilliseconds(date, amount * 1000);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount) {\n const timestamp = +toDate(date);\n return constructFrom(date, timestamp + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { MatDateFormats } from '@angular/material/core';\n\n// @Injectable({\n// \tprovidedIn: 'root',\n// })\n// export class DateAdapterForMaterial extends NativeDateAdapter {\n// \tconstructor(private readonly cmDate: CmDatePipe, @Inject(MAT_DATE_LOCALE) private readonly matDateLocale: string) {\n// \t\tsuper(matDateLocale);\n// \t}\n\n// \tformat(date: Date, displayFormat: 'input' | Intl.DateTimeFormatOptions): string {\n// \t\tif (displayFormat === 'input') {\n// \t\t\treturn this.cmDate.transform(date);\n// \t\t}\n// \t\treturn date.toLocaleDateString('default', displayFormat);\n// \t}\n// }\n\nexport const DATE_FNS_CM_FORMATS: MatDateFormats = {\n\tparse: {\n\t\tdateInput: 'yyyy-MM-dd',\n\t},\n\tdisplay: {\n\t\tdateInput: 'yyyy-MM-dd',\n\t\tmonthYearLabel: 'yyyy-MM',\n\t\tdateA11yLabel: 'yyyy-MM-dd',\n\t\tmonthYearA11yLabel: 'yyyy-MM/me ',\n\t},\n};\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { LayoutModule } from '@angular/cdk/layout';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig, MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n\tMAT_PAGINATOR_DEFAULT_OPTIONS,\n\tMatPaginatorDefaultOptions,\n\tMatPaginatorModule,\n} from '@angular/material/paginator';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatStepperModule } from '@angular/material/stepper';\n\nimport { DateFnsAdapter, MatDateFnsModule } from '@angular/material-date-fns-adapter';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { AtsIconsModule } from '@ats/icons';\nimport { EditorModule, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';\nimport { enUS } from 'date-fns/locale';\nimport { AtsOverlayContainerDirective } from './directives/ats-overlay-container.directive';\nimport { DATE_FNS_CM_FORMATS } from './models/date-adapter';\n\nconst imports = [\n\tCommonModule,\n\tEditorModule,\n\tAtsIconsModule,\n\tClipboardModule,\n\tMatButtonModule,\n\tMatCheckboxModule,\n\tMatChipsModule,\n\tMatDialogModule,\n\tMatFormFieldModule,\n\tMatInputModule,\n\tMatMenuModule,\n\tMatRadioModule,\n\tMatSelectModule,\n\tMatSnackBarModule,\n\tMatSlideToggleModule,\n\tMatStepperModule,\n\tMatTabsModule,\n\tMatTooltipModule,\n\tScrollingModule,\n\tOverlayModule,\n\tA11yModule,\n\tLayoutModule,\n\tMatDatepickerModule,\n\tMatNativeDateModule,\n\tMatTreeModule,\n\tDragDropModule,\n\tPlatformModule,\n\tPortalModule,\n\tMatPaginatorModule,\n\tMatDividerModule,\n\tMatDateFnsModule,\n];\n\nconst providers = [\n\t{ provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' },\n\t{ provide: DateAdapter, useClass: DateFnsAdapter, deps: [MAT_DATE_LOCALE] },\n\t{ provide: MAT_DATE_FORMATS, useValue: DATE_FNS_CM_FORMATS },\n\t{ provide: MAT_DATE_LOCALE, useValue: enUS },\n\t{\n\t\tprovide: MAT_DIALOG_DEFAULT_OPTIONS,\n\t\tuseValue: {\n\t\t\t...new MatDialogConfig(),\n\t\t\tcloseOnNavigation: true,\n\t\t\thasBackdrop: true,\n\t\t\tautoFocus: true,\n\t\t\tpanelClass: 'global-zoomed-dialog',\n\t\t} as MatDialogConfig,\n\t},\n\t{\n\t\tprovide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n\t\tuseValue: {\n\t\t\tshowDelay: 500,\n\t\t\tposition: 'above',\n\t\t},\n\t},\n\t{\n\t\tprovide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n\t\tuseValue: {\n\t\t\tsubscriptSizing: 'dynamic',\n\t\t},\n\t},\n\t{\n\t\tprovide: MAT_PAGINATOR_DEFAULT_OPTIONS,\n\t\tuseValue: {\n\t\t\tformFieldAppearance: 'fill',\n\t\t} as MatPaginatorDefaultOptions,\n\t},\n];\n\n@NgModule({\n\tdeclarations: [AtsOverlayContainerDirective],\n\timports,\n\texports: [...imports, [AtsOverlayContainerDirective]],\n\tproviders,\n})\nexport class AtsUiModule {}\n","import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { from, Observable } from 'rxjs';\r\nimport { concatMap, first } from 'rxjs/operators';\r\n\r\nexport class MultiGuardFactory {\r\n\tpublic static createInstance(...guards: ObservableGuard[]) {\r\n\t\treturn new MultiGuard(...guards);\r\n\t}\r\n}\r\n\r\ninterface ObservableGuard {\r\n\tcanActivate: (\r\n\t\troute?: ActivatedRouteSnapshot,\r\n\t\tstate?: RouterStateSnapshot\r\n\t) => Observable;\r\n}\r\n\r\nclass MultiGuard implements CanActivate {\r\n\tprivate guards: ObservableGuard[];\r\n\r\n\tconstructor(...guards: ObservableGuard[]) {\r\n\t\tthis.guards = guards;\r\n\t}\r\n\r\n\tcanActivate(\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\tstate: RouterStateSnapshot\r\n\t): Observable {\r\n\t\treturn from(this.guards).pipe(\r\n\t\t\tconcatMap(guard => guard.canActivate(route, state)),\r\n\t\t\tfirst((results, idx) => results !== true || idx + 1 === this.guards.length)\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport const multiGuardFn = (\r\n\troute: ActivatedRouteSnapshot,\r\n\tstate: RouterStateSnapshot,\r\n\t...guards: ObservableGuard[]\r\n): Observable =>\r\n\tfrom(guards).pipe(\r\n\t\tconcatMap(guard => guard.canActivate(route, state)),\r\n\t\tfirst((results, idx) => results !== true || idx + 1 === guards.length)\r\n\t);\r\n","import { Observable, map } from 'rxjs';\r\n\r\n/**\r\n * @param {Observable} source - A source observable\r\n * @param { object } source.sourceObj - The object that needs filtered\r\n * @param { object } source.filterObj - The object used to filter out values on the source\r\n * @returns {Parital} The source object minus values that exist in the filter object\r\n */\r\nexport const negateObjects =\r\n\t = Record>(): ((\r\n\t\tsource$: Observable<[O, Record]>\r\n\t) => Observable>) =>\r\n\t(source$: Observable<[O, Record]>) =>\r\n\t\tsource$.pipe(map(([sourceObj, filterObj]) => negateObjectsFn(sourceObj, filterObj)));\r\n\r\n/**\r\n * The source object is getting mapped to an array and back into an object.\r\n * This will be less performant with large objects.\r\n * @param { object } source - The object that needs filtered\r\n * @param { object } filter - The object used to filter out values on the source\r\n * @returns {Partial} The source object minus values that exist in the filter object\r\n */\r\nexport const negateObjectsFn = = Record>(\r\n\tsourceObj: O,\r\n\tfilterObj: Record\r\n): Record =>\r\n\tObject.entries(sourceObj).reduce(\r\n\t\t(newObj, [key, value]) => (Object.hasOwnProperty.call(filterObj, key) ? newObj : { ...newObj, [key]: value }),\r\n\t\t{} as Record\r\n\t);\r\n","import { Maybe } from '@ats/api/cm';\r\nimport { filter, Observable } from 'rxjs';\r\nimport { AtsUtility } from '../classes/ats-utility.class';\r\n\r\nexport const filterNullOrUndefined =\r\n\t(): ((source$: Observable | T>) => Observable) =>\r\n\t(source$: Observable | T>) =>\r\n\t\tsource$.pipe(filter(AtsUtility.isNotNullOrUndefined));\r\n","import { Maybe } from '@ats/api/cm';\r\n\r\nexport class AtsUtility {\r\n\tpublic static isTruthyOrZero(value: any) {\r\n\t\treturn value || value === 0;\r\n\t}\r\n\r\n\tpublic static isNotNullOrUndefined = (\r\n\t\tinput: null | undefined | Maybe | T\r\n\t): input is T => input !== null && input !== undefined;\r\n}\r\n","import { Papa } from 'ngx-papaparse';\r\nimport { Observable, map } from 'rxjs';\r\nimport { ExportField } from '../models';\r\n\r\nexport class AtsCsv {\r\n\tpublic static download = (blob: Blob, fileName: string): void => {\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst anchor = document.createElement('a');\r\n\t\tanchor.download = fileName;\r\n\t\tanchor.href = url;\r\n\t\tanchor.click();\r\n\t\tanchor.remove();\r\n\t};\r\n\r\n\tpublic static createBlob = (exportData: any[][], headers: string[] = []): Blob => {\r\n\t\tif (!exportData.length && !headers.length) {\r\n\t\t\tthrow new Error('Empty data and headers.');\r\n\t\t}\r\n\t\tconst parser = new Papa();\r\n\t\tconst parsedData = '\\uFEFF' + parser.unparse([...[headers], ...exportData], { header: true });\r\n\t\treturn new Blob([parsedData], { type: 'text/csv' });\r\n\t};\r\n\r\n\tpublic static createExportHeaders = (\r\n\t\tdata$: Observable,\r\n\t\texportFieldMap: ExportField[]\r\n\t) => {\r\n\t\treturn data$.pipe(\r\n\t\t\tmap(data => {\r\n\t\t\t\tconst headers = exportFieldMap.map(fields => fields.exportHeader);\r\n\t\t\t\tconst exportFields = exportFieldMap.map(fields => fields.id);\r\n\t\t\t\tconst exportData = data.map(datum => exportFields.map(field => datum[field] ?? ''));\r\n\t\t\t\treturn { headers, exportData };\r\n\t\t\t})\r\n\t\t);\r\n\t};\r\n}\r\n","import { AtsDateUnit } from '../models';\r\n\r\nconst NullHigh = new Date('12/12/4200');\r\nconst NullLow = new Date('01/01/1970');\r\nconst NullCustom = (days: number, fromHigh: boolean = true): Date => {\r\n\tconst dt = fromHigh ? NullHigh : NullLow;\r\n\treturn new Date(dt.setDate(dt.getDate() + days));\r\n};\r\n\r\nexport class AtsDate {\r\n\tpublic static Null = {\r\n\t\tHIGH: NullHigh,\r\n\t\tLOW: NullLow,\r\n\t\tSTR: {\r\n\t\t\tHIGH: NullHigh.toISOString(),\r\n\t\t\tLOW: NullLow.toISOString(),\r\n\t\t\tCUSTOM: (days: number, fromHigh: boolean = true) => NullCustom(days, fromHigh).toISOString(),\r\n\t\t},\r\n\r\n\t\tCUSTOM: NullCustom,\r\n\t};\r\n\t/**\r\n\t * Get the current date and time\r\n\t */\r\n\tpublic static Now = new Date();\r\n\t/**\r\n\t * Get the current date at midnight\r\n\t */\r\n\tpublic static Today = new Date(new Date().setHours(0, 0, 0, 0));\r\n\r\n\tpublic static clone = (dt: Date = new Date()) => {\r\n\t\treturn new Date(dt);\r\n\t};\r\n\r\n\tpublic static addSeconds = (by: number, to: Date = new Date()): Date => AtsDate.add(by, to, AtsDateUnit.Second);\r\n\r\n\tpublic static subtractSeconds = (by: number, to: Date = new Date()): Date =>\r\n\t\tAtsDate.subtract(by, to, AtsDateUnit.Second);\r\n\r\n\tpublic static addDays = (by: number, to: Date = new Date()): Date => AtsDate.add(by, to, AtsDateUnit.Day);\r\n\r\n\tpublic static addMinutes = (by: number, to: Date = new Date()): Date => AtsDate.add(by, to, AtsDateUnit.Minute);\r\n\r\n\tpublic static subtractDays = (by: number, to: Date = new Date()): Date => AtsDate.subtract(by, to, AtsDateUnit.Day);\r\n\r\n\tpublic static addMonths = (by: number, to: Date = new Date()): Date => AtsDate.add(by, to, AtsDateUnit.Month);\r\n\r\n\tpublic static subtractMonths = (by: number, to: Date = new Date()): Date =>\r\n\t\tAtsDate.subtract(by, to, AtsDateUnit.Month);\r\n\r\n\tpublic static add = (by: number, to?: Date, unit?: AtsDateUnit) => {\r\n\t\tconst retVal = AtsDate.clone(to || new Date());\r\n\t\tswitch (unit) {\r\n\t\t\tcase AtsDateUnit.Second:\r\n\t\t\t\treturn new Date(retVal.setSeconds(retVal.getSeconds() + by));\r\n\t\t\tcase AtsDateUnit.Minute:\r\n\t\t\t\treturn new Date(retVal.setMinutes(retVal.getMinutes() + by));\r\n\t\t\tcase AtsDateUnit.Hour:\r\n\t\t\t\treturn new Date(retVal.setHours(retVal.getHours() + by));\r\n\t\t\tcase AtsDateUnit.Day:\r\n\t\t\t\treturn new Date(retVal.setDate(retVal.getDate() + by));\r\n\t\t\tcase AtsDateUnit.Month:\r\n\t\t\t\treturn new Date(retVal.setMonth(retVal.getMonth() + by));\r\n\t\t\tcase AtsDateUnit.Year:\r\n\t\t\t\treturn new Date(retVal.setFullYear(retVal.getFullYear() + by));\r\n\t\t\tdefault:\r\n\t\t\t\treturn new Date(retVal.getMilliseconds() + by);\r\n\t\t}\r\n\t};\r\n\r\n\tpublic static subtract = (by: number, to?: Date, unit?: AtsDateUnit) => new Date(AtsDate.add(by * -1, to, unit));\r\n\r\n\tpublic static since = (dt: Date, unit: AtsDateUnit) => {\r\n\t\tconst then = AtsDate.clone(dt);\r\n\t\tconst diff = AtsDate.Now.getTime() - then.getTime();\r\n\t\treturn AtsDate.fromMS(diff, unit);\r\n\t};\r\n\r\n\tpublic static isPast = (dt: Date): boolean => AtsDate.since(dt, AtsDateUnit.Second) > 0;\r\n\tpublic static isBefore = (dt: Date): boolean => AtsDate.since(dt, AtsDateUnit.Second) < 0;\r\n\r\n\tpublic static formatDuration = (num: number, unit: AtsDateUnit) =>\r\n\t\tAtsDate.formatDurationFromMS(AtsDate.toMS(num, unit));\r\n\r\n\tpublic static formatDurationFromMS = (num: number) => {\r\n\t\tconst hours = Math.floor(AtsDate.fromMS(num, AtsDateUnit.Hour));\r\n\t\tnum = num - AtsDate.toMS(hours, AtsDateUnit.Hour);\r\n\t\tconst minutes = Math.floor(AtsDate.fromMS(num, AtsDateUnit.Minute));\r\n\t\tnum = num - AtsDate.toMS(minutes, AtsDateUnit.Minute);\r\n\t\tconst seconds = Math.floor(AtsDate.fromMS(num, AtsDateUnit.Second));\r\n\t\tnum = num - AtsDate.toMS(seconds, AtsDateUnit.Second);\r\n\t\t// prettier-ignore\r\n\t\treturn `${hours < 10 ? '0' + hours : hours}:${minutes < 10 ? '0' + minutes : minutes}:${seconds < 10 ? '0' + seconds : seconds}`;\r\n\t};\r\n\r\n\tpublic static toMS = (num: number, unit: AtsDateUnit) => {\r\n\t\tswitch (unit) {\r\n\t\t\tcase AtsDateUnit.Second:\r\n\t\t\t\treturn num * 1000;\r\n\t\t\tcase AtsDateUnit.Minute:\r\n\t\t\t\treturn num * 1000 * 60;\r\n\t\t\tcase AtsDateUnit.Hour:\r\n\t\t\t\treturn num * 1000 * 60 * 60;\r\n\t\t\tdefault:\r\n\t\t\t\treturn num;\r\n\t\t}\r\n\t};\r\n\r\n\tpublic static fromMS = (num: number, unit: AtsDateUnit) => {\r\n\t\tswitch (unit) {\r\n\t\t\tcase AtsDateUnit.Second:\r\n\t\t\t\treturn num / 1000;\r\n\t\t\tcase AtsDateUnit.Minute:\r\n\t\t\t\treturn num / (1000 * 60);\r\n\t\t\tcase AtsDateUnit.Hour:\r\n\t\t\t\treturn num / (1000 * 60 * 60);\r\n\t\t\tcase AtsDateUnit.Day:\r\n\t\t\t\treturn num / (1000 * 60 * 60 * 24);\r\n\t\t\tdefault:\r\n\t\t\t\treturn num;\r\n\t\t}\r\n\t};\r\n\r\n\tpublic static until = (dt: Date, unit: AtsDateUnit) => AtsDate.since(dt, unit) * -1;\r\n\r\n\tpublic static toMidnight = (dateTime: Date): Date => new Date(dateTime.setHours(0, 0, 0, 0));\r\n}\r\n","export class AtsGuid {\r\n\tstatic New = () => {\r\n\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tconst r = (Math.random() * 16) | 0,\r\n\t\t\t\tv = c == 'x' ? r : (r & 0x3) | 0x8;\r\n\t\t\treturn v.toString(16);\r\n\t\t});\r\n\t};\r\n}\r\n","export class AtsRegex {\n\tpublic static NON_NEGATIVE_INTEGER = /^(0|[1-9]\\d*)?$/;\n\tpublic static INTEGER = /^-?(0|[1-9]\\d*)?$/;\n\tpublic static WHITESPACE = /\\s+/g;\n\tpublic static DECIMAL = /^[+]?([0-9]+(?:[.][0-9]*)?|\\.[0-9]+)$/;\n\tpublic static EXCLUDE_QUESTION_MARK_AT_START_OF_STRING = /^[^?].*/;\n}\n","/* eslint-disable @typescript-eslint/ban-types */\nexport class AtsObject {\n\tpublic static deepValue = (obj: any, nestedKey: string | string[]): string => {\n\t\tlet keys: string[];\n\n\t\tif (typeof nestedKey === 'string') {\n\t\t\tkeys = nestedKey.includes('.') ? [...(nestedKey as string).split('.')] : [nestedKey as string];\n\t\t} else {\n\t\t\tkeys = nestedKey as string[];\n\t\t}\n\n\t\tlet returnVal = obj;\n\n\t\tkeys.forEach(key => {\n\t\t\treturnVal = returnVal[key] ? returnVal[key] : returnVal;\n\t\t});\n\t\treturn returnVal.toString();\n\t};\n\n\tpublic static hasProperties = (obj: any, nestedKey: string | string[]): string => {\n\t\tlet keys: string[];\n\n\t\tif (typeof nestedKey === 'string') {\n\t\t\tkeys = nestedKey.includes('.') ? [...(nestedKey as string).split('.')] : [nestedKey as string];\n\t\t} else {\n\t\t\tkeys = nestedKey as string[];\n\t\t}\n\n\t\tlet returnVal = obj;\n\n\t\tkeys.forEach(key => {\n\t\t\treturnVal = returnVal[key] ? returnVal[key] : returnVal;\n\t\t});\n\t\treturn returnVal.toString();\n\t};\n\n\tpublic static deepCopy(inObject: { [key: string | number]: any } | T[]): object | T[] {\n\t\tlet outObject: { [key: string | number]: any } | T[], value: object | T[];\n\n\t\tif (typeof inObject !== 'object' || inObject === null) {\n\t\t\treturn inObject; // Return the value if inObject is not an object\n\t\t}\n\n\t\tconst isArray: boolean = Array.isArray(inObject);\n\n\t\t// Create an array or object to hold the values\n\t\toutObject = isArray ? [] : {};\n\n\t\tfor (const key in inObject) {\n\t\t\tif (key) {\n\t\t\t\tvalue = inObject[key];\n\n\t\t\t\t// Recursively (deep) copy for nested objects, including arrays\n\t\t\t\toutObject[key] = AtsObject.deepCopy(value);\n\t\t\t}\n\t\t}\n\n\t\treturn outObject;\n\t}\n\n\tpublic static deepCompare(x: any, y: any): boolean {\n\t\tconst ok = Object.keys,\n\t\t\ttx = typeof x,\n\t\t\tty = typeof y;\n\t\treturn x && y && tx === 'object' && tx === ty\n\t\t\t? ok(x).length === ok(y).length && ok(x).every(key => AtsObject.deepCompare(x[key], y[key]))\n\t\t\t: x === y;\n\t}\n}\n","import { Directive, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class Unsubscribable implements OnDestroy {\r\n\tprotected unsubSubj: Subject = new Subject();\r\n\tprotected unsub: Observable = this.unsubSubj.asObservable();\r\n\r\n\tunsubDestroy() {\r\n\t\tthis.unsubSubj.next();\r\n\t\tthis.unsubSubj.complete();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.unsubDestroy();\r\n\t}\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\n selector: 'button[atsCopyElementToClipboard]',\n standalone: false\n})\r\nexport class AtsCopyElementToClipboard implements AfterViewInit, OnInit {\r\n\t// eslint-disable-next-line @angular-eslint/no-input-rename\r\n\t@Input('atsCopyElementToClipboard') targetEl!: HTMLElement;\r\n\r\n\tconstructor(private el: ElementRef, private renderer2: Renderer2) {}\r\n\r\n\tngOnInit() {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.el) {\r\n\t\t\tthis.renderer2.listen(this.el.nativeElement, 'click', () => this.copy());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate copy() {\r\n\t\tif (!this.targetEl) return;\r\n\t\tconst range = document.createRange();\r\n\t\trange.selectNodeContents(this.targetEl);\r\n\t\tconst select = window.getSelection();\r\n\t\tselect?.removeAllRanges();\r\n\t\tselect?.addRange(range);\r\n\t\tdocument.execCommand('copy');\r\n\t}\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\n@UntilDestroy()\n@Directive({\n selector: '[atsGlobalEvent]',\n standalone: false\n})\nexport class AtsGlobalEventDirective implements OnDestroy, OnInit {\n\t@Input('atsGlobalEvent') name!: string;\n\t@Input() atsGlobalDispatch!: Observable;\n\t@Input() atsGlobalCallback?: Function;\n\tprivate eventHandler!: Function;\n\n\tconstructor(private renderer: Renderer2) {}\n\n\tngOnInit() {\n\t\tconst event: any = new Event(this.name);\n\t\tthis.eventHandler = this.renderer.listen('document', this.name, () => {\n\t\t\tif (this.atsGlobalCallback) this.atsGlobalCallback();\n\t\t});\n\n\t\tthis.atsGlobalDispatch.pipe(untilDestroyed(this), delay(50)).subscribe(() => {\n\t\t\tdocument.dispatchEvent(event);\n\t\t});\n\t}\n\tngOnDestroy() {\n\t\tthis.eventHandler();\n\t}\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable, debounceTime } from 'rxjs';\nimport { AtsResponsiveService } from '../services/responsive.service';\n\n@UntilDestroy()\n@Directive({\n selector: '[atsResponsive]',\n standalone: false\n})\nexport class ResponsiveDirective implements OnInit {\n\t@Input() skipUpdateOnStart: boolean = false;\n\t@Input() watcher$!: Observable;\n\twidth: any;\n\tclasses!: string[];\n\tallClasses = ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg', 'xs', 'sm', 'md', 'lg', 'xl', 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl'];\n\n\tconstructor(\n\t\tprivate readonly responsiveService: AtsResponsiveService,\n\t\tprivate readonly elementRef: ElementRef,\n\t\tprivate readonly renderer: Renderer2\n\t) {}\n\n\tngOnInit(): void {\n\t\tif (!this.skipUpdateOnStart) this.updateWidth();\n\n\t\tthis.responsiveService.windowResize$.pipe(untilDestroyed(this)).subscribe(() => {\n\t\t\tthis.updateWidth();\n\t\t});\n\n\t\tif (this.watcher$) {\n\t\t\tthis.watcher$.pipe(debounceTime(300), untilDestroyed(this)).subscribe(() => {\n\t\t\t\tthis.updateWidth();\n\t\t\t});\n\t\t}\n\t}\n\n\tupdateWidth(): void {\n\t\tthis.width = this.elementRef.nativeElement.offsetWidth;\n\t\tthis.classes = [];\n\t\tif (this.width < 599) {\n\t\t\tthis.classes = ['xs', 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl'];\n\t\t} else if (this.width < 959) {\n\t\t\tthis.classes = ['gt-xs', 'sm', 'lt-md', 'lt-lg', 'lt-xl'];\n\t\t} else if (this.width < 1279) {\n\t\t\tthis.classes = ['gt-xs', 'gt-sm', 'md', 'lt-lg', 'lt-xl'];\n\t\t} else if (this.width < 1919) {\n\t\t\tthis.classes = ['gt-xs', 'gt-sm', 'gt-md', 'lg', 'lt-xl'];\n\t\t} else {\n\t\t\tthis.classes = ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg', 'xl'];\n\t\t}\n\n\t\tthis.allClasses.forEach(cls => {\n\t\t\tthis.renderer.removeClass(this.elementRef.nativeElement, cls);\n\t\t\tif (this.classes.includes(cls)) {\n\t\t\t\tthis.renderer.addClass(this.elementRef.nativeElement, cls);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n selector: '[atsScrollIntoView]',\n standalone: false\n})\nexport class ScrollIntoViewDirective implements AfterViewInit {\n\t@Input('atsScrollIntoView') selector!: string | Observable;\n\t@Input() atsScrollAttempts = 3;\n\tprivate timer!: any;\n\n\tconstructor(private el: ElementRef) {}\n\n\tngAfterViewInit() {\n\t\tif (typeof this.selector === 'string') this.checkForSelector(0, this.selector);\n\t\telse\n\t\t\tthis.selector\n\t\t\t\t.pipe(take(1))\n\t\t\t\t.subscribe(selector => setTimeout(() => this.checkForSelector(0, selector), 100));\n\t}\n\n\tprivate checkForSelector(attempts: number, selector: string) {\n\t\tif (this.timer) clearTimeout(this.timer);\n\t\tif (this.el.nativeElement.classList.contains(selector)) {\n\t\t\t// ! CAUTION - When block is set to 'center,' it looks better, but there is a UI bug that will increase the footer of the page a\n\t\t\t// ! great deal if the details for a cp card grid is larger than the page.\n\t\t\t// Examples\n\t\t\t// http://certmetricslocal.com:4000/cmdemo/en/catalogs/credential/59/details\n\t\t\t// http://certmetricslocal.com:4000/cmdemo/en/catalogs/credential/116/details\n\t\t\t// http://certmetricslocal.com:4000/cmdemo/en/catalogs/credential/168/details\n\t\t\t// http://certmetricslocal.com:4000/cmdemo/en/catalogs/credential/178/details\n\t\t\tthis.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'start' });\n\t\t} else {\n\t\t\tif (attempts < this.atsScrollAttempts)\n\t\t\t\tthis.timer = setTimeout(() => this.checkForSelector(attempts + 1, selector), 500);\n\t\t}\n\t}\n}\n","export type BooleanDisplay = 'Yes' | 'No' | 'N/A';\r\nexport const Positive: Extract = 'Yes';\r\nexport const Negative: Extract = 'No';\r\nexport const Unavailable: Extract = 'N/A';\r\n\r\nexport const format = (value?: boolean | string, binary = true): BooleanDisplay => {\r\n\treturn binary || value !== null ? (!value || value === '' ? Negative : Positive) : Unavailable;\r\n};\r\n\r\nexport const isNull = (val: boolean | string) => val === null || val === Unavailable;\r\nexport const isFalse = (val: boolean | string) =>\r\n\tval === false ||\r\n\tval === '' ||\r\n\tval.toString().toLowerCase() === Negative.toLowerCase() ||\r\n\tval.toString().toLowerCase() === 'false';\r\nexport const isTrue = (val: boolean | string) => !isFalse(val);\r\nexport const isFalsey = (val: boolean | string) => isFalse(val) || isNull(val);\r\nexport const isTruthy = (val: boolean | string) => isTrue(val) && !isNull(val);\r\n","import { Maybe } from '@ats/api/cm';\r\nimport { AtsUtility } from '../classes/ats-utility.class';\r\n\r\nexport const notNullOrUndefined: (item: Maybe | T | undefined | null) => item is T =\r\n\tAtsUtility.isNotNullOrUndefined;\r\n","import { MapEnumKeys } from './map-enum-keys';\r\n\r\nexport const OrderEnumByIndex = (original: object, order: string[]): { [key: string]: number } =>\r\n\tMapEnumKeys(\r\n\t\toriginal,\r\n\t\tkey => order.indexOf(key),\r\n\t\tkey => order.includes(key)\r\n\t);\r\n","export const MapEnumKeys = (original: object, map: (key: string) => V, filter?: (key: string) => boolean) =>\r\n\tObject.keys(original)\r\n\t\t.filter(key => (isNaN(Number(key)) === false && filter ? filter(key) : true))\r\n\t\t.reduce(\r\n\t\t\t(obj, key) => ({\r\n\t\t\t\t...obj,\r\n\t\t\t\t[key]: map(key),\r\n\t\t\t}),\r\n\t\t\t{}\r\n\t\t);\r\n","import { formatDate } from '@angular/common';\r\n\r\nexport const toCMDate = (value: any, format: string = 'yyyy-MM-dd', timezone?: string) => {\r\n\tconst dateString = Date.parse(value);\r\n\tif (!dateString) {\r\n\t\treturn '';\r\n\t}\r\n\treturn formatDate(dateString, format, 'en', timezone ? timezone : undefined);\r\n};\r\n","// Somewhat old, but see no reason it won't work\r\n// Taken from https://www.bennadel.com/blog/3580-using-pure-pipes-to-generate-ngfor-trackby-identity-functions-for-mixed-collections-in-angular-7-2-7.htm\r\n\r\ninterface TrackByFunctionCache {\r\n\t[property: string]: (index: number, item: T) => any;\r\n}\r\n\r\nconst cache: TrackByFunctionCache = Object.create(null);\r\n\r\nexport function trackByProperty(propertyNames: '$index'): any;\r\nexport function trackByProperty(propertyNames: string[]): any;\r\nexport function trackByProperty(propertyNames: string): any;\r\nexport function trackByProperty(propertyNames: any): any {\r\n\tlet cacheKey = propertyNames;\r\n\r\n\t// Handle an array of properties (composit key)\r\n\tif (Array.isArray(propertyNames)) {\r\n\t\tcacheKey = propertyNames.join('->');\r\n\r\n\t\tif (!cache[cacheKey]) {\r\n\t\t\tcache[cacheKey] = function trackByProperty(index: number, item: T): any {\r\n\t\t\t\tconst values = [];\r\n\t\t\t\tfor (const propertyName of propertyNames) {\r\n\t\t\t\t\tvalues.push(item[propertyName as keyof T]);\r\n\t\t\t\t}\r\n\t\t\t\treturn values.join('->');\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Handle an index as they key\r\n\t} else if (propertyNames === '$index') {\r\n\t\tif (!cache[cacheKey]) {\r\n\t\t\tcache[cacheKey] = function trackByProperty(index: number, item: T): any {\r\n\t\t\t\treturn index;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Default to a single property\r\n\t} else {\r\n\t\tif (!cache[propertyNames]) {\r\n\t\t\tcache[propertyNames] = function trackByProperty(index: number, item: T): any {\r\n\t\t\t\treturn item[propertyNames as keyof T];\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn cache[cacheKey];\r\n}\r\n","export enum AtsDateUnit {\r\n\tSecond = 'Second',\r\n\tMinute = 'Minute',\r\n\tHour = 'Hour',\r\n\tDay = 'Day',\r\n\tMonth = 'Month',\r\n\tYear = 'Year',\r\n}\r\n","export enum AtsFileTypes {\r\n\tPNG = 'image/png',\r\n\tJPEG = 'image/jpeg',\r\n\tZIP = 'application/zip',\r\n\tX_ZIP_COMPRESSED = 'application/x-zip-compressed',\r\n\tX_COMPRESSED = 'application/x-compressed',\r\n\tX_ZIP = 'multipart/x-zip',\r\n\tDOCX = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n\tCSV = 'text/csv',\r\n\tFIREFOX_EXCEL = 'application/vnd.ms-excel',\r\n}\r\n","export enum ATS_OG_META {\r\n\tURL = 'og:url',\r\n\tTITLE = 'og:title',\r\n\tDESCRIPTION = 'og:description',\r\n\tAPPID = 'fb:app_id',\r\n\tTYPE = 'og:type',\r\n\tLOCALE = 'og:locale',\r\n\tSITENAME = 'og:site_name',\r\n\tVIDEO = 'og:video',\r\n\tVIDEOURL = 'og:video:url', // Equivalent to VIDEO\r\n\tVIDEOSECUREURL = 'og:video:secure_url', // \tSecure URL for the video. Include this even if you set the secure URL in og:video.\r\n\tVIDEOTYPE = 'og:video:type', // MIME type of the video. Either application/x-shockwave-flash or video/mp4.\r\n\tVIDEOWIDTH = 'og:video:width', // Width of video in pixels. This property is required for videos.\r\n\tVIDEOHEIGHT = 'og:video:height', //Height of video in pixels. This property is required for videos.\r\n\tIMAGE = 'og:image', // URL for the image. To update an image after it's been published, use a new URL for the new image. Images are cached based on the URL and won't be updated unless the URL changes.\r\n\tIMAGEURL = 'og:image:url', //Equivalent to IMAGE\r\n\tIMAGESECUREURL = 'og:image:secure_url', // \tSecure URL for the image https://\r\n\tIMAGETYPE = 'og:image:type', //\tMIME type of the image. One of image/jpeg, image/gif or image/png\r\n\tIMAGEWIDTH = 'og:image:width', // Width of image in pixels. This property is required for videos.\r\n\tIMAGEHEIGHT = 'og:image:height', // Height of image in pixels. This property is required for videos.\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { AtsObject } from '../classes';\r\n// Thanks to https://dev.to/codephobia/using-typescript-to-sort-by-keys-35ob\r\n\r\n// Errors.\r\nconst ERROR_REQUIRES_AT_LEAST_ONE_KEY = 'Provide at least one key to sort by';\r\nconst ERROR_KEY_LENGTH_INVALID = 'A key was provided as an empty string';\r\nconst ERROR_DESC_KEY_LENGTH_INVALID = 'A descending key was missing the key name';\r\nconst ERROR_OBJECT_DOESNT_CONTAIN_KEY = 'A key you are attempting to sort by is not on all objects';\r\n\r\n/**\r\n * Recursive function to sort values by their keys.\r\n */\r\nconst _atsSortFn = (a: T, b: T, ...keys: string[]): number => {\r\n\t// Get first key in array.\r\n\tlet keyVal = keys.shift()!;\r\n\r\n\t// Make sure we have a valid key name.\r\n\tif (!keyVal.length) {\r\n\t\tthrow new Error(ERROR_KEY_LENGTH_INVALID);\r\n\t}\r\n\r\n\t// Default to ascending order.\r\n\tlet desc = false;\r\n\r\n\t// Check for descending sort.\r\n\tif (keyVal.charAt(0) === '-') {\r\n\t\t// Make sure key has a name as well as the minus sign.\r\n\t\tif (keyVal.length < 2) {\r\n\t\t\tthrow new Error(ERROR_DESC_KEY_LENGTH_INVALID);\r\n\t\t}\r\n\r\n\t\t// Remove minus from key name.\r\n\t\tkeyVal = keyVal.substr(1);\r\n\r\n\t\t// Flag as descending order.\r\n\t\tdesc = true;\r\n\t}\r\n\r\n\tconst key = keyVal.includes('.') ? [...keyVal.split('.')] : [keyVal];\r\n\tlet aVal: any;\r\n\tlet bVal: any;\r\n\r\n\t// Make sure the objects both have the key. We make sure\r\n\t// to check this after we have removed the minus sign.\r\n\tif (key.length > 1) {\r\n\t\tif (!AtsObject.hasProperties(a, key) || !AtsObject.hasProperties(b, key)) {\r\n\t\t\tthrow new Error(ERROR_OBJECT_DOESNT_CONTAIN_KEY + ': ' + key);\r\n\t\t}\r\n\r\n\t\taVal = AtsObject.deepValue(a, key);\r\n\t\tbVal = AtsObject.deepValue(b, key);\r\n\t} else {\r\n\t\tif (!Object.prototype.hasOwnProperty.call(a, key[0]) || !Object.prototype.hasOwnProperty.call(b, key[0])) {\r\n\t\t\tthrow new Error(ERROR_OBJECT_DOESNT_CONTAIN_KEY + ': ' + key);\r\n\t\t}\r\n\r\n\t\taVal = (a as Record)[key[0]];\r\n\t\tbVal = (b as Record)[key[0]];\r\n\t}\r\n\r\n\t// Determine checks based on asc / desc.\r\n\tconst direction = desc ? -1 : 1;\r\n\r\n\t// If they are the same, sort by next available key\r\n\tif (aVal === bVal && keys.length) return _atsSortFn(a, b, ...keys);\r\n\r\n\t// Handle the nulls\r\n\tif ([null, 'NA', 'N/A'].includes(aVal)) {\r\n\t\treturn 1 * direction;\r\n\t}\r\n\tif ([null, 'NA', 'N/A'].includes(bVal)) {\r\n\t\treturn -1 * direction;\r\n\t}\r\n\r\n\t// Handle strings\r\n\tif (typeof aVal === 'string' && typeof bVal === 'string') {\r\n\t\t// MDN says Intl.Collator is faster\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare#performance\r\n\t\treturn Intl.Collator(undefined, { sensitivity: 'base' }).compare(aVal, bVal) * direction;\r\n\t}\r\n\r\n\t// Perform bubble sort on numbers\r\n\tif (aVal > bVal) {\r\n\t\treturn 1 * direction;\r\n\t}\r\n\tif (aVal < bVal) {\r\n\t\treturn -1 * direction;\r\n\t}\r\n\r\n\t// Catchall and there are more keys\r\n\tif (keys.length) {\r\n\t\treturn _atsSortFn(a, b, ...keys);\r\n\t}\r\n\r\n\t// All keys returned and no more sorting needed.\r\n\treturn 0;\r\n};\r\n\r\n/**\r\n * Wrapper sort function for the recursive one.\r\n */\r\nexport const atsSortFn = (data: T[], ...keys: string[]): T[] => {\r\n\t// Make sure we have at least one key to sort by.\r\n\tif (!keys.length) {\r\n\t\tthrow new Error(ERROR_REQUIRES_AT_LEAST_ONE_KEY);\r\n\t}\r\n\r\n\tif (!data || !data.length) return [];\r\n\r\n\t// Sort data.\r\n\tdata = data.slice().sort((a: T, b: T): number => {\r\n\t\treturn _atsSortFn(a, b, ...keys);\r\n\t});\r\n\r\n\t// Return sorted data.\r\n\treturn data;\r\n};\r\n\r\nexport const atsSort = (...keys: string[]) => map((x: T[]): T[] => atsSortFn(x, ...keys));\r\n\r\nexport const atsPrimitiveSortFn = ([...data]: (number | string)[]): (number | string)[] => {\r\n\treturn data.sort((a: any, b: any) => {\r\n\t\tif (['', null, 'NA', 'N/A'].includes(a)) return 1;\r\n\t\tif (['', null, 'NA', 'N/A'].includes(b)) return -1;\r\n\t\tif (isNaN(a) && isNaN(b)) {\r\n\t\t\t// MDN says Intl.Collator is faster\r\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare#performance\r\n\t\t\treturn Intl.Collator(undefined, { sensitivity: 'base' }).compare(a, b);\r\n\t\t} else {\r\n\t\t\treturn Number(a) - Number(b);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nexport const atsPrimitiveSort = ([...data]: (number | string)[]) =>\r\n\tmap((x: (number | string)[]): (number | string)[] => atsPrimitiveSortFn(x));\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\n name: 'atsArrayHasItem',\n standalone: false\n})\r\nexport class AtsArrayHasItemPipe implements PipeTransform {\r\n\ttransform(itemId: string, ids: string[]): boolean {\r\n\t\treturn ids.some(id => id === itemId);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\n name: 'atsBool',\n standalone: false\n})\r\nexport class AtsBooleanPipe implements PipeTransform {\r\n\tpublic positive = 'Yes';\r\n\tpublic negative = 'No';\r\n\tpublic unavailable = 'N/A';\r\n\tconstructor() {}\r\n\r\n\ttransform(value?: boolean | string, binary = true): string {\r\n\t\treturn binary || value !== null ? (!value || value === '' ? this.negative : this.positive) : this.unavailable;\r\n\t}\r\n\r\n\tpublic isTrue(val: boolean | string) {\r\n\t\treturn !this.isFalsey(val);\r\n\t}\r\n\r\n\tpublic isTruthy(val: boolean | string) {\r\n\t\treturn this.isTrue(val);\r\n\t}\r\n\r\n\tpublic isFalse(val: boolean | string) {\r\n\t\treturn (\r\n\t\t\tval === false ||\r\n\t\t\tval === '' ||\r\n\t\t\tval.toString().toLowerCase() === this.negative.toLowerCase() ||\r\n\t\t\tval.toString().toLowerCase() === 'false'\r\n\t\t);\r\n\t}\r\n\r\n\tpublic isNull(val: boolean | string) {\r\n\t\treturn val === null || val === this.unavailable;\r\n\t}\r\n\r\n\tpublic isFalsey(val: boolean | string) {\r\n\t\treturn this.isFalse(val) || this.isNull(val);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Pipe({\n name: 'atsFileReader$',\n standalone: false\n})\r\nexport class AtsFileReaderPipe implements PipeTransform {\r\n\tconstructor(private readonly sanitizer: DomSanitizer) {}\r\n\r\n\ttransform(file: File): Observable {\r\n\t\treturn new Observable(observer => {\r\n\t\t\tconst fileReader = new FileReader();\r\n\r\n\t\t\tfileReader.onload = () => {\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n\t\t\t\tobserver.next(this.sanitizer.sanitize(SecurityContext.URL, fileReader.result as string)!);\r\n\t\t\t\tobserver.complete();\r\n\t\t\t};\r\n\r\n\t\t\tfileReader.onerror = () => {\r\n\t\t\t\tobserver.error(fileReader.error);\r\n\t\t\t};\r\n\r\n\t\t\tfileReader.readAsDataURL(file);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'atsFilterByID',\n standalone: false\n})\nexport class AtsFilterByIdPipe implements PipeTransform {\n\ttransform(values: any[], id: number | string): any {\n\t\treturn values.filter(val => val.id === id);\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\n name: 'atsReverseArray',\n standalone: false\n})\r\nexport class AtsReverseArrayPipe implements PipeTransform {\r\n\tconstructor() {}\r\n\r\n\ttransform(value: any[]): any[] {\r\n\t\treturn value.slice().reverse();\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'isString',\r\n\tstandalone: true,\r\n})\r\nexport class IsStringPipe implements PipeTransform {\r\n\tconstructor() {}\r\n\r\n\ttransform(name: any): name is string {\r\n\t\treturn typeof name === 'string';\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { atsSortFn } from '../operators/sort.operator';\r\n\r\n@Pipe({\n name: 'atsOrderByProp',\n standalone: false\n})\r\nexport class AtsOrderByPropPipe implements PipeTransform {\r\n\tconstructor() {}\r\n\r\n\ttransform(value: any[], ...prop: string[]): any[] {\r\n\t\treturn atsSortFn(value, ...prop);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\n name: 'atsSafeHtml',\n standalone: false\n})\r\nexport class AtsSafeHtmlPipe implements PipeTransform {\r\n\tconstructor(private readonly sanitizer: DomSanitizer) {}\r\n\r\n\ttransform(value: string): SafeHtml {\r\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(value);\r\n\t}\r\n}\r\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { UTILITY_CONFIG } from '../tokens';\nimport { AtsUtilityConfig } from '../models';\n\n@Pipe({\n name: 'atsSplitPascal',\n standalone: false\n})\nexport class AtsSplitPascalPipe implements PipeTransform {\n\tconstructor(@Inject(UTILITY_CONFIG) private config: AtsUtilityConfig) {}\n\n\ttransform(items: string | string[]): string;\n\ttransform(items: any): string | string[] {\n\t\treturn items instanceof Array ? items.map(item => this.modifyValue(item)) : this.modifyValue(items);\n\t}\n\n\tprivate modifyValue(items: string = '') {\n\t\tconst exception = (this.config.splitPascalExceptions || []).find(except => except.initialValue === items);\n\t\tif (exception) return exception.updatedValue;\n\t\tconst regex = /([a-z]|[A-Z]|[0-9]){1}([A-Z]){1}/g;\n\t\tconst matches = regex.exec(items.toString());\n\n\t\tif (!matches || matches.length === 0) {\n\t\t\treturn items.toString();\n\t\t}\n\t\tfor (let i = 0; i < matches.length; i++) {\n\t\t\titems = items.replace(regex, '$1 $2');\n\t\t}\n\t\treturn items;\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'toString',\r\n\tstandalone: true,\r\n})\r\nexport class ToStringPipe implements PipeTransform {\r\n\tconstructor() {}\r\n\r\n\ttransform(name: any): string {\r\n\t\treturn name.toString();\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { trackByProperty } from '../functions';\n\n@Pipe({\n name: 'cmTrackByProperty',\n pure: true,\n standalone: false\n})\nexport class AtsTrackByPropertyPipe implements PipeTransform {\n\tpublic transform(propertyNames: '$index'): any;\n\tpublic transform(propertyNames: string[]): any;\n\tpublic transform(propertyNames: string): any;\n\tpublic transform(propertyNames: any): any {\n\t\treturn trackByProperty(propertyNames);\n\t}\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AtsFileUploadService {\r\n\tconstructor(private http: HttpClient) {}\r\n\r\n\tuploadFile(files: FileList, url: string, headers?: any): Observable {\r\n\t\tif ((files || []).length > 0) {\r\n\t\t\tconst formData: FormData = new FormData();\r\n\r\n\t\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\t\tformData.append('files', files[i], files[i].name);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.http.put(url, formData, headers ? { headers: headers } : {});\r\n\t\t}\r\n\t\treturn of(null);\r\n\t}\r\n\r\n\tupload(files: FileList, url: string, headers?: any): Observable {\r\n\t\tif ((files || []).length > 0) {\r\n\t\t\tconst formData: FormData = new FormData();\r\n\r\n\t\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\t\tformData.append('files', files[i], files[i].name);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.http.put(url, formData, headers ? { headers: headers } : {}).pipe(\r\n\t\t\t\tmap(() => true),\r\n\t\t\t\tcatchError(() => of(false))\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn of(null);\r\n\t}\r\n\r\n\tdeleteFile(url: string): Observable {\r\n\t\treturn this.http.delete(url);\r\n\t}\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\nimport { AtsNotificationService } from '@ats/notifications';\nimport { Apollo } from 'apollo-angular';\nimport { from, Observable, Subscriber } from 'rxjs';\nimport { delay, delayWhen } from 'rxjs/operators';\nimport { UTILITY_CONFIG } from '../tokens';\nimport { AtsUtilityConfig } from '../models';\n\nconst LOADER = 'delay-observer';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class AtsOperatorService {\n\tprivate defaultDelay: number = 7000;\n\n\tconstructor(\n\t\tprivate notifications: AtsNotificationService,\n\t\tprivate apollo: Apollo,\n\t\t@Inject(UTILITY_CONFIG) private config: AtsUtilityConfig\n\t) {\n\t\tif (config.defaultDelayInMS) {\n\t\t\tthis.defaultDelay = config.defaultDelayInMS;\n\t\t}\n\t}\n\n\tdelay = (delayInMS?: number) => (source: Observable) => {\n\t\tconst delayTime = delayInMS ? delayInMS : this.defaultDelay;\n\t\tthis.notifications.load(LOADER);\n\n\t\treturn new Observable((observer: Subscriber) => {\n\t\t\treturn source.pipe(delay(delayTime)).subscribe(\n\t\t\t\tobs => {\n\t\t\t\t\tthis.notifications.unload(LOADER);\n\t\t\t\t\tobserver.next(obs);\n\t\t\t\t},\n\t\t\t\terr => {\n\t\t\t\t\tthis.notifications.unload(LOADER);\n\t\t\t\t\tobserver.error(err);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.notifications.unload(LOADER);\n\t\t\t\t\tobserver.complete();\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t};\n\n\tclearApolloCache = () => (source: Observable) => {\n\t\treturn new Observable((observer: Subscriber) => {\n\t\t\treturn source.pipe(delayWhen(() => from(this.apollo.client.resetStore()))).subscribe({\n\t\t\t\tnext(x) {\n\t\t\t\t\tobserver.next(x);\n\t\t\t\t},\n\t\t\t\terror(err) {\n\t\t\t\t\tobserver.error(err);\n\t\t\t\t},\n\t\t\t\tcomplete() {\n\t\t\t\t\tobserver.complete();\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { Injectable } from '@angular/core';\r\nimport { fromEvent, Observable } from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\nexport enum AtsBreakpoints {\r\n\tMobile = '(max-width: 959px)',\r\n\tSmall = '(max-width: 599px)',\r\n}\r\n\r\nexport interface ScreenSizes {\r\n\tsmall: boolean;\r\n\tmobile: boolean;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AtsResponsiveService {\r\n\tpublic windowResize$ = fromEvent(window, 'resize').pipe(debounceTime(400));\r\n\r\n\tconstructor(private breakpointObserver: BreakpointObserver) {}\r\n\r\n\tpublic breakpoints$: Observable = this.breakpointObserver\r\n\t\t.observe([AtsBreakpoints.Small, AtsBreakpoints.Mobile])\r\n\t\t.pipe(\r\n\t\t\tmap(result => ({\r\n\t\t\t\tsmall: result.breakpoints[AtsBreakpoints.Small],\r\n\t\t\t\tmobile: result.breakpoints[AtsBreakpoints.Mobile],\r\n\t\t\t}))\r\n\t\t);\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AtsUtilityService {\r\n\tconstructor() {}\r\n\r\n\t/**\r\n\t * Reduces an array of objects to a string array of unique keys and names\r\n\t * @method\r\n\t * @param {Object[]} arr - An array of objecst to reduce\r\n\t * @param {string} arr[].name - A name string on the object\r\n\t * @param {string} arr[].key - The key string on the object\r\n\t * @return {void}\r\n\t */\r\n\tpublic reduceNameKey(arr: { name: string; key: string }[]) {\r\n\t\treturn arr.reduce(\r\n\t\t\t(_arr: string[], item) =>\r\n\t\t\t\titem.name !== item.key ? _arr.concat(item.name, item.key) : _arr.concat(item.name),\r\n\t\t\t[]\r\n\t\t);\r\n\t}\r\n}\r\n","import { InjectionToken } from '@angular/core';\nimport { AtsUtilityConfig } from '../models';\n\nexport const UTILITY_CONFIG = new InjectionToken('Utility Config');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'atsFilterByProp',\n standalone: false\n})\nexport class AtsFilterByPropPipe implements PipeTransform {\n\ttransform(arr: any[], prop: string, value: any): any {\n\t\treturn arr.filter(val => val[prop] === value);\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ActiveRouteClassDirective } from './directives/active-route-class.directive';\nimport { AutoFocusDirective } from './directives/auto-focus.directive';\nimport { AtsCopyElementToClipboard } from './directives/copy-element-to-clipboard.directive';\nimport { AtsGlobalEventDirective } from './directives/document-event.directive';\nimport { AtsLazyImageDirective } from './directives/lazy-image.directive';\nimport { ResponsiveDirective } from './directives/responsive.directive';\nimport { ScrollIntoViewDirective } from './directives/scroll-into-view.directive';\nimport {\n\tAtsArrayHasItemPipe,\n\tAtsBooleanPipe,\n\tAtsFileReaderPipe,\n\tAtsFilterByIdPipe,\n\tAtsOrderByPropPipe,\n\tAtsReverseArrayPipe,\n\tAtsSplitPascalPipe,\n\tAtsTrackByPropertyPipe,\n} from './pipes';\nimport { AtsFilterByPropPipe } from './pipes/filter-by-prop.pipe';\nimport { AtsObjectKeysPipe } from './pipes/object-keys.pipe';\nimport { AtsPropHasValuePipe } from './pipes/prop-has-value.pipe';\nimport { AtsSafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { AtsFileUploadService } from './services/file-upload.service';\nimport { AtsOperatorService } from './services/operator.service';\nimport { AtsResponsiveService } from './services/responsive.service';\nimport { AtsUtilityService } from './services/utility.service';\nimport { UTILITY_CONFIG } from './tokens';\nimport { AtsUtilityConfig } from './models';\n\nconst imports = [CommonModule];\n\nconst providers = [\n\tAtsArrayHasItemPipe,\n\tAtsBooleanPipe,\n\tAtsFileReaderPipe,\n\tAtsFileUploadService,\n\tAtsFilterByIdPipe,\n\tAtsFilterByPropPipe,\n\tAtsOperatorService,\n\tAtsOrderByPropPipe,\n\tAtsResponsiveService,\n\tAtsSafeHtmlPipe,\n\tAtsSplitPascalPipe,\n\tAtsUtilityService,\n];\n\nconst declarations = [\n\tActiveRouteClassDirective,\n\tAtsArrayHasItemPipe,\n\tAtsBooleanPipe,\n\tAtsCopyElementToClipboard,\n\tAtsFileReaderPipe,\n\tAtsFilterByIdPipe,\n\tAtsFilterByPropPipe,\n\tAtsGlobalEventDirective,\n\tAtsLazyImageDirective,\n\tAtsObjectKeysPipe,\n\tAtsOrderByPropPipe,\n\tAtsPropHasValuePipe,\n\tAtsReverseArrayPipe,\n\tAtsSafeHtmlPipe,\n\tAtsSplitPascalPipe,\n\tAtsTrackByPropertyPipe,\n\tAutoFocusDirective,\n\tResponsiveDirective,\n\tScrollIntoViewDirective,\n];\n\n@NgModule({\n\timports,\n\tproviders,\n\tdeclarations,\n\texports: [...declarations],\n})\nexport class AtsUtilityModule {\n\tpublic static forRoot(config?: AtsUtilityConfig): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: AtsUtilityModule,\n\t\t\tproviders: [\n\t\t\t\t...providers,\n\t\t\t\t{\n\t\t\t\t\tprovide: UTILITY_CONFIG,\n\t\t\t\t\tuseValue: { defaultDelayInMS: 7000, splitPascalExceptions: [], ...config },\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}\n","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport var Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // \n\n case 9: // \\t\n\n case 32: // \n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n\n return types;\n }\n\n return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n","/* @license\nPapa Parse\nv5.4.1\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=f.IS_PAPA_WORKER||!1,a={},u=0,b={parse:function(e,t){var r=(t=t||{}).dynamicTyping||!1;J(r)&&(t.dynamicTypingFunction=r,r={});if(t.dynamicTyping=r,t.transform=!!J(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var i=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(r=f.URL||f.webkitURL||null,i=s.toString(),b.BLOB_URL||(b.BLOB_URL=r.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",i,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var r,i;return t.onmessage=_,t.id=u++,a[t.id]=t}();return i.userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=J(t.step),t.chunk=J(t.chunk),t.complete=J(t.complete),t.error=J(t.error),delete t.worker,void i.postMessage({input:e,config:t,workerId:i.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?(e=function(e){if(65279===e.charCodeAt(0))return e.slice(1);return e}(e),n=t.download?new l(t):new p(t)):!0===e.readable&&J(e.read)&&J(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,r=!1,i=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(r=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");i=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);(\"boolean\"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\\-@\\t\\r].*$/)}();var u=new RegExp(Q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return h(null,e,r);if(\"object\"==typeof e[0])return h(i||Object.keys(e[0]),e,r)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||i),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),h(e.fields||[],e.data||[],r);throw new Error(\"Unable to serialize unrecognized input\");function h(e,t,r){var i=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(J(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!J(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){J(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var i;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),h.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),n||(i.onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)),i.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)i.setRequestHeader(t,e[t])}if(this._config.chunkSize){var r=this._start+this._config.chunkSize-1;i.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+r)}try{i.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===i.status&&this._chunkError()}},this._chunkLoaded=function(){4===i.readyState&&(i.status<200||400<=i.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:i.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(i),this.parseChunk(i.responseText)))},this._chunkError=function(e){var t=i.statusText||e;this._sendError(new Error(t))}}function c(e){var i,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),h.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((i=new FileReader).onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function p(e){var r;h.call(this,e=e||{}),this.stream=function(e){return r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=r.substring(0,t),r=r.substring(t)):(e=r,r=\"\"),this._finished=!r,this.parseChunk(e)}}}function g(e){h.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){h.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){h.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){i&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=v(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=v(function(){this._streamCleanUp(),i=!0,this._streamData(\"\")},this),this._streamCleanUp=v(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function r(m){var a,o,u,i=Math.pow(2,53),n=-i,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,h=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,t=this,r=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(J(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;r+=e.data.length,m.preview&&r>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){return c&&u&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),u=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return!y(e)})),_()&&function(){if(!c)return;function e(e,t){J(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t=l.length?\"__parsed_extra\":l[r]),m.transform&&(s=m.transform(s,n)),s=v(n,s),\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+r,f+t):r=i.length/2?\"\\r\\n\":\"\\r\"}(e,i)),u=!1,m.delimiter)J(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,r,i,n){var s,a,o,u;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var h=0;h=N)return L(!0)}else for(S=W,W++;;){if(-1===(S=i.indexOf(z,S+1)))return r||h.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:u.length,index:W}),T();if(S===n-1)return T(i.substring(W,S).replace(C,z));if(z!==K||i[S+1]!==K){if(z===K||0===S||i[S-1]!==K){-1!==w&&w=N)return L(!0);break}h.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:u.length,index:W}),S++}}else S++}return T();function I(e){u.push(e),d=W}function A(e){var t=0;if(-1!==e){var r=i.substring(S+1,e);r&&\"\"===r.trim()&&(t=r.length)}return t}function T(e){return r||(void 0===e&&(e=i.substring(W)),f.push(e),W=n,I(f),o&&F()),L()}function D(e){W=e,I(f),f=[],R=i.indexOf(P,W)}function L(e){return{data:u,errors:h,meta:{delimiter:M,linebreak:P,aborted:H,truncated:!!e,cursor:d+(t||0)}}}function F(){q(L()),u=[],h=[]}},this.abort=function(){H=!0},this.getCharIndex=function(){return W}}function _(e){var t=e.data,r=a[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(J(r.userStep)){for(var s=0;s {\n const { operator, source } = this;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n this._subscribe(subscriber)\n :\n this._trySubscribe(subscriber));\n });\n return subscriber;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n });\n }\n _subscribe(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => (value = x), (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class ReplaySubject extends Subject {\n constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) {\n super();\n this._bufferSize = _bufferSize;\n this._windowTime = _windowTime;\n this._timestampProvider = _timestampProvider;\n this._buffer = [];\n this._infiniteTimeWindow = true;\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n next(value) {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n const subscription = this._innerSubscribe(subscriber);\n const { _infiniteTimeWindow, _buffer } = this;\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n }\n _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { createErrorClass } from './createErrorClass';\nexport const ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n});\n","import { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nexport class Subject extends Observable {\n constructor() {\n super();\n this.closed = false;\n this.currentObservers = null;\n this.observers = [];\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n next(value) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n error(err) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n }\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n }\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n }\n get observed() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n _trySubscribe(subscriber) {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n _innerSubscribe(subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n _checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n }\n error(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n }\n complete() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n _subscribe(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n }\n}\n","export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nexport class Subscriber extends Subscription {\n constructor(destination) {\n super();\n this.isStopped = false;\n if (destination) {\n this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(this);\n }\n }\n else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n static create(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n }\n next(value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n }\n error(err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null;\n }\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n _complete() {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n }\n}\nconst _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nclass ConsumerObserver {\n constructor(partialObserver) {\n this.partialObserver = partialObserver;\n }\n next(value) {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n error(err) {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n }\n complete() {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(observerOrNext, error, complete) {\n super();\n let partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n let context;\n if (this && config.useDeprecatedNextContext) {\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\nexport const EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\nexport const UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n});\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nexport class Subscription {\n constructor(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n unsubscribe() {\n let errors;\n if (!this.closed) {\n this.closed = true;\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n add(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n }\n _hasParent(parent) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n _addParent(parent) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n _removeParent(parent) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n remove(teardown) {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\nSubscription.EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n})();\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n","export const config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: () => {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._subject = null;\n this._refCount = 0;\n this._connection = null;\n if (hasLift(source)) {\n this.lift = source.lift;\n }\n }\n _subscribe(subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n getSubject() {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n _teardown() {\n this._refCount = 0;\n const { _connection } = this;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n const subject = this.getSubject();\n connection.add(this.source.subscribe(createOperatorSubscriber(subject, undefined, () => {\n this._teardown();\n subject.complete();\n }, (err) => {\n this._teardown();\n subject.error(err);\n }, () => this._teardown())));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n refCount() {\n return higherOrderRefCount()(this);\n }\n}\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest(...args) {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n const { args: observables, keys } = argsArgArrayOrObject(args);\n if (observables.length === 0) {\n return from([], scheduler);\n }\n const result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n (values) => createObject(keys, values)\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform = identity) {\n return (subscriber) => {\n maybeSchedule(scheduler, () => {\n const { length } = observables;\n const values = new Array(length);\n let active = length;\n let remainingFirstValues = length;\n for (let i = 0; i < length; i++) {\n maybeSchedule(scheduler, () => {\n const source = from(observables[i], scheduler);\n let hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, () => {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat(...args) {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nexport function defer(observableFactory) {\n return new Observable((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin(...args) {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, () => remainingCompletions--, undefined, () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, () => {\n iterator.next().then((result) => {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable((subscriber) => {\n let i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable((subscriber) => {\n let iterator;\n executeSchedule(subscriber, scheduler, () => {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, () => {\n let value;\n let done;\n try {\n ({ value, done } = iterator.next());\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return () => isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();\n });\n}\n","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'];\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'];\nconst jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n const [add, remove] = isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler) => target[methodName](eventName, handler, options))\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget) => fromEvent(subTarget, eventName, options))(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable((subscriber) => {\n const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]);\n add(handler);\n return () => remove(handler);\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return (methodName) => (handler) => target[methodName](eventName, handler);\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { defer } from './defer';\nexport function iif(condition, trueResult, falseResult) {\n return defer(() => (condition() ? trueResult : falseResult));\n}\n","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period = 0, scheduler = asyncScheduler) {\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge(...args) {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of(...args) {\n const scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n","import { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexport class OperatorSubscriber extends Subscriber {\n constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n super(destination);\n this.onFinalize = onFinalize;\n this.shouldUnsubscribe = shouldUnsubscribe;\n this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n unsubscribe() {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n }\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = asyncScheduler) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate((source, subscriber) => {\n let innerSub = null;\n let syncUnsub = false;\n let handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n","import { combineLatestInit } from '../observable/combineLatest';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { popResultSelector } from '../util/args';\nexport function combineLatest(...args) {\n const resultSelector = popResultSelector(args);\n return resultSelector\n ? pipe(combineLatest(...args), mapOneOrManyArgs(resultSelector))\n : operate((source, subscriber) => {\n combineLatestInit([source, ...argsOrArgArray(args)])(subscriber);\n });\n}\n","import { combineLatest } from './combineLatest';\nexport function combineLatestWith(...otherSources) {\n return combineLatest(...otherSources);\n}\n","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler = asyncScheduler) {\n return operate((source, subscriber) => {\n let activeTask = null;\n let lastValue = null;\n let lastTime = null;\n const emit = () => {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n const targetTime = lastTime + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = activeTask = null;\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler = asyncScheduler) {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return (source) => concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector = identity) {\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate((source, subscriber) => {\n let previousKey;\n let first = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));\n });\n}\n","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate((source, subscriber) => {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n","import { map } from './map';\nexport function mapTo(value) {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Infinity) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent = Infinity) {\n if (isFunction(resultSelector)) {\n return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n const buffer = [];\n let active = 0;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n const doInnerSub = (value) => {\n expand && subscriber.next(value);\n active++;\n let innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, () => {\n innerComplete = true;\n }, undefined, () => {\n if (innerComplete) {\n try {\n active--;\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n }\n else {\n doInnerSub(bufferedValue);\n }\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {\n isComplete = true;\n checkComplete();\n }));\n return () => {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate((source, subscriber) => {\n let prev;\n let hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate((source, subscriber) => {\n let connection = null;\n source._refCount++;\n const refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, () => {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n const sharedConnection = source._connection;\n const conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return (source, subscriber) => {\n let hasState = hasSeed;\n let state = seed;\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options = {}) {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n return (wrapperSource) => {\n let connection;\n let resetConnection;\n let subject;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n const cancelReset = () => {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n const reset = () => {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n const conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n const dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(() => {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on, ...args) {\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n const onSubscriber = new SafeSubscriber({\n next: () => {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n let bufferSize;\n let refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n ({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share({\n connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n","import { filter } from './filter';\nexport function skip(count) {\n return filter((_, index) => count <= index);\n}\n","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith(...values) {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate((source, subscriber) => {\n let innerSubscriber = null;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => {\n innerSubscriber = null;\n checkComplete();\n })));\n }, () => {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n const tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error, complete }\n : observerOrNext;\n return tapObserver\n ? operate((source, subscriber) => {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n let isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, () => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, (err) => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, () => {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom(...inputs) {\n const project = popResultSelector(inputs);\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n let hasValue = inputs.map(() => false);\n let ready = false;\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (ready) {\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n }));\n });\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","export const intervalProvider = {\n setInterval(handler, timeout, ...args) {\n const { delegate } = intervalProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n var _a;\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, _id, delay = 0) {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(_scheduler, id, delay = 0) {\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, _delay) {\n let errored = false;\n let errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n super.unsubscribe();\n }\n }\n}\n","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class Scheduler {\n constructor(schedulerActionCtor, now = Scheduler.now) {\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\nScheduler.now = dateTimestampProvider.now;\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, now);\n this.actions = [];\n this._active = false;\n }\n flush(action) {\n const { actions } = this;\n if (this._active) {\n actions.push(action);\n return;\n }\n let error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { Subscription } from '../Subscription';\nexport const animationFrameProvider = {\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel === null || cancel === void 0 ? void 0 : cancel(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n var _a;\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n const { actions } = scheduler;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","export const dateTimestampProvider = {\n now() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n","export const timeoutProvider = {\n setTimeout(handler, timeout, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n","export const observable = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\nexport const EmptyError = createErrorClass((_super) => function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","const { isArray } = Array;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n","export function arrRemove(arr, item) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","export function createErrorClass(createImpl) {\n const _super = (instance) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","export function createObject(keys, values) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {});\n}\n","import { config } from '../config';\nlet context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","export function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) {\n const scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n","export function identity(x) {\n return x;\n}\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return (source) => {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n","import { map } from \"../operators/map\";\nconst { isArray } = Array;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn(...args) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(args => callOrApply(fn, args));\n}\n","export function noop() { }\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n","/**\n * @license Angular v19.0.4\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, Injectable, ANIMATION_MODULE_TYPE, ViewEncapsulation, ɵRuntimeError, Inject } from '@angular/core';\n\n/**\n * @description Constants for the categories of parameters that can be defined for animations.\n *\n * A corresponding function defines a set of parameters for each category, and\n * collects them into a corresponding `AnimationMetadata` object.\n *\n * @publicApi\n */\nvar AnimationMetadataType;\n(function (AnimationMetadataType) {\n /**\n * Associates a named animation state with a set of CSS styles.\n * See [`state()`](api/animations/state)\n */\n AnimationMetadataType[AnimationMetadataType[\"State\"] = 0] = \"State\";\n /**\n * Data for a transition from one animation state to another.\n * See `transition()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Transition\"] = 1] = \"Transition\";\n /**\n * Contains a set of animation steps.\n * See `sequence()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Sequence\"] = 2] = \"Sequence\";\n /**\n * Contains a set of animation steps.\n * See `{@link animations/group group()}`\n */\n AnimationMetadataType[AnimationMetadataType[\"Group\"] = 3] = \"Group\";\n /**\n * Contains an animation step.\n * See `animate()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Animate\"] = 4] = \"Animate\";\n /**\n * Contains a set of animation steps.\n * See `keyframes()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Keyframes\"] = 5] = \"Keyframes\";\n /**\n * Contains a set of CSS property-value pairs into a named style.\n * See `style()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Style\"] = 6] = \"Style\";\n /**\n * Associates an animation with an entry trigger that can be attached to an element.\n * See `trigger()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Trigger\"] = 7] = \"Trigger\";\n /**\n * Contains a re-usable animation.\n * See `animation()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Reference\"] = 8] = \"Reference\";\n /**\n * Contains data to use in executing child animations returned by a query.\n * See `animateChild()`\n */\n AnimationMetadataType[AnimationMetadataType[\"AnimateChild\"] = 9] = \"AnimateChild\";\n /**\n * Contains animation parameters for a re-usable animation.\n * See `useAnimation()`\n */\n AnimationMetadataType[AnimationMetadataType[\"AnimateRef\"] = 10] = \"AnimateRef\";\n /**\n * Contains child-animation query data.\n * See `query()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Query\"] = 11] = \"Query\";\n /**\n * Contains data for staggering an animation sequence.\n * See `stagger()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Stagger\"] = 12] = \"Stagger\";\n})(AnimationMetadataType || (AnimationMetadataType = {}));\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```ts\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
...
\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```ts\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```angular-ts\n * @Component({\n * selector: 'my-component',\n * template: `\n *
\n *
\n *
\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```ts\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: AnimationMetadataType.Trigger, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```ts\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```ts\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: AnimationMetadataType.Animate, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```ts\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: AnimationMetadataType.Group, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```ts\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: AnimationMetadataType.Sequence, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```ts\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```ts\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: AnimationMetadataType.Style, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: AnimationMetadataType.State, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```ts\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```ts\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: AnimationMetadataType.Keyframes, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```ts\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```ts\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```ts\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```ts\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```ts\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
\n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
\n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```html\n *
\n * ...\n *
\n * ```\n *\n * ```ts\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```html\n *
\n * ...\n *
\n * ```\n *\n * ```ts\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: AnimationMetadataType.Transition, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```ts\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: AnimationMetadataType.Reference, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: AnimationMetadataType.AnimateChild, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: AnimationMetadataType.AnimateRef, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```ts\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
\n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
\n *\n *
\n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```angular-ts\n * @Component({\n * selector: 'inner',\n * template: `\n *
\n *

Title

\n *
\n * Blah blah blah\n *
\n *
\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: AnimationMetadataType.Query, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
\n *
\n *
\n * {{ item }}\n *
\n *
\n * ```\n *\n * Here is the component code:\n *\n * ```ts\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```ts\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: AnimationMetadataType.Stagger, timings, animation };\n}\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: AnimationBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: AnimationBuilder, providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder) });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: AnimationBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(BrowserAnimationBuilder) }]\n }] });\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\nclass BrowserAnimationBuilder extends AnimationBuilder {\n animationModuleType = inject(ANIMATION_MODULE_TYPE, { optional: true });\n _nextAnimationId = 0;\n _renderer;\n constructor(rootRenderer, doc) {\n super();\n const typeData = {\n id: '0',\n encapsulation: ViewEncapsulation.None,\n styles: [],\n data: { animation: [] },\n };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {\n // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder\n throw new ɵRuntimeError(3600 /* RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' +\n 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.');\n }\n }\n build(animation) {\n const id = this._nextAnimationId;\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserAnimationBuilder, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\nclass BrowserAnimationFactory extends AnimationFactory {\n _id;\n _renderer;\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n id;\n element;\n _renderer;\n parentPlayer = null;\n _started = false;\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;\n }\n totalTime = 0;\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n/**\n * The following 2 methods cannot reference their correct types (AnimationRenderer &\n * DynamicDelegationRenderer) since this would introduce a import cycle.\n */\nfunction unwrapAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n if (type === 0 /* AnimationRendererType.Regular */) {\n return renderer;\n }\n else if (type === 1 /* AnimationRendererType.Delegated */) {\n return renderer.animationRenderer;\n }\n return null;\n}\nfunction isAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n return type === 0 /* AnimationRendererType.Regular */ || type === 1 /* AnimationRendererType.Delegated */;\n}\n\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see {@link animate}\n * @see {@link AnimationPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n _onDoneFns = [];\n _onStartFns = [];\n _onDestroyFns = [];\n _originalOnDoneFns = [];\n _originalOnStartFns = [];\n _started = false;\n _destroyed = false;\n _finished = false;\n _position = 0;\n parentPlayer = null;\n totalTime;\n constructor(duration = 0, delay = 0) {\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((fn) => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach((fn) => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach((fn) => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((fn) => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\n _onDoneFns = [];\n _onStartFns = [];\n _finished = false;\n _started = false;\n _destroyed = false;\n _onDestroyFns = [];\n parentPlayer = null;\n totalTime = 0;\n players;\n constructor(_players) {\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n }\n else {\n this.players.forEach((player) => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((fn) => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach((player) => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach((fn) => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach((player) => player.play());\n }\n pause() {\n this.players.forEach((player) => player.pause());\n }\n restart() {\n this.players.forEach((player) => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach((player) => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach((player) => player.destroy());\n this._onDestroyFns.forEach((fn) => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach((player) => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach((player) => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach((player) => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((fn) => fn());\n methods.length = 0;\n }\n}\n\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, AnimationMetadataType, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, ɵPRE_STYLE };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, APP_ID, Injectable, signal, QueryList, isSignal, effect, InjectionToken, afterNextRender, NgZone, Injector, ElementRef, booleanAttribute, Directive, Input, EventEmitter, Output, NgModule } from '@angular/core';\nimport { Platform, _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { _CdkPrivateStyleLoader, _VisuallyHiddenLoader } from '@angular/cdk/private';\nimport { A, Z, ZERO, NINE, hasModifierKey, PAGE_DOWN, PAGE_UP, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { Subject, Subscription, isObservable, of, BehaviorSubject } from 'rxjs';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceObservable } from '@angular/cdk/coercion/private';\nimport { ContentObserver, ObserversModule } from '@angular/cdk/observers';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n id = id.trim();\n if (ids.some(existingId => existingId.trim() === id)) {\n return;\n }\n ids.push(id);\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n id = id.trim();\n const filteredIds = ids.filter(val => val !== id);\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n const attrValue = el.getAttribute(attr);\n return attrValue?.match(/\\S+/g) ?? [];\n}\n\n/**\n * ID used for the body container where all messages are appended.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n _platform = inject(Platform);\n _document = inject(DOCUMENT);\n /** Map of all registered message elements that have been placed into the document. */\n _messageRegistry = new Map();\n /** Container for all registered messages. */\n _messagesContainer = null;\n /** Unique ID for the service. */\n _id = `${nextId++}`;\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);\n this._id = inject(APP_ID) + '-' + nextId++;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message, this._id);\n this._messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!this._messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = this._messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (this._messagesContainer?.childNodes.length === 0) {\n this._messagesContainer.remove();\n this._messagesContainer = null;\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n this._messagesContainer?.remove();\n this._messagesContainer = null;\n this._messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement, this._id);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n this._messagesContainer.appendChild(messageElement);\n this._messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n this._messageRegistry.get(key)?.messageElement?.remove();\n this._messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (this._messagesContainer) {\n return;\n }\n const containerClassName = 'cdk-describedby-message-container';\n const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform=\"server\"]`);\n for (let i = 0; i < serverContainers.length; i++) {\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n serverContainers[i].remove();\n }\n const messagesContainer = this._document.createElement('div');\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add(containerClassName);\n messagesContainer.classList.add('cdk-visually-hidden');\n if (!this._platform.isBrowser) {\n messagesContainer.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(messagesContainer);\n this._messagesContainer = messagesContainer;\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = this._messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: AriaDescriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: AriaDescriber, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element, serviceId) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;\n }\n}\n\nconst DEFAULT_TYPEAHEAD_DEBOUNCE_INTERVAL_MS = 200;\n/**\n * Selects items based on keyboard inputs. Implements the typeahead functionality of\n * `role=\"listbox\"` or `role=\"tree\"` and other related roles.\n */\nclass Typeahead {\n _letterKeyStream = new Subject();\n _items = [];\n _selectedItemIndex = -1;\n /** Buffer for the letters that the user has pressed */\n _pressedLetters = [];\n _skipPredicateFn;\n _selectedItem = new Subject();\n selectedItem = this._selectedItem;\n constructor(initialItems, config) {\n const typeAheadInterval = typeof config?.debounceInterval === 'number'\n ? config.debounceInterval\n : DEFAULT_TYPEAHEAD_DEBOUNCE_INTERVAL_MS;\n if (config?.skipPredicate) {\n this._skipPredicateFn = config.skipPredicate;\n }\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n initialItems.length &&\n initialItems.some(item => typeof item.getLabel !== 'function')) {\n throw new Error('KeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this.setItems(initialItems);\n this._setupKeyHandler(typeAheadInterval);\n }\n destroy() {\n this._pressedLetters = [];\n this._letterKeyStream.complete();\n this._selectedItem.complete();\n }\n setCurrentSelectedItemIndex(index) {\n this._selectedItemIndex = index;\n }\n setItems(items) {\n this._items = items;\n }\n handleKey(event) {\n const keyCode = event.keyCode;\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Resets the currently stored sequence of typed letters. */\n reset() {\n this._pressedLetters = [];\n }\n _setupKeyHandler(typeAheadInterval) {\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(typeAheadInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('').toLocaleUpperCase()))\n .subscribe(inputString => {\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < this._items.length + 1; i++) {\n const index = (this._selectedItemIndex + i) % this._items.length;\n const item = this._items[index];\n if (!this._skipPredicateFn?.(item) &&\n item.getLabel?.().toLocaleUpperCase().trim().indexOf(inputString) === 0) {\n this._selectedItem.next(item);\n break;\n }\n }\n this._pressedLetters = [];\n });\n }\n}\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n _items;\n _activeItemIndex = -1;\n _activeItem = signal(null);\n _wrap = false;\n _typeaheadSubscription = Subscription.EMPTY;\n _itemChangesSubscription;\n _vertical = true;\n _horizontal;\n _allowedModifierKeys = [];\n _homeAndEnd = false;\n _pageUpAndDown = { enabled: false, delta: 10 };\n _effectRef;\n _typeahead;\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n _skipPredicateFn = (item) => item.disabled;\n constructor(_items, injector) {\n this._items = _items;\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n this._itemChangesSubscription = _items.changes.subscribe((newItems) => this._itemsChanged(newItems.toArray()));\n }\n else if (isSignal(_items)) {\n if (!injector && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('ListKeyManager constructed with a signal must receive an injector');\n }\n this._effectRef = effect(() => this._itemsChanged(_items()), { injector });\n }\n }\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n change = new Subject();\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const items = this._getItemsArray();\n if (items.length > 0 && items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n }\n this._typeaheadSubscription.unsubscribe();\n const items = this._getItemsArray();\n this._typeahead = new Typeahead(items, {\n debounceInterval: typeof debounceInterval === 'number' ? debounceInterval : undefined,\n skipPredicate: item => this._skipPredicateFn(item),\n });\n this._typeaheadSubscription = this._typeahead.selectedItem.subscribe(item => {\n this.setActiveItem(item);\n });\n return this;\n }\n /** Cancels the current typeahead sequence. */\n cancelTypeahead() {\n this._typeahead?.reset();\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n /**\n * Configures the key manager to activate every 10th, configured or first/last element in up/down direction\n * respectively when the Page-Up or Page-Down key is pressed.\n * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.\n * @param delta Whether pressing the Home or End key activates the first/last item.\n */\n withPageUpDown(enabled = true, delta = 10) {\n this._pageUpAndDown = { enabled, delta };\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem();\n this.updateActiveItem(item);\n if (this._activeItem() !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n case PAGE_UP:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta;\n this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);\n break;\n }\n else {\n return;\n }\n case PAGE_DOWN:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta;\n const itemsLength = this._getItemsArray().length;\n this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n this._typeahead?.handleKey(event);\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._typeahead?.reset();\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem();\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return !!this._typeahead && this._typeahead.isTyping();\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._getItemsArray().length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem.set(activeItem == null ? null : activeItem);\n this._activeItemIndex = index;\n this._typeahead?.setCurrentSelectedItemIndex(index);\n }\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._itemChangesSubscription?.unsubscribe();\n this._effectRef?.destroy();\n this._typeahead?.destroy();\n this.tabOut.complete();\n this.change.complete();\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n if (isSignal(this._items)) {\n return this._items();\n }\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n /** Callback for when the items have changed. */\n _itemsChanged(newItems) {\n this._typeahead?.setItems(newItems);\n const activeItem = this._activeItem();\n if (activeItem) {\n const newIndex = newItems.indexOf(activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n this._typeahead?.setCurrentSelectedItemIndex(newIndex);\n }\n }\n }\n}\n\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n\nclass FocusKeyManager extends ListKeyManager {\n _origin = 'program';\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * This class manages keyboard events for trees. If you pass it a QueryList or other list of tree\n * items, it will set the active item, focus, handle expansion and typeahead correctly when\n * keyboard events occur.\n */\nclass TreeKeyManager {\n /** The index of the currently active (focused) item. */\n _activeItemIndex = -1;\n /** The currently active (focused) item. */\n _activeItem = null;\n /** Whether or not we activate the item when it's focused. */\n _shouldActivationFollowFocus = false;\n /**\n * The orientation that the tree is laid out in. In `rtl` mode, the behavior of Left and\n * Right arrow are switched.\n */\n _horizontalOrientation = 'ltr';\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager.\n *\n * The default value for this doesn't skip any elements in order to keep tree items focusable\n * when disabled. This aligns with ARIA guidelines:\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#focusabilityofdisabledcontrols.\n */\n _skipPredicateFn = (_item) => false;\n /** Function to determine equivalent items. */\n _trackByFn = (item) => item;\n /** Synchronous cache of the items to manage. */\n _items = [];\n _typeahead;\n _typeaheadSubscription = Subscription.EMPTY;\n _hasInitialFocused = false;\n _initializeFocus() {\n if (this._hasInitialFocused || this._items.length === 0) {\n return;\n }\n let activeIndex = 0;\n for (let i = 0; i < this._items.length; i++) {\n if (!this._skipPredicateFn(this._items[i]) && !this._isItemDisabled(this._items[i])) {\n activeIndex = i;\n break;\n }\n }\n const activeItem = this._items[activeIndex];\n // Use `makeFocusable` here, because we want the item to just be focusable, not actually\n // capture the focus since the user isn't interacting with it. See #29628.\n if (activeItem.makeFocusable) {\n this._activeItem?.unfocus();\n this._activeItemIndex = activeIndex;\n this._activeItem = activeItem;\n this._typeahead?.setCurrentSelectedItemIndex(activeIndex);\n activeItem.makeFocusable();\n }\n else {\n // Backwards compatibility for items that don't implement `makeFocusable`.\n this.focusItem(activeIndex);\n }\n this._hasInitialFocused = true;\n }\n /**\n *\n * @param items List of TreeKeyManager options. Can be synchronous or asynchronous.\n * @param config Optional configuration options. By default, use 'ltr' horizontal orientation. By\n * default, do not skip any nodes. By default, key manager only calls `focus` method when items\n * are focused and does not call `activate`. If `typeaheadDefaultInterval` is `true`, use a\n * default interval of 200ms.\n */\n constructor(items, config) {\n // We allow for the items to be an array or Observable because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (items instanceof QueryList) {\n this._items = items.toArray();\n items.changes.subscribe((newItems) => {\n this._items = newItems.toArray();\n this._typeahead?.setItems(this._items);\n this._updateActiveItemIndex(this._items);\n this._initializeFocus();\n });\n }\n else if (isObservable(items)) {\n items.subscribe(newItems => {\n this._items = newItems;\n this._typeahead?.setItems(newItems);\n this._updateActiveItemIndex(newItems);\n this._initializeFocus();\n });\n }\n else {\n this._items = items;\n this._initializeFocus();\n }\n if (typeof config.shouldActivationFollowFocus === 'boolean') {\n this._shouldActivationFollowFocus = config.shouldActivationFollowFocus;\n }\n if (config.horizontalOrientation) {\n this._horizontalOrientation = config.horizontalOrientation;\n }\n if (config.skipPredicate) {\n this._skipPredicateFn = config.skipPredicate;\n }\n if (config.trackBy) {\n this._trackByFn = config.trackBy;\n }\n if (typeof config.typeAheadDebounceInterval !== 'undefined') {\n this._setTypeAhead(config.typeAheadDebounceInterval);\n }\n }\n /** Stream that emits any time the focused item changes. */\n change = new Subject();\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._typeahead?.destroy();\n this.change.complete();\n }\n /**\n * Handles a keyboard event on the tree.\n * @param event Keyboard event that represents the user interaction with the tree.\n */\n onKeydown(event) {\n const key = event.key;\n switch (key) {\n case 'Tab':\n // Return early here, in order to allow Tab to actually tab out of the tree\n return;\n case 'ArrowDown':\n this._focusNextItem();\n break;\n case 'ArrowUp':\n this._focusPreviousItem();\n break;\n case 'ArrowRight':\n this._horizontalOrientation === 'rtl'\n ? this._collapseCurrentItem()\n : this._expandCurrentItem();\n break;\n case 'ArrowLeft':\n this._horizontalOrientation === 'rtl'\n ? this._expandCurrentItem()\n : this._collapseCurrentItem();\n break;\n case 'Home':\n this._focusFirstItem();\n break;\n case 'End':\n this._focusLastItem();\n break;\n case 'Enter':\n case ' ':\n this._activateCurrentItem();\n break;\n default:\n if (event.key === '*') {\n this._expandAllItemsAtCurrentItemLevel();\n break;\n }\n this._typeahead?.handleKey(event);\n // Return here, in order to avoid preventing the default action of non-navigational\n // keys or resetting the buffer of pressed letters.\n return;\n }\n // Reset the typeahead since the user has used a navigational key.\n this._typeahead?.reset();\n event.preventDefault();\n }\n /** Index of the currently active item. */\n getActiveItemIndex() {\n return this._activeItemIndex;\n }\n /** The currently active item. */\n getActiveItem() {\n return this._activeItem;\n }\n /** Focus the first available item. */\n _focusFirstItem() {\n this.focusItem(this._findNextAvailableItemIndex(-1));\n }\n /** Focus the last available item. */\n _focusLastItem() {\n this.focusItem(this._findPreviousAvailableItemIndex(this._items.length));\n }\n /** Focus the next available item. */\n _focusNextItem() {\n this.focusItem(this._findNextAvailableItemIndex(this._activeItemIndex));\n }\n /** Focus the previous available item. */\n _focusPreviousItem() {\n this.focusItem(this._findPreviousAvailableItemIndex(this._activeItemIndex));\n }\n focusItem(itemOrIndex, options = {}) {\n // Set default options\n options.emitChangeEvent ??= true;\n let index = typeof itemOrIndex === 'number'\n ? itemOrIndex\n : this._items.findIndex(item => this._trackByFn(item) === this._trackByFn(itemOrIndex));\n if (index < 0 || index >= this._items.length) {\n return;\n }\n const activeItem = this._items[index];\n // If we're just setting the same item, don't re-call activate or focus\n if (this._activeItem !== null &&\n this._trackByFn(activeItem) === this._trackByFn(this._activeItem)) {\n return;\n }\n const previousActiveItem = this._activeItem;\n this._activeItem = activeItem ?? null;\n this._activeItemIndex = index;\n this._typeahead?.setCurrentSelectedItemIndex(index);\n this._activeItem?.focus();\n previousActiveItem?.unfocus();\n if (options.emitChangeEvent) {\n this.change.next(this._activeItem);\n }\n if (this._shouldActivationFollowFocus) {\n this._activateCurrentItem();\n }\n }\n _updateActiveItemIndex(newItems) {\n const activeItem = this._activeItem;\n if (!activeItem) {\n return;\n }\n const newIndex = newItems.findIndex(item => this._trackByFn(item) === this._trackByFn(activeItem));\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n this._typeahead?.setCurrentSelectedItemIndex(newIndex);\n }\n }\n _setTypeAhead(debounceInterval) {\n this._typeahead = new Typeahead(this._items, {\n debounceInterval: typeof debounceInterval === 'number' ? debounceInterval : undefined,\n skipPredicate: item => this._skipPredicateFn(item),\n });\n this._typeaheadSubscription = this._typeahead.selectedItem.subscribe(item => {\n this.focusItem(item);\n });\n }\n _findNextAvailableItemIndex(startingIndex) {\n for (let i = startingIndex + 1; i < this._items.length; i++) {\n if (!this._skipPredicateFn(this._items[i])) {\n return i;\n }\n }\n return startingIndex;\n }\n _findPreviousAvailableItemIndex(startingIndex) {\n for (let i = startingIndex - 1; i >= 0; i--) {\n if (!this._skipPredicateFn(this._items[i])) {\n return i;\n }\n }\n return startingIndex;\n }\n /**\n * If the item is already expanded, we collapse the item. Otherwise, we will focus the parent.\n */\n _collapseCurrentItem() {\n if (!this._activeItem) {\n return;\n }\n if (this._isCurrentItemExpanded()) {\n this._activeItem.collapse();\n }\n else {\n const parent = this._activeItem.getParent();\n if (!parent || this._skipPredicateFn(parent)) {\n return;\n }\n this.focusItem(parent);\n }\n }\n /**\n * If the item is already collapsed, we expand the item. Otherwise, we will focus the first child.\n */\n _expandCurrentItem() {\n if (!this._activeItem) {\n return;\n }\n if (!this._isCurrentItemExpanded()) {\n this._activeItem.expand();\n }\n else {\n coerceObservable(this._activeItem.getChildren())\n .pipe(take(1))\n .subscribe(children => {\n const firstChild = children.find(child => !this._skipPredicateFn(child));\n if (!firstChild) {\n return;\n }\n this.focusItem(firstChild);\n });\n }\n }\n _isCurrentItemExpanded() {\n if (!this._activeItem) {\n return false;\n }\n return typeof this._activeItem.isExpanded === 'boolean'\n ? this._activeItem.isExpanded\n : this._activeItem.isExpanded();\n }\n _isItemDisabled(item) {\n return typeof item.isDisabled === 'boolean' ? item.isDisabled : item.isDisabled?.();\n }\n /** For all items that are the same level as the current item, we expand those items. */\n _expandAllItemsAtCurrentItemLevel() {\n if (!this._activeItem) {\n return;\n }\n const parent = this._activeItem.getParent();\n let itemsToExpand;\n if (!parent) {\n itemsToExpand = of(this._items.filter(item => item.getParent() === null));\n }\n else {\n itemsToExpand = coerceObservable(parent.getChildren());\n }\n itemsToExpand.pipe(take(1)).subscribe(items => {\n for (const item of items) {\n item.expand();\n }\n });\n }\n _activateCurrentItem() {\n this._activeItem?.activate();\n }\n}\n/** @docs-private */\nfunction TREE_KEY_MANAGER_FACTORY() {\n return (items, options) => new TreeKeyManager(items, options);\n}\n/** Injection token that determines the key manager to use. */\nconst TREE_KEY_MANAGER = new InjectionToken('tree-key-manager', {\n providedIn: 'root',\n factory: TREE_KEY_MANAGER_FACTORY,\n});\n/** @docs-private */\nconst TREE_KEY_MANAGER_FACTORY_PROVIDER = {\n provide: TREE_KEY_MANAGER,\n useFactory: TREE_KEY_MANAGER_FACTORY,\n};\n\n// NoopTreeKeyManager is a \"noop\" implementation of TreeKeyMangerStrategy. Methods are noops. Does\n// not emit to streams.\n//\n// Used for applications built before TreeKeyManager to opt-out of TreeKeyManager and revert to\n// legacy behavior.\n/**\n * @docs-private\n *\n * Opt-out of Tree of key manager behavior.\n *\n * When provided, Tree has same focus management behavior as before TreeKeyManager was introduced.\n * - Tree does not respond to keyboard interaction\n * - Tree node allows tabindex to be set by Input binding\n * - Tree node allows tabindex to be set by attribute binding\n *\n * @deprecated NoopTreeKeyManager deprecated. Use TreeKeyManager or inject a\n * TreeKeyManagerStrategy instead. To be removed in a future version.\n *\n * @breaking-change 21.0.0\n */\nclass NoopTreeKeyManager {\n _isNoopTreeKeyManager = true;\n // Provide change as required by TreeKeyManagerStrategy. NoopTreeKeyManager is a \"noop\"\n // implementation that does not emit to streams.\n change = new Subject();\n destroy() {\n this.change.complete();\n }\n onKeydown() {\n // noop\n }\n getActiveItemIndex() {\n // Always return null. NoopTreeKeyManager is a \"noop\" implementation that does not maintain\n // the active item.\n return null;\n }\n getActiveItem() {\n // Always return null. NoopTreeKeyManager is a \"noop\" implementation that does not maintain\n // the active item.\n return null;\n }\n focusItem() {\n // noop\n }\n}\n/**\n * @docs-private\n *\n * Opt-out of Tree of key manager behavior.\n *\n * When provided, Tree has same focus management behavior as before TreeKeyManager was introduced.\n * - Tree does not respond to keyboard interaction\n * - Tree node allows tabindex to be set by Input binding\n * - Tree node allows tabindex to be set by attribute binding\n *\n * @deprecated NoopTreeKeyManager deprecated. Use TreeKeyManager or inject a\n * TreeKeyManagerStrategy instead. To be removed in a future version.\n *\n * @breaking-change 21.0.0\n */\nfunction NOOP_TREE_KEY_MANAGER_FACTORY() {\n return () => new NoopTreeKeyManager();\n}\n/**\n * @docs-private\n *\n * Opt-out of Tree of key manager behavior.\n *\n * When provided, Tree has same focus management behavior as before TreeKeyManager was introduced.\n * - Tree does not respond to keyboard interaction\n * - Tree node allows tabindex to be set by Input binding\n * - Tree node allows tabindex to be set by attribute binding\n *\n * @deprecated NoopTreeKeyManager deprecated. Use TreeKeyManager or inject a\n * TreeKeyManagerStrategy instead. To be removed in a future version.\n *\n * @breaking-change 21.0.0\n */\nconst NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER = {\n provide: TREE_KEY_MANAGER,\n useFactory: NOOP_TREE_KEY_MANAGER_FACTORY,\n};\n\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n ignoreVisibility = false;\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether it is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n _platform = inject(Platform);\n constructor() { }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n (config?.ignoreVisibility || this.isVisible(element)));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: InteractivityChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n */\nclass FocusTrap {\n _element;\n _checker;\n _ngZone;\n _document;\n _injector;\n _startAnchor;\n _endAnchor;\n _hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n startAnchorListener = () => this.focusLastTabbableElement();\n endAnchorListener = () => this.focusFirstTabbableElement();\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n _enabled = true;\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false, \n /** @breaking-change 20.0.0 param to become required */\n _injector) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._injector = _injector;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild?.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n // TODO: remove this conditional when injector is required in the constructor.\n if (this._injector) {\n afterNextRender(fn, { injector: this._injector });\n }\n else {\n setTimeout(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n */\nclass FocusTrapFactory {\n _checker = inject(InteractivityChecker);\n _ngZone = inject(NgZone);\n _document = inject(DOCUMENT);\n _injector = inject(Injector);\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements, this._injector);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusTrapFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n _elementRef = inject(ElementRef);\n _focusTrapFactory = inject(FocusTrapFactory);\n /** Underlying FocusTrap instance. */\n focusTrap;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n _previouslyFocusedElement = null;\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap?.enabled || false;\n }\n set enabled(value) {\n if (this.focusTrap) {\n this.focusTrap.enabled = value;\n }\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n autoCapture;\n constructor() {\n const platform = inject(Platform);\n if (platform.isBrowser) {\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n }\n ngOnDestroy() {\n this.focusTrap?.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap?.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (this.focusTrap && !this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap?.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap?.focusInitialElementWhenReady();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTrapFocus, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkTrapFocus, isStandalone: true, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\", booleanAttribute], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\", booleanAttribute] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: () => [], propDecorators: { enabled: [{\n type: Input,\n args: [{ alias: 'cdkTrapFocus', transform: booleanAttribute }]\n }], autoCapture: [{\n type: Input,\n args: [{ alias: 'cdkTrapFocusAutoCapture', transform: booleanAttribute }]\n }] } });\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n _focusTrapManager;\n _inertStrategy;\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config, injector) {\n super(_element, _checker, _ngZone, _document, config.defer, injector);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n /** Focus event handler. */\n _listener = null;\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n _focusTrapStack = [];\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n _checker = inject(InteractivityChecker);\n _ngZone = inject(NgZone);\n _focusTrapManager = inject(FocusTrapManager);\n _document = inject(DOCUMENT);\n _inertStrategy;\n _injector = inject(Injector);\n constructor() {\n const inertStrategy = inject(FOCUS_TRAP_INERT_STRATEGY, { optional: true });\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject, this._injector);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when `event.buttons` is zero, or\n // `event.detail` is zero depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `detail` works on Chrome, but fails on Firefox.\n return event.buttons === 0 || event.detail === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n _platform = inject(Platform);\n /** Emits whenever an input modality is detected. */\n modalityDetected;\n /** Emits when the input modality changes. */\n modalityChanged;\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n _mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n _modality = new BehaviorSubject(null);\n /** Options for this InputModalityDetector. */\n _options;\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n _lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n _onKeydown = (event) => {\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n _onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n _onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n constructor() {\n const ngZone = inject(NgZone);\n const document = inject(DOCUMENT);\n const options = inject(INPUT_MODALITY_DETECTOR_OPTIONS, { optional: true });\n this._options = {\n ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n ...options,\n };\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (this._platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: InputModalityDetector, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\nlet uniqueIds = 0;\nclass LiveAnnouncer {\n _ngZone = inject(NgZone);\n _defaultOptions = inject(LIVE_ANNOUNCER_DEFAULT_OPTIONS, {\n optional: true,\n });\n _liveElement;\n _document = inject(DOCUMENT);\n _previousTimeout;\n _currentPromise;\n _currentResolve;\n constructor() {\n const elementToken = inject(LIVE_ANNOUNCER_ELEMENT_TOKEN, { optional: true });\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n if (this._liveElement.id) {\n this._exposeAnnouncerToModals(this._liveElement.id);\n }\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n // For some reason in tests this can be undefined\n // Probably related to ZoneJS and every other thing that patches browser APIs in tests\n this._currentResolve?.();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n clearTimeout(this._previousTimeout);\n this._liveElement?.remove();\n this._liveElement = null;\n this._currentResolve?.();\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = `cdk-live-announcer-${uniqueIds++}`;\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n /**\n * Some browsers won't expose the accessibility node of the live announcer element if there is an\n * `aria-modal` and the live announcer is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live announcer element.\n */\n _exposeAnnouncerToModals(id) {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `SnakBarContainer` and other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n }\n else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: LiveAnnouncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n _elementRef = inject(ElementRef);\n _liveAnnouncer = inject(LiveAnnouncer);\n _contentObserver = inject(ContentObserver);\n _ngZone = inject(NgZone);\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness, this.duration);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n _politeness = 'polite';\n /** Time in milliseconds after which to clear out the announcer element. */\n duration;\n _previousAnnouncedText;\n _subscription;\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkAriaLive, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkAriaLive, isStandalone: true, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"], duration: [\"cdkAriaLiveDuration\", \"duration\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: () => [], propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }], duration: [{\n type: Input,\n args: ['cdkAriaLiveDuration']\n }] } });\n\n/** Detection mode used for attributing the origin of a focus event. */\nvar FocusMonitorDetectionMode;\n(function (FocusMonitorDetectionMode) {\n /**\n * Any mousedown, keydown, or touchstart event that happened in the previous\n * tick or the current tick will be used to assign a focus event's origin (to\n * either mouse, keyboard, or touch). This is the default option.\n */\n FocusMonitorDetectionMode[FocusMonitorDetectionMode[\"IMMEDIATE\"] = 0] = \"IMMEDIATE\";\n /**\n * A focus event's origin is always attributed to the last corresponding\n * mousedown, keydown, or touchstart event, no matter how long ago it occurred.\n */\n FocusMonitorDetectionMode[FocusMonitorDetectionMode[\"EVENTUAL\"] = 1] = \"EVENTUAL\";\n})(FocusMonitorDetectionMode || (FocusMonitorDetectionMode = {}));\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n _ngZone = inject(NgZone);\n _platform = inject(Platform);\n _inputModalityDetector = inject(InputModalityDetector);\n /** The focus origin that the next focus event is a result of. */\n _origin = null;\n /** The FocusOrigin of the last focus event tracked by the FocusMonitor. */\n _lastFocusOrigin;\n /** Whether the window has just been focused. */\n _windowFocused = false;\n /** The timeout id of the window focus timeout. */\n _windowFocusTimeoutId;\n /** The timeout id of the origin clearing timeout. */\n _originTimeoutId;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n _originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n _elementInfo = new Map();\n /** The number of elements currently being monitored. */\n _monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n _rootNodeFocusListenerCount = new Map();\n /**\n * The specified detection mode, used for attributing the origin of a focus\n * event.\n */\n _detectionMode;\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n _windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = setTimeout(() => (this._windowFocused = false));\n };\n /** Used to reference correct document/window */\n _document = inject(DOCUMENT, { optional: true });\n /** Subject for stopping our InputModalityDetector subscription. */\n _stopInputModalityDetector = new Subject();\n constructor() {\n const options = inject(FOCUS_MONITOR_DEFAULT_OPTIONS, {\n optional: true,\n });\n this._detectionMode = options?.detectionMode || FocusMonitorDetectionMode.IMMEDIATE;\n }\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n _rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n if (event.type === 'focus') {\n this._onFocus(event, element);\n }\n else {\n this._onBlur(event, element);\n }\n }\n };\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n // Note: we don't want the observable to emit at all so we don't pass any parameters.\n return of();\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n if (this._windowFocused && this._lastFocusOrigin) {\n return this._lastFocusOrigin;\n }\n // If the interaction is coming from an input label, we consider it a mouse interactions.\n // This is a special case where focus moves on `click`, rather than `mousedown` which breaks\n // our detection, because all our assumptions are for `mousedown`. We need to handle this\n // special case, because it's very common for checkboxes and radio buttons.\n if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {\n return 'mouse';\n }\n return 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
\n //
\n //
\n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === FocusMonitorDetectionMode.EVENTUAL ||\n !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === FocusMonitorDetectionMode.IMMEDIATE) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo, null);\n }\n _emitOrigin(info, origin) {\n if (info.subject.observers.length) {\n this._ngZone.run(() => info.subject.next(origin));\n }\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n /**\n * Returns whether an interaction is likely to have come from the user clicking the `label` of\n * an `input` or `textarea` in order to focus it.\n * @param focusEventTarget Target currently receiving focus.\n */\n _isLastInteractionFromInputLabel(focusEventTarget) {\n const { _mostRecentTarget: mostRecentTarget, mostRecentModality } = this._inputModalityDetector;\n // If the last interaction used the mouse on an element contained by one of the labels\n // of an `input`/`textarea` that is currently focused, it is very likely that the\n // user redirected focus using the label.\n if (mostRecentModality !== 'mouse' ||\n !mostRecentTarget ||\n mostRecentTarget === focusEventTarget ||\n (focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA') ||\n focusEventTarget.disabled) {\n return false;\n }\n const labels = focusEventTarget.labels;\n if (labels) {\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].contains(mostRecentTarget)) {\n return true;\n }\n }\n }\n return false;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusMonitor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusMonitor, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n _elementRef = inject(ElementRef);\n _focusMonitor = inject(FocusMonitor);\n _monitorSubscription;\n _focusOrigin = null;\n cdkFocusChange = new EventEmitter();\n constructor() { }\n get focusOrigin() {\n return this._focusOrigin;\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => {\n this._focusOrigin = origin;\n this.cdkFocusChange.emit(origin);\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkMonitorFocus, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkMonitorFocus, isStandalone: true, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, exportAs: [\"cdkMonitorFocus\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n exportAs: 'cdkMonitorFocus',\n }]\n }], ctorParameters: () => [], propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/** Set of possible high-contrast mode backgrounds. */\nvar HighContrastMode;\n(function (HighContrastMode) {\n HighContrastMode[HighContrastMode[\"NONE\"] = 0] = \"NONE\";\n HighContrastMode[HighContrastMode[\"BLACK_ON_WHITE\"] = 1] = \"BLACK_ON_WHITE\";\n HighContrastMode[HighContrastMode[\"WHITE_ON_BLACK\"] = 2] = \"WHITE_ON_BLACK\";\n})(HighContrastMode || (HighContrastMode = {}));\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n _platform = inject(Platform);\n /**\n * Figuring out the high contrast mode and adding the body classes can cause\n * some expensive layouts. This flag is used to ensure that we only do it once.\n */\n _hasCheckedHighContrastMode;\n _document = inject(DOCUMENT);\n _breakpointSubscription;\n constructor() {\n this._breakpointSubscription = inject(BreakpointObserver)\n .observe('(forced-colors: active)')\n .subscribe(() => {\n if (this._hasCheckedHighContrastMode) {\n this._hasCheckedHighContrastMode = false;\n this._applyBodyHighContrastModeCssClasses();\n }\n });\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return HighContrastMode.NONE;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n // Pre Windows 11 dark theme.\n case 'rgb(0,0,0)':\n // Windows 11 dark themes.\n case 'rgb(45,50,54)':\n case 'rgb(32,32,32)':\n return HighContrastMode.WHITE_ON_BLACK;\n // Pre Windows 11 light theme.\n case 'rgb(255,255,255)':\n // Windows 11 light theme.\n case 'rgb(255,250,239)':\n return HighContrastMode.BLACK_ON_WHITE;\n }\n return HighContrastMode.NONE;\n }\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === HighContrastMode.BLACK_ON_WHITE) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === HighContrastMode.WHITE_ON_BLACK) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: HighContrastModeDetector, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\nclass A11yModule {\n constructor() {\n inject(HighContrastModeDetector)._applyBodyHighContrastModeCssClasses();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: A11yModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: A11yModule, imports: [ObserversModule, CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: A11yModule, imports: [ObserversModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ObserversModule, CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters = {};\n/** Service that generates unique IDs for DOM nodes. */\nclass _IdGenerator {\n _appId = inject(APP_ID);\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix) {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n if (!counters.hasOwnProperty(prefix)) {\n counters[prefix] = 0;\n }\n return `${prefix}${counters[prefix]++}`;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _IdGenerator, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _IdGenerator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusMonitorDetectionMode, FocusTrap, FocusTrapFactory, HighContrastMode, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, NOOP_TREE_KEY_MANAGER_FACTORY, NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER, NoopTreeKeyManager, TREE_KEY_MANAGER, TREE_KEY_MANAGER_FACTORY, TREE_KEY_MANAGER_FACTORY_PROVIDER, TreeKeyManager, _IdGenerator, addAriaReferencedId, getAriaReferenceIds, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader, removeAriaReferencedId };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n/** Resolves a string value to a specific direction. */\nfunction _resolveDirectionality(rawValue) {\n const value = rawValue?.toLowerCase() || '';\n if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n /** The current 'ltr' or 'rtl' value. */\n value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n change = new EventEmitter();\n constructor() {\n const _document = inject(DIR_DOCUMENT, { optional: true });\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Directionality, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Directionality, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Directionality, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n /** Normalized direction that accounts for invalid/unsupported values. */\n _dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n _isInitialized = false;\n /** Direction as passed in by the consumer. */\n _rawDir;\n /** Event emitted when the direction changes. */\n change = new EventEmitter();\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const previousValue = this._dir;\n // Note: `_resolveDirectionality` resolves the language based on the browser's language,\n // whereas the browser does it based on the content of the element. Since doing so based\n // on the content can be expensive, for now we're doing the simpler matching.\n this._dir = _resolveDirectionality(value);\n this._rawDir = value;\n if (previousValue !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: Dir, isStandalone: true, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Dir, decorators: [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir',\n }]\n }], propDecorators: { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\n }] } });\n\nclass BidiModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: BidiModule, imports: [Dir], exports: [Dir] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BidiModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BidiModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [Dir],\n exports: [Dir],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, Injectable, InjectionToken, NgZone, EventEmitter, Directive, Input, Output, NgModule } from '@angular/core';\n\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a re-layout. This re-layout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * re-layout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nclass PendingCopy {\n _document;\n _textarea;\n constructor(text, _document) {\n this._document = _document;\n const textarea = (this._textarea = this._document.createElement('textarea'));\n const styles = textarea.style;\n // Hide the element for display and accessibility. Set a fixed position so the page layout\n // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea\n // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.\n styles.position = 'fixed';\n styles.top = styles.opacity = '0';\n styles.left = '-999em';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.value = text;\n // Making the textarea `readonly` prevents the screen from jumping on iOS Safari (see #25169).\n textarea.readOnly = true;\n // The element needs to be inserted into the fullscreen container, if the page\n // is in fullscreen mode, otherwise the browser won't execute the copy command.\n (this._document.fullscreenElement || this._document.body).appendChild(textarea);\n }\n /** Finishes copying the text. */\n copy() {\n const textarea = this._textarea;\n let successful = false;\n try {\n // Older browsers could throw if copy is not supported.\n if (textarea) {\n const currentFocus = this._document.activeElement;\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length);\n successful = this._document.execCommand('copy');\n if (currentFocus) {\n currentFocus.focus();\n }\n }\n }\n catch {\n // Discard error.\n // Initial setting of {@code successful} will represent failure here.\n }\n return successful;\n }\n /** Cleans up DOM changes used to perform the copy operation. */\n destroy() {\n const textarea = this._textarea;\n if (textarea) {\n textarea.remove();\n this._textarea = undefined;\n }\n }\n}\n\n/**\n * A service for copying text to the clipboard.\n */\nclass Clipboard {\n _document = inject(DOCUMENT);\n constructor() { }\n /**\n * Copies the provided text into the user's clipboard.\n *\n * @param text The string to copy.\n * @returns Whether the operation was successful.\n */\n copy(text) {\n const pendingCopy = this.beginCopy(text);\n const successful = pendingCopy.copy();\n pendingCopy.destroy();\n return successful;\n }\n /**\n * Prepares a string to be copied later. This is useful for large strings\n * which take too long to successfully render and be copied in the same tick.\n *\n * The caller must call `destroy` on the returned `PendingCopy`.\n *\n * @param text The string to copy.\n * @returns the pending copy operation.\n */\n beginCopy(text) {\n return new PendingCopy(text, this._document);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Clipboard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Clipboard, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Clipboard, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nconst CDK_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken('CDK_COPY_TO_CLIPBOARD_CONFIG');\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\nclass CdkCopyToClipboard {\n _clipboard = inject(Clipboard);\n _ngZone = inject(NgZone);\n /** Content to be copied. */\n text = '';\n /**\n * How many times to attempt to copy the text. This may be necessary for longer text, because\n * the browser needs time to fill an intermediate textarea element and copy the content.\n */\n attempts = 1;\n /**\n * Emits when some text is copied to the clipboard. The\n * emitted value indicates whether copying was successful.\n */\n copied = new EventEmitter();\n /** Copies that are currently being attempted. */\n _pending = new Set();\n /** Whether the directive has been destroyed. */\n _destroyed;\n /** Timeout for the current copy attempt. */\n _currentTimeout;\n constructor() {\n const config = inject(CDK_COPY_TO_CLIPBOARD_CONFIG, { optional: true });\n if (config && config.attempts != null) {\n this.attempts = config.attempts;\n }\n }\n /** Copies the current text to the clipboard. */\n copy(attempts = this.attempts) {\n if (attempts > 1) {\n let remainingAttempts = attempts;\n const pending = this._clipboard.beginCopy(this.text);\n this._pending.add(pending);\n const attempt = () => {\n const successful = pending.copy();\n if (!successful && --remainingAttempts && !this._destroyed) {\n // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n }\n else {\n this._currentTimeout = null;\n this._pending.delete(pending);\n pending.destroy();\n this.copied.emit(successful);\n }\n };\n attempt();\n }\n else {\n this.copied.emit(this._clipboard.copy(this.text));\n }\n }\n ngOnDestroy() {\n if (this._currentTimeout) {\n clearTimeout(this._currentTimeout);\n }\n this._pending.forEach(copy => copy.destroy());\n this._pending.clear();\n this._destroyed = true;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkCopyToClipboard, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkCopyToClipboard, isStandalone: true, selector: \"[cdkCopyToClipboard]\", inputs: { text: [\"cdkCopyToClipboard\", \"text\"], attempts: [\"cdkCopyToClipboardAttempts\", \"attempts\"] }, outputs: { copied: \"cdkCopyToClipboardCopied\" }, host: { listeners: { \"click\": \"copy()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkCopyToClipboard, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkCopyToClipboard]',\n host: {\n '(click)': 'copy()',\n },\n }]\n }], ctorParameters: () => [], propDecorators: { text: [{\n type: Input,\n args: ['cdkCopyToClipboard']\n }], attempts: [{\n type: Input,\n args: ['cdkCopyToClipboardAttempts']\n }], copied: [{\n type: Output,\n args: ['cdkCopyToClipboardCopied']\n }] } });\n\nclass ClipboardModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: ClipboardModule, imports: [CdkCopyToClipboard], exports: [CdkCopyToClipboard] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ClipboardModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ClipboardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkCopyToClipboard],\n exports: [CdkCopyToClipboard],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_COPY_TO_CLIPBOARD_CONFIG, CdkCopyToClipboard, Clipboard, ClipboardModule, PendingCopy };\n","import { ElementRef } from '@angular/core';\n\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n if (_isNumberValue(value)) {\n return Number(value);\n }\n return arguments.length === 2 ? fallbackValue : 0;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","import { isObservable, of } from 'rxjs';\n\n/**\n * Given either an Observable or non-Observable value, returns either the original\n * Observable, or wraps it in an Observable that emits the non-Observable value.\n */\nfunction coerceObservable(data) {\n if (!isObservable(data)) {\n return of(data);\n }\n return data;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { coerceObservable };\n","import { ConnectableObservable, isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable } from '@angular/core';\n\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource. We also can't use `isObservable`\n // here, because of some internal apps.\n return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable);\n}\n\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n _data;\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\n}\n\n/** Indicates how a view was changed by a {@link _ViewRepeater}. */\nvar _ViewRepeaterOperation;\n(function (_ViewRepeaterOperation) {\n /** The content of an existing view was replaced with another item. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"REPLACED\"] = 0] = \"REPLACED\";\n /** A new view was created with `createEmbeddedView`. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"INSERTED\"] = 1] = \"INSERTED\";\n /** The position of a view changed, but the content remains the same. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"MOVED\"] = 2] = \"MOVED\";\n /** A view was detached from the view container. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"REMOVED\"] = 3] = \"REMOVED\";\n})(_ViewRepeaterOperation || (_ViewRepeaterOperation = {}));\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = _ViewRepeaterOperation.INSERTED;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = _ViewRepeaterOperation.REMOVED;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = _ViewRepeaterOperation.MOVED;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() { }\n}\n\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n _viewCache = [];\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? _ViewRepeaterOperation.INSERTED : _ViewRepeaterOperation.REPLACED;\n }\n else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = _ViewRepeaterOperation.REMOVED;\n }\n else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = _ViewRepeaterOperation.MOVED;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n}\n\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n _multiple;\n _emitChanges;\n compareWith;\n /** Currently-selected values. */\n _selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n _deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n _selectedToEmit = [];\n /** Cache for the array value of the selected items. */\n _selected;\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /** Event emitted when the value has changed. */\n changed = new Subject();\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true, compareWith) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n this.compareWith = compareWith;\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n setSelection(...values) {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values);\n values.forEach(value => this._markSelected(value));\n oldValues\n .filter(value => !newSelectedSet.has(this._getConcreteValue(value, newSelectedSet)))\n .forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n toggle(value) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n clear(flushEvent = true) {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(this._getConcreteValue(value));\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n value = this._getConcreteValue(value);\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n value = this._getConcreteValue(value);\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n /** Whether there are queued up change to be emitted. */\n _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n _getConcreteValue(inputValue, selection) {\n if (!this.compareWith) {\n return inputValue;\n }\n else {\n selection = selection ?? this._selection;\n for (let selectedValue of selection) {\n if (this.compareWith(inputValue, selectedValue)) {\n return selectedValue;\n }\n }\n return inputValue;\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n _listeners = [];\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, _ViewRepeaterOperation, getMultipleValuesInSingleSelectionError, isDataSource };\n","const MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\n\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n","import * as i0 from '@angular/core';\nimport { NgModule, inject, CSP_NONCE, Injectable, NgZone } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport { Platform } from '@angular/cdk/platform';\n\nclass LayoutModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: LayoutModule });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: LayoutModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n _platform = inject(Platform);\n _nonce = inject(CSP_NONCE, { optional: true });\n /** The internal matchMedia method to return back a MediaQueryList like object. */\n _matchMedia;\n constructor() {\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query, this._nonce);\n }\n return this._matchMedia(query);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MediaMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MediaMatcher, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query, nonce) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n if (nonce) {\n mediaQueryStyleNode.setAttribute('nonce', nonce);\n }\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/** Utility for checking the matching state of `@media` queries. */\nclass BreakpointObserver {\n _mediaMatcher = inject(MediaMatcher);\n _zone = inject(NgZone);\n /** A map of all media queries currently being listened for. */\n _queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n _destroySubject = new Subject();\n constructor() { }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BreakpointObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { coerceElement, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, inject, NgZone, ElementRef, EventEmitter, booleanAttribute, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { map, filter, debounceTime } from 'rxjs/operators';\n\n// Angular may add, remove, or edit comment nodes during change detection. We don't care about\n// these changes because they don't affect the user-preceived content, and worse it can cause\n// infinite change detection cycles where the change detection updates a comment, triggering the\n// MutationObserver, triggering another change detection and kicking the cycle off again.\nfunction shouldIgnoreRecord(record) {\n // Ignore changes to comment text.\n if (record.type === 'characterData' && record.target instanceof Comment) {\n return true;\n }\n // Ignore addition / removal of comments.\n if (record.type === 'childList') {\n for (let i = 0; i < record.addedNodes.length; i++) {\n if (!(record.addedNodes[i] instanceof Comment)) {\n return false;\n }\n }\n for (let i = 0; i < record.removedNodes.length; i++) {\n if (!(record.removedNodes[i] instanceof Comment)) {\n return false;\n }\n }\n return true;\n }\n // Observe everything else.\n return false;\n}\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n _mutationObserverFactory = inject(MutationObserverFactory);\n /** Keeps track of the existing MutationObservers so they can be reused. */\n _observedElements = new Map();\n _ngZone = inject(NgZone);\n constructor() { }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream\n .pipe(map(records => records.filter(record => !shouldIgnoreRecord(record))), filter(records => !!records.length))\n .subscribe(records => {\n this._ngZone.run(() => {\n observer.next(records);\n });\n });\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n return this._ngZone.runOutsideAngular(() => {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n });\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ContentObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ContentObserver, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ContentObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n _contentObserver = inject(ContentObserver);\n _elementRef = inject(ElementRef);\n /** Event emitted for each change in the element's content. */\n event = new EventEmitter();\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n _disabled = false;\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n _debounce;\n _currentSubscription = null;\n constructor() { }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n }\n _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkObserveContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkObserveContent, isStandalone: true, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\", booleanAttribute], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkObserveContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n }]\n }], ctorParameters: () => [], propDecorators: { event: [{\n type: Output,\n args: ['cdkObserveContent']\n }], disabled: [{\n type: Input,\n args: [{ alias: 'cdkObserveContentDisabled', transform: booleanAttribute }]\n }], debounce: [{\n type: Input\n }] } });\nclass ObserversModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: ObserversModule, imports: [CdkObserveContent], exports: [CdkObserveContent] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ObserversModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkObserveContent],\n exports: [CdkObserveContent],\n providers: [MutationObserverFactory],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n","import * as i0 from '@angular/core';\nimport { inject, NgZone, Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { filter, shareReplay, takeUntil } from 'rxjs/operators';\n\n/**\n * Handler that logs \"ResizeObserver loop limit exceeded\" errors.\n * These errors are not shown in the Chrome console, so we log them to ensure developers are aware.\n * @param e The error\n */\nconst loopLimitExceededErrorHandler = (e) => {\n if (e instanceof ErrorEvent && e.message === 'ResizeObserver loop limit exceeded') {\n console.error(`${e.message}. This could indicate a performance issue with your app. See https://github.com/WICG/resize-observer/blob/master/explainer.md#error-handling`);\n }\n};\n/**\n * A shared ResizeObserver to be used for a particular box type (content-box, border-box, or\n * device-pixel-content-box)\n */\nclass SingleBoxSharedResizeObserver {\n _box;\n /** Stream that emits when the shared observer is destroyed. */\n _destroyed = new Subject();\n /** Stream of all events from the ResizeObserver. */\n _resizeSubject = new Subject();\n /** ResizeObserver used to observe element resize events. */\n _resizeObserver;\n /** A map of elements to streams of their resize events. */\n _elementObservables = new Map();\n constructor(\n /** The box type to observe for resizes. */\n _box) {\n this._box = _box;\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(entries => this._resizeSubject.next(entries));\n }\n }\n /**\n * Gets a stream of resize events for the given element.\n * @param target The element to observe.\n * @return The stream of resize events for the element.\n */\n observe(target) {\n if (!this._elementObservables.has(target)) {\n this._elementObservables.set(target, new Observable(observer => {\n const subscription = this._resizeSubject.subscribe(observer);\n this._resizeObserver?.observe(target, { box: this._box });\n return () => {\n this._resizeObserver?.unobserve(target);\n subscription.unsubscribe();\n this._elementObservables.delete(target);\n };\n }).pipe(filter(entries => entries.some(entry => entry.target === target)), \n // Share a replay of the last event so that subsequent calls to observe the same element\n // receive initial sizing info like the first one. Also enable ref counting so the\n // element will be automatically unobserved when there are no more subscriptions.\n shareReplay({ bufferSize: 1, refCount: true }), takeUntil(this._destroyed)));\n }\n return this._elementObservables.get(target);\n }\n /** Destroys this instance. */\n destroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._resizeSubject.complete();\n this._elementObservables.clear();\n }\n}\n/**\n * Allows observing resize events on multiple elements using a shared set of ResizeObserver.\n * Sharing a ResizeObserver instance is recommended for better performance (see\n * https://github.com/WICG/resize-observer/issues/59).\n *\n * Rather than share a single `ResizeObserver`, this class creates one `ResizeObserver` per type\n * of observed box ('content-box', 'border-box', and 'device-pixel-content-box'). This avoids\n * later calls to `observe` with a different box type from influencing the events dispatched to\n * earlier calls.\n */\nclass SharedResizeObserver {\n /** Map of box type to shared resize observer. */\n _observers = new Map();\n /** The Angular zone. */\n _ngZone = inject(NgZone);\n constructor() {\n if (typeof ResizeObserver !== 'undefined' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n this._ngZone.runOutsideAngular(() => {\n window.addEventListener('error', loopLimitExceededErrorHandler);\n });\n }\n }\n ngOnDestroy() {\n for (const [, observer] of this._observers) {\n observer.destroy();\n }\n this._observers.clear();\n if (typeof ResizeObserver !== 'undefined' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n window.removeEventListener('error', loopLimitExceededErrorHandler);\n }\n }\n /**\n * Gets a stream of resize events for the given target element and box type.\n * @param target The element to observe for resizes.\n * @param options Options to pass to the `ResizeObserver`\n * @return The stream of resize events for the element.\n */\n observe(target, options) {\n const box = options?.box || 'content-box';\n if (!this._observers.has(box)) {\n this._observers.set(box, new SingleBoxSharedResizeObserver(box));\n }\n return this._observers.get(box).observe(target);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: SharedResizeObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: SharedResizeObserver, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: SharedResizeObserver, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SharedResizeObserver };\n","import { ScrollDispatcher, ViewportRuler, ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT, Location } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, NgZone, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, untracked, afterRender, afterNextRender, ElementRef, Injector, ANIMATION_MODULE_TYPE, EnvironmentInjector, ApplicationRef, InjectionToken, Directive, EventEmitter, TemplateRef, ViewContainerRef, booleanAttribute, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray } from '@angular/cdk/coercion';\nimport { supportsScrollBehavior, Platform, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport { filter, takeUntil, takeWhile } from 'rxjs/operators';\nimport { Directionality, BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n _viewportRuler;\n _previousHTMLStyles = { top: '', left: '' };\n _previousScrollPosition;\n _isEnabled = false;\n _document;\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n _scrollDispatcher;\n _ngZone;\n _viewportRuler;\n _config;\n _scrollSubscription = null;\n _overlayRef;\n _initialScrollPosition;\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0).pipe(filter(scrollable => {\n return (!scrollable ||\n !this._overlayRef.overlayElement.contains(scrollable.getElementRef().nativeElement));\n }));\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n /** Detaches the overlay ref and disables the scroll strategy. */\n _detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n}\n\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\n}\n\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n _scrollDispatcher;\n _viewportRuler;\n _ngZone;\n _config;\n _scrollSubscription = null;\n _overlayRef;\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n _scrollDispatcher = inject(ScrollDispatcher);\n _viewportRuler = inject(ViewportRuler);\n _ngZone = inject(NgZone);\n _document = inject(DOCUMENT);\n constructor() { }\n /** Do nothing on scroll. */\n noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollStrategyOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n /** Strategy with which to position the overlay. */\n positionStrategy;\n /** Strategy to be used when handling scroll events while the overlay is open. */\n scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n panelClass = '';\n /** Whether the overlay has a backdrop. */\n hasBackdrop = false;\n /** Custom class to add to the backdrop */\n backdropClass = 'cdk-overlay-dark-backdrop';\n /** The width of the overlay panel. If a number is provided, pixel units are assumed. */\n width;\n /** The height of the overlay panel. If a number is provided, pixel units are assumed. */\n height;\n /** The min-width of the overlay panel. If a number is provided, pixel units are assumed. */\n minWidth;\n /** The min-height of the overlay panel. If a number is provided, pixel units are assumed. */\n minHeight;\n /** The max-width of the overlay panel. If a number is provided, pixel units are assumed. */\n maxWidth;\n /** The max-height of the overlay panel. If a number is provided, pixel units are assumed. */\n maxHeight;\n /**\n * Direction of the text in the overlay panel. If a `Directionality` instance\n * is passed in, the overlay will handle changes to its value automatically.\n */\n direction;\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n disposeOnNavigation = false;\n constructor(config) {\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n offsetX;\n offsetY;\n panelClass;\n /** X-axis attachment point for connected overlay origin. Can be 'start', 'end', or 'center'. */\n originX;\n /** Y-axis attachment point for connected overlay origin. Can be 'top', 'bottom', or 'center'. */\n originY;\n /** X-axis attachment point for connected overlay. Can be 'start', 'end', or 'center'. */\n overlayX;\n /** Y-axis attachment point for connected overlay. Can be 'top', 'bottom', or 'center'. */\n overlayY;\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n isOriginClipped;\n isOriginOutsideView;\n isOverlayClipped;\n isOverlayOutsideView;\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n connectionPair;\n scrollableViewProperties;\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n /** Currently attached overlays in the order they were attached. */\n _attachedOverlays = [];\n _document = inject(DOCUMENT);\n _isAttached;\n constructor() { }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BaseOverlayDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n _ngZone = inject(NgZone, { optional: true });\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n }\n else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n /** Keyboard event listener that will be attached to the body. */\n _keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n }\n else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n _platform = inject(Platform);\n _ngZone = inject(NgZone, { optional: true });\n _cursorOriginalValue;\n _cursorStyleIsSet = false;\n _pointerDownEventTarget;\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n }\n else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n /** Store pointerdown event target to track origin of click. */\n _pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n _clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget\n : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (containsPierceShadowDom(overlayRef.overlayElement, target) ||\n containsPierceShadowDom(overlayRef.overlayElement, origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n }\n else {\n outsidePointerEvents.next(event);\n }\n }\n };\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** Version of `Element.contains` that transcends shadow DOM boundaries. */\nfunction containsPierceShadowDom(parent, child) {\n const supportsShadowRoot = typeof ShadowRoot !== 'undefined' && ShadowRoot;\n let current = child;\n while (current) {\n if (current === parent) {\n return true;\n }\n current =\n supportsShadowRoot && current instanceof ShadowRoot ? current.host : current.parentNode;\n }\n return false;\n}\n\nclass _CdkOverlayStyleLoader {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _CdkOverlayStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.0.0\", type: _CdkOverlayStyleLoader, isStandalone: true, selector: \"ng-component\", host: { attributes: { \"cdk-overlay-style-loader\": \"\" } }, ngImport: i0, template: '', isInline: true, styles: [\".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _CdkOverlayStyleLoader, decorators: [{\n type: Component,\n args: [{ template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'cdk-overlay-style-loader': '' }, styles: [\".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}\"] }]\n }] });\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n _platform = inject(Platform);\n _containerElement;\n _document = inject(DOCUMENT);\n _styleLoader = inject(_CdkPrivateStyleLoader);\n constructor() { }\n ngOnDestroy() {\n this._containerElement?.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n this._loadStyles();\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n /** Loads the structural styles necessary for the overlay to work. */\n _loadStyles() {\n this._styleLoader.load(_CdkOverlayStyleLoader);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n _portalOutlet;\n _host;\n _pane;\n _config;\n _ngZone;\n _keyboardDispatcher;\n _document;\n _location;\n _outsideClickDispatcher;\n _animationsDisabled;\n _injector;\n _backdropElement = null;\n _backdropTimeout;\n _backdropClick = new Subject();\n _attachments = new Subject();\n _detachments = new Subject();\n _positionStrategy;\n _scrollStrategy;\n _locationChanges = Subscription.EMPTY;\n _backdropClickHandler = (event) => this._backdropClick.next(event);\n _backdropTransitionendHandler = (event) => {\n this._disposeBackdrop(event.target);\n };\n /**\n * Reference to the parent of the `_host` at the time it was detached. Used to restore\n * the `_host` to its original position in the DOM when it gets re-attached.\n */\n _previousHostParent;\n /** Stream of keydown events dispatched to this overlay. */\n _keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n _outsidePointerEvents = new Subject();\n _renders = new Subject();\n _afterRenderRef;\n /** Reference to the currently-running `afterNextRender` call. */\n _afterNextRenderRef;\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher, _animationsDisabled = false, _injector) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsDisabled = _animationsDisabled;\n this._injector = _injector;\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n // Users could open the overlay from an `effect`, in which case we need to\n // run the `afterRender` as `untracked`. We don't recommend that users do\n // this, but we also don't want to break users who are doing it.\n this._afterRenderRef = untracked(() => afterRender(() => {\n this._renders.next();\n }, { injector: this._injector }));\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // We need to clean this up ourselves, because we're passing in an\n // `EnvironmentInjector` below which won't ever be destroyed.\n // Otherwise it causes some callbacks to be retained (see #29696).\n this._afterNextRenderRef?.destroy();\n // Update the position once the overlay is fully rendered before attempting to position it,\n // as the position may depend on the size of the rendered content.\n this._afterNextRenderRef = afterNextRender(() => {\n // The overlay could've been detached before the callback executed.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n }, { injector: this._injector });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.\n // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but\n // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.\n if (typeof attachResult?.onDestroy === 'function') {\n // In most cases we control the portal and we know when it is being detached so that\n // we can finish the disposal process. The exception is if the user passes in a custom\n // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use\n // `detach` here instead of `dispose`, because we don't know if the user intends to\n // reattach the overlay at a later point. It also has the advantage of waiting for animations.\n attachResult.onDestroy(() => {\n if (this.hasAttached()) {\n // We have to delay the `detach` call, because detaching immediately prevents\n // other destroy hooks from running. This is likely a framework bug similar to\n // https://github.com/angular/angular/issues/46119\n this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));\n }\n });\n }\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenEmpty();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n this._host?.remove();\n this._afterNextRenderRef?.destroy();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n this._afterRenderRef.destroy();\n this._renders.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = { ...this._config, ...sizeConfig };\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = { ...this._config, direction: dir };\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._animationsDisabled) {\n this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');\n }\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n if (this._animationsDisabled) {\n this._disposeBackdrop(backdropToDetach);\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenEmpty() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._renders\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\n }\n }\n}\n\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n _viewportRuler;\n _document;\n _platform;\n _overlayContainer;\n /** The overlay to which this strategy is attached. */\n _overlayRef;\n /** Whether we're performing the very first positioning of the overlay. */\n _isInitialRender;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n _lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n _isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n _canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n _growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n _hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n _positionLocked = false;\n /** Cached origin dimensions */\n _originRect;\n /** Cached overlay dimensions */\n _overlayRect;\n /** Cached viewport dimensions */\n _viewportRect;\n /** Cached container dimensions */\n _containerRect;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n _viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n _scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n _preferredPositions = [];\n /** The origin element against which the overlay will be positioned. */\n _origin;\n /** The overlay pane element. */\n _pane;\n /** Whether the strategy has been disposed of already. */\n _isDisposed;\n /**\n * Parent element for the overlay panel used to constrain the overlay panel's size to fit\n * within the viewport.\n */\n _boundingBox;\n /** The last position to have been calculated as the best fit position. */\n _lastPosition;\n /** The last calculated scroll visibility. Only tracked */\n _lastScrollVisibility;\n /** Subject that emits whenever the position changes. */\n _positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n _resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n _offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n _offsetY = 0;\n /** Selector to be used when finding the elements on which to set the transform origin. */\n _transformOriginSelector;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n _appliedPanelClasses = [];\n /** Amount by which the overlay was pushed in each axis during the last time it was positioned. */\n _previousPushAmount;\n /** Observable sequence of position changes. */\n positionChanges = this._positionChanges;\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n this.setOrigin(connectedTo);\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef &&\n overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y,\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollVisibility = this._getScrollVisibility();\n // We're recalculating on scroll, but we only want to emit if anything\n // changed since downstream code might be hitting the `NgZone`.\n if (position !== this._lastPosition ||\n !this._lastScrollVisibility ||\n !compareScrollVisibility(this._lastScrollVisibility, scrollVisibility)) {\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollVisibility);\n this._positionChanges.next(changeEvent);\n }\n this._lastScrollVisibility = scrollVisibility;\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `DOMRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin * 2;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stretches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin,\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breaking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the DOMRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width,\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `DOMRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `DOMRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height),\n };\n}\n/** Returns whether two `ScrollingVisibility` objects are identical. */\nfunction compareScrollVisibility(a, b) {\n if (a === b) {\n return true;\n }\n return (a.isOriginClipped === b.isOriginClipped &&\n a.isOriginOutsideView === b.isOriginOutsideView &&\n a.isOverlayClipped === b.isOverlayClipped &&\n a.isOverlayOutsideView === b.isOverlayOutsideView);\n}\nconst STANDARD_DROPDOWN_BELOW_POSITIONS = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\nconst STANDARD_DROPDOWN_ADJACENT_POSITIONS = [\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\n];\n\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n /** The overlay to which this strategy is attached. */\n _overlayRef;\n _cssPosition = 'static';\n _topOffset = '';\n _bottomOffset = '';\n _alignItems = '';\n _xPosition = '';\n _xOffset = '';\n _width = '';\n _height = '';\n _isDisposed = false;\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._xOffset = value;\n this._xPosition = 'left';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._xOffset = value;\n this._xPosition = 'right';\n return this;\n }\n /**\n * Sets the overlay to the start of the viewport, depending on the overlay direction.\n * This will be to the left in LTR layouts and to the right in RTL.\n * @param offset Offset from the edge of the screen.\n */\n start(value = '') {\n this._xOffset = value;\n this._xPosition = 'start';\n return this;\n }\n /**\n * Sets the overlay to the end of the viewport, depending on the overlay direction.\n * This will be to the right in LTR layouts and to the left in RTL.\n * @param offset Offset from the edge of the screen.\n */\n end(value = '') {\n this._xOffset = value;\n this._xPosition = 'end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._xPosition = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n const xPosition = this._xPosition;\n const xOffset = this._xOffset;\n const isRtl = this._overlayRef.getConfig().direction === 'rtl';\n let marginLeft = '';\n let marginRight = '';\n let justifyContent = '';\n if (shouldBeFlushHorizontally) {\n justifyContent = 'flex-start';\n }\n else if (xPosition === 'center') {\n justifyContent = 'center';\n if (isRtl) {\n marginRight = xOffset;\n }\n else {\n marginLeft = xOffset;\n }\n }\n else if (isRtl) {\n if (xPosition === 'left' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginRight = xOffset;\n }\n }\n else if (xPosition === 'left' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginRight = xOffset;\n }\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;\n parentStyles.justifyContent = justifyContent;\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent =\n parentStyles.alignItems =\n styles.marginTop =\n styles.marginBottom =\n styles.marginLeft =\n styles.marginRight =\n styles.position =\n '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n _viewportRuler = inject(ViewportRuler);\n _document = inject(DOCUMENT);\n _platform = inject(Platform);\n _overlayContainer = inject(OverlayContainer);\n constructor() { }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayPositionBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n scrollStrategies = inject(ScrollStrategyOptions);\n _overlayContainer = inject(OverlayContainer);\n _positionBuilder = inject(OverlayPositionBuilder);\n _keyboardDispatcher = inject(OverlayKeyboardDispatcher);\n _injector = inject(Injector);\n _ngZone = inject(NgZone);\n _document = inject(DOCUMENT);\n _directionality = inject(Directionality);\n _location = inject(Location);\n _outsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n _animationsModuleType = inject(ANIMATION_MODULE_TYPE, { optional: true });\n _idGenerator = inject(_IdGenerator);\n _appRef;\n _styleLoader = inject(_CdkPrivateStyleLoader);\n constructor() { }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n // This is done in the overlay container as well, but we have it here\n // since it's common to mock out the overlay container in tests.\n this._styleLoader.load(_CdkOverlayStyleLoader);\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher, this._animationsModuleType === 'NoopAnimations', this._injector.get(EnvironmentInjector));\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = this._idGenerator.getId('cdk-overlay-');\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, null, this._appRef, this._injector, this._document);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Overlay, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Overlay, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n },\n});\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n elementRef = inject(ElementRef);\n constructor() { }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkOverlayOrigin, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkOverlayOrigin, isStandalone: true, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n }]\n }], ctorParameters: () => [] });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n _overlay = inject(Overlay);\n _dir = inject(Directionality, { optional: true });\n _overlayRef;\n _templatePortal;\n _backdropSubscription = Subscription.EMPTY;\n _attachSubscription = Subscription.EMPTY;\n _detachSubscription = Subscription.EMPTY;\n _positionSubscription = Subscription.EMPTY;\n _offsetX;\n _offsetY;\n _position;\n _scrollStrategyFactory = inject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY);\n _disposeOnNavigation = false;\n _ngZone = inject(NgZone);\n /** Origin for the connected overlay. */\n origin;\n /** Registered connected position pairs. */\n positions;\n /**\n * This input overrides the positions input if specified. It lets users pass\n * in arbitrary positioning strategies.\n */\n positionStrategy;\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The width of the overlay panel. */\n width;\n /** The height of the overlay panel. */\n height;\n /** The min width of the overlay panel. */\n minWidth;\n /** The min height of the overlay panel. */\n minHeight;\n /** The custom class to be set on the backdrop element. */\n backdropClass;\n /** The custom class to add to the overlay pane element. */\n panelClass;\n /** Margin between the overlay and the viewport edges. */\n viewportMargin = 0;\n /** Strategy to be used when handling scroll events while the overlay is open. */\n scrollStrategy;\n /** Whether the overlay is open. */\n open = false;\n /** Whether the overlay can be closed by user interaction. */\n disableClose = false;\n /** CSS selector which to set the transform origin. */\n transformOriginSelector;\n /** Whether or not the overlay should attach a backdrop. */\n hasBackdrop = false;\n /** Whether or not the overlay should be locked when scrolling. */\n lockPosition = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n flexibleDimensions = false;\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n growAfterOpen = false;\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n push = false;\n /** Whether the overlay should be disposed of when the user goes backwards/forwards in history. */\n get disposeOnNavigation() {\n return this._disposeOnNavigation;\n }\n set disposeOnNavigation(value) {\n this._disposeOnNavigation = value;\n }\n /** Event emitted when the backdrop is clicked. */\n backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n overlayOutsideClick = new EventEmitter();\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor() {\n const templateRef = inject(TemplateRef);\n const viewContainerRef = inject(ViewContainerRef);\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n const origin = this._getOriginElement();\n const target = _getEventTarget(event);\n if (!origin || (origin !== target && !origin.contains(target))) {\n this.overlayOutsideClick.next(event);\n }\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = (this._position =\n this.positionStrategy || this._createPositionStrategy());\n const overlayConfig = new OverlayConfig({\n direction: this._dir || 'ltr',\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n disposeOnNavigation: this.disposeOnNavigation,\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this._getOrigin())\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay.position().flexibleConnectedTo(this._getOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n }\n else {\n return this.origin;\n }\n }\n _getOriginElement() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef.nativeElement;\n }\n if (this.origin instanceof ElementRef) {\n return this.origin.nativeElement;\n }\n if (typeof Element !== 'undefined' && this.origin instanceof Element) {\n return this.origin;\n }\n return null;\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this._ngZone.run(() => this.positionChange.emit(position));\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkConnectedOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkConnectedOverlay, isStandalone: true, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\", booleanAttribute], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\", booleanAttribute], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\", booleanAttribute], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\", booleanAttribute], push: [\"cdkConnectedOverlayPush\", \"push\", booleanAttribute], disposeOnNavigation: [\"cdkConnectedOverlayDisposeOnNavigation\", \"disposeOnNavigation\", booleanAttribute] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n }]\n }], ctorParameters: () => [], propDecorators: { origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }], hasBackdrop: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayHasBackdrop', transform: booleanAttribute }]\n }], lockPosition: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayLockPosition', transform: booleanAttribute }]\n }], flexibleDimensions: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayFlexibleDimensions', transform: booleanAttribute }]\n }], growAfterOpen: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayGrowAfterOpen', transform: booleanAttribute }]\n }], push: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayPush', transform: booleanAttribute }]\n }], disposeOnNavigation: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayDisposeOnNavigation', transform: booleanAttribute }]\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\nclass OverlayModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayModule, imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n _fullScreenEventName;\n _fullScreenListener;\n constructor() {\n super();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return (_document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FullscreenOverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive = false) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n","import * as i0 from '@angular/core';\nimport { inject, PLATFORM_ID, Injectable, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n _platformId = inject(PLATFORM_ID);\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n constructor() { }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Platform, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Platform, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\nclass PlatformModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: PlatformModule });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PlatformModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nvar RtlScrollAxisType;\n(function (RtlScrollAxisType) {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n RtlScrollAxisType[RtlScrollAxisType[\"NORMAL\"] = 0] = \"NORMAL\";\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n RtlScrollAxisType[RtlScrollAxisType[\"NEGATED\"] = 1] = \"NEGATED\";\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n RtlScrollAxisType[RtlScrollAxisType[\"INVERTED\"] = 2] = \"INVERTED\";\n})(RtlScrollAxisType || (RtlScrollAxisType = {}));\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, RtlScrollAxisType, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","import * as i0 from '@angular/core';\nimport { ElementRef, NgModuleRef, createComponent, Injector, inject, TemplateRef, ViewContainerRef, Directive, EventEmitter, Input, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n _attachedHost;\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n /** The type of the component that will be instantiated for attachment. */\n component;\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalOutlet.\n * The origin is necessary when the host is outside of the Angular application context.\n */\n viewContainerRef;\n /** Injector used for the instantiation of the component. */\n injector;\n /**\n * @deprecated No longer in use. To be removed.\n * @breaking-change 18.0.0\n */\n componentFactoryResolver;\n /**\n * List of DOM nodes that should be projected through `` of the attached component.\n */\n projectableNodes;\n constructor(component, viewContainerRef, injector, \n /**\n * @deprecated No longer in use. To be removed.\n * @breaking-change 18.0.0\n */\n _componentFactoryResolver, projectableNodes) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.projectableNodes = projectableNodes;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n templateRef;\n viewContainerRef;\n context;\n injector;\n constructor(\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef, \n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef, \n /** Contextual data to be passed in to the embedded view. */\n context, \n /** The injector to use for the embedded view. */\n injector) {\n super();\n this.templateRef = templateRef;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n this.injector = injector;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n /** DOM node hosting the portal's content. */\n element;\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n /** The portal currently attached to the host. */\n _attachedPortal;\n /** A function that will permanently dispose this host. */\n _disposeFn;\n /** Whether this host has already been permanently disposed. */\n _isDisposed = false;\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n attachDomPortal = null;\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n outletElement;\n _appRef;\n _defaultInjector;\n _document;\n /**\n * @param outletElement Element into which the content is projected.\n * @param _unusedComponentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor(\n /** Element into which the content is projected. */\n outletElement, \n /**\n * @deprecated No longer in use. To be removed.\n * @breaking-change 18.0.0\n */\n _unusedComponentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n const injector = portal.injector || portal.viewContainerRef.injector;\n const ngModuleRef = injector.get(NgModuleRef, null, { optional: true }) || undefined;\n componentRef = portal.viewContainerRef.createComponent(portal.component, {\n index: portal.viewContainerRef.length,\n injector,\n ngModuleRef,\n projectableNodes: portal.projectableNodes || undefined,\n });\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = createComponent(portal.component, {\n elementInjector: portal.injector || this._defaultInjector || Injector.NULL,\n environmentInjector: this._appRef.injector,\n projectableNodes: portal.projectableNodes || undefined,\n });\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n attachDomPortal = (portal) => {\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor() {\n const templateRef = inject(TemplateRef);\n const viewContainerRef = inject(ViewContainerRef);\n super(templateRef, viewContainerRef);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkPortal, isStandalone: true, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal',\n }]\n }], ctorParameters: () => [] });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: TemplatePortalDirective, isStandalone: true, selector: \"[cdk-portal], [portal]\", providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ],\n }]\n }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n _moduleRef = inject(NgModuleRef, { optional: true });\n _document = inject(DOCUMENT);\n _viewContainerRef = inject(ViewContainerRef);\n /** Whether the portal component is initialized. */\n _isInitialized = false;\n /** Reference to the currently-attached component/view ref. */\n _attachedRef;\n constructor() {\n super();\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Emits when a portal is attached to the outlet. */\n attached = new EventEmitter();\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedRef = this._attachedPortal = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const ref = viewContainerRef.createComponent(portal.component, {\n index: viewContainerRef.length,\n injector: portal.injector || viewContainerRef.injector,\n projectableNodes: portal.projectableNodes || undefined,\n ngModuleRef: this._moduleRef || undefined,\n });\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n attachDomPortal = (portal) => {\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n ? nativeElement\n : nativeElement.parentNode);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkPortalOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkPortalOutlet, isStandalone: true, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n }]\n }], ctorParameters: () => [], propDecorators: { portal: [{\n type: Input,\n args: ['cdkPortalOutlet']\n }], attached: [{\n type: Output\n }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: PortalHostDirective, isStandalone: true, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PortalHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: [{ name: 'portal', alias: 'cdkPortalHost' }],\n providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ],\n }]\n }] });\nclass PortalModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: PortalModule, imports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PortalModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: PortalModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n }]\n }] });\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n _parentInjector;\n _customTokens;\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n","import * as i0 from '@angular/core';\nimport { inject, Injector, EnvironmentInjector, ApplicationRef, createComponent, Injectable, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n/** Apps in which we've loaded styles. */\nconst appsWithLoaders = new WeakMap();\n/**\n * Service that loads structural styles dynamically\n * and ensures that they're only loaded once per app.\n */\nclass _CdkPrivateStyleLoader {\n _appRef;\n _injector = inject(Injector);\n _environmentInjector = inject(EnvironmentInjector);\n /**\n * Loads a set of styles.\n * @param loader Component which will be instantiated to load the styles.\n */\n load(loader) {\n // Resolve the app ref lazily to avoid circular dependency errors if this is called too early.\n const appRef = (this._appRef = this._appRef || this._injector.get(ApplicationRef));\n let data = appsWithLoaders.get(appRef);\n // If we haven't loaded for this app before, we have to initialize it.\n if (!data) {\n data = { loaders: new Set(), refs: [] };\n appsWithLoaders.set(appRef, data);\n // When the app is destroyed, we need to clean up all the related loaders.\n appRef.onDestroy(() => {\n appsWithLoaders.get(appRef)?.refs.forEach(ref => ref.destroy());\n appsWithLoaders.delete(appRef);\n });\n }\n // If the loader hasn't been loaded before, we need to instatiate it.\n if (!data.loaders.has(loader)) {\n data.loaders.add(loader);\n data.refs.push(createComponent(loader, { environmentInjector: this._environmentInjector }));\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _CdkPrivateStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _CdkPrivateStyleLoader, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _CdkPrivateStyleLoader, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Component used to load the .cdk-visually-hidden styles.\n * @docs-private\n */\nclass _VisuallyHiddenLoader {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _VisuallyHiddenLoader, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.0.0\", type: _VisuallyHiddenLoader, isStandalone: true, selector: \"ng-component\", exportAs: [\"cdkVisuallyHidden\"], ngImport: i0, template: '', isInline: true, styles: [\".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _VisuallyHiddenLoader, decorators: [{\n type: Component,\n args: [{ exportAs: 'cdkVisuallyHidden', encapsulation: ViewEncapsulation.None, template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}\"] }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { _CdkPrivateStyleLoader, _VisuallyHiddenLoader };\n","let nextHandle = 1;\nlet resolved;\nconst activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport const Immediate = {\n setImmediate(cb) {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n clearImmediate(handle) {\n findAndClearHandle(handle);\n },\n};\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nconst { setImmediate, clearImmediate } = Immediate;\nexport const immediateProvider = {\n setImmediate(...args) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate)(...args);\n },\n clearImmediate(handle) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport const asapScheduler = new AsapScheduler(AsapAction);\nexport const asap = asapScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AsapScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nexport class AsapAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n var _a;\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n const { actions } = scheduler;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n }\n}\n","import { coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, inject, NgZone, Injectable, ElementRef, ChangeDetectorRef, Injector, afterNextRender, booleanAttribute, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, ViewContainerRef, TemplateRef, IterableDiffers, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport { Platform, getRtlScrollAxisType, RtlScrollAxisType, supportsScrollBehavior } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Directionality, BidiModule } from '@angular/cdk/bidi';\nimport { _VIEW_REPEATER_STRATEGY, isDataSource, ArrayDataSource, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n _scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n _viewport = null;\n /** The size of the items in the virtually scrolling list. */\n _itemSize;\n /** The minimum amount of buffer rendered beyond the viewport (in pixels). */\n _minBufferPx;\n /** The number of buffer items to render beyond the edge of the viewport (in pixels). */\n _maxBufferPx;\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n _itemSize = 20;\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n _minBufferPx = 100;\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n _maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n _scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkFixedSizeVirtualScroll, isStandalone: true, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ],\n }]\n }], propDecorators: { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }] } });\n\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n _ngZone = inject(NgZone);\n _platform = inject(Platform);\n /** Used to reference correct document/window */\n _document = inject(DOCUMENT, { optional: true });\n constructor() { }\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n _scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n _globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n _scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n scrollContainers = new Map();\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * De-registers a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0\n ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while ((element = element.parentElement));\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n elementRef = inject(ElementRef);\n scrollDispatcher = inject(ScrollDispatcher);\n ngZone = inject(NgZone);\n dir = inject(Directionality, { optional: true });\n _destroyed = new Subject();\n _elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n constructor() { }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != RtlScrollAxisType.NORMAL) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkScrollable, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkScrollable, isStandalone: true, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkScrollable, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n }]\n }], ctorParameters: () => [] });\n\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n _platform = inject(Platform);\n /** Cached viewport dimensions. */\n _viewportSize;\n /** Stream of viewport change events. */\n _change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n _changeListener = (event) => {\n this._change.next(event);\n };\n /** Used to reference correct document/window */\n _document = inject(DOCUMENT, { optional: true });\n constructor() {\n const ngZone = inject(NgZone);\n ngZone.runOutsideAngular(() => {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => (this._viewportSize = null));\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a DOMRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top ||\n document.body.scrollTop ||\n window.scrollY ||\n documentElement.scrollTop ||\n 0;\n const left = -documentRect.left ||\n document.body.scrollLeft ||\n window.scrollX ||\n documentElement.scrollLeft ||\n 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser\n ? { width: window.innerWidth, height: window.innerHeight }\n : { width: 0, height: 0 };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ViewportRuler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ViewportRuler, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ViewportRuler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\nconst VIRTUAL_SCROLLABLE = new InjectionToken('VIRTUAL_SCROLLABLE');\n/**\n * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.\n */\nclass CdkVirtualScrollable extends CdkScrollable {\n constructor() {\n super();\n }\n /**\n * Measure the viewport size for the provided orientation.\n *\n * @param orientation The orientation to measure the size from.\n */\n measureViewportSize(orientation) {\n const viewportEl = this.elementRef.nativeElement;\n return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollable, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkVirtualScrollable, isStandalone: true, usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollable, decorators: [{\n type: Directive\n }], ctorParameters: () => [] });\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkVirtualScrollable {\n elementRef = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _scrollStrategy = inject(VIRTUAL_SCROLL_STRATEGY, {\n optional: true,\n });\n scrollable = inject(VIRTUAL_SCROLLABLE, { optional: true });\n _platform = inject(Platform);\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n _detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n _renderedRangeSubject = new Subject();\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n _orientation = 'vertical';\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** The element that wraps the rendered content. */\n _contentWrapper;\n /** A stream that emits whenever the rendered range changes. */\n renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n _totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n _totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n _totalContentHeight = '';\n /**\n * The CSS transform applied to the rendered subset of items so that they appear within the bounds\n * of the visible viewport.\n */\n _renderedContentTransform;\n /** The currently rendered range of indices. */\n _renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n _dataLength = 0;\n /** The size of the viewport (in pixels). */\n _viewportSize = 0;\n /** the currently attached CdkVirtualScrollRepeater. */\n _forOf;\n /** The last rendered content offset that was set. */\n _renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n _renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n _isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n _runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n _viewportChanges = Subscription.EMPTY;\n _injector = inject(Injector);\n _isDestroyed = false;\n constructor() {\n super();\n const viewportRuler = inject(ViewportRuler);\n if (!this._scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n if (!this.scrollable) {\n // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable\n this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');\n this.scrollable = this;\n }\n }\n ngOnInit() {\n // Scrolling depends on the element dimensions which we can't get during SSR.\n if (!this._platform.isBrowser) {\n return;\n }\n if (this.scrollable === this) {\n super.ngOnInit();\n }\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.scrollable\n .elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER), \n // Usually `elementScrolled` is completed when the scrollable is destroyed, but\n // that may not be the case if a `CdkVirtualScrollableElement` is used so we have\n // to unsubscribe here just in case.\n takeUntil(this._destroyed))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n this._isDestroyed = true;\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // In appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollable.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the scrollable (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n // This is to break the call cycle\n let measureScrollOffset;\n if (this.scrollable == this) {\n measureScrollOffset = (_from) => super.measureScrollOffset(_from);\n }\n else {\n measureScrollOffset = (_from) => this.scrollable.measureScrollOffset(_from);\n }\n return Math.max(0, measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) -\n this.measureViewportOffset());\n }\n /**\n * Measures the offset of the viewport from the scrolling container\n * @param from The edge to measure from.\n */\n measureViewportOffset(from) {\n let fromRect;\n const LEFT = 'left';\n const RIGHT = 'right';\n const isRtl = this.dir?.value == 'rtl';\n if (from == 'start') {\n fromRect = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n fromRect = isRtl ? LEFT : RIGHT;\n }\n else if (from) {\n fromRect = from;\n }\n else {\n fromRect = this.orientation === 'horizontal' ? 'left' : 'top';\n }\n const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);\n const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];\n return viewportClientRect - scrollerClientRect;\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n this._viewportSize = this.scrollable.measureViewportSize(this.orientation);\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n if (this._isDestroyed) {\n return;\n }\n this.ngZone.run(() => {\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this._changeDetectorRef.markForCheck();\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n afterNextRender(() => {\n this._isChangeDetectionPending = false;\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }, { injector: this._injector });\n });\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkVirtualScrollViewport, isStandalone: true, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: [\"appendOnly\", \"appendOnly\", booleanAttribute] }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],\n },\n ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"\\n
\\n \\n
\\n\\n
\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],\n },\n ], template: \"\\n
\\n \\n
\\n\\n
\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"] }]\n }], ctorParameters: () => [], propDecorators: { orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], scrolledIndexChange: [{\n type: Output\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\n }] } });\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n _viewContainerRef = inject(ViewContainerRef);\n _template = inject(TemplateRef);\n _differs = inject(IterableDiffers);\n _viewRepeater = inject(_VIEW_REPEATER_STRATEGY);\n _viewport = inject(CdkVirtualScrollViewport, { skipSelf: true });\n /** Emits when the rendered view of the data changes. */\n viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n _dataSourceChanges = new Subject();\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n _cdkVirtualForOf;\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn\n ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n : undefined;\n }\n _cdkVirtualForTrackBy;\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n /** Emits whenever the data in the current DataSource changes. */\n dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n _differ = null;\n /** The most recent data emitted from the DataSource. */\n _data;\n /** The currently rendered items. */\n _renderedItems;\n /** The currently rendered range of indices. */\n _renderedRange;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n _needsUpdate = false;\n _destroyed = new Subject();\n constructor() {\n const ngZone = inject(NgZone);\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode\n ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false,\n },\n index,\n };\n }\n static ngTemplateContextGuard(directive, context) {\n return true;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualForOf, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkVirtualForOf, isStandalone: true, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }], ctorParameters: () => [], propDecorators: { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\n }] } });\n\n/**\n * Provides a virtual scrollable for the element it is attached to.\n */\nclass CdkVirtualScrollableElement extends CdkVirtualScrollable {\n constructor() {\n super();\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return (this.getElementRef().nativeElement.getBoundingClientRect()[from] -\n this.measureScrollOffset(from));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollableElement, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkVirtualScrollableElement, isStandalone: true, selector: \"[cdkVirtualScrollingElement]\", host: { classAttribute: \"cdk-virtual-scrollable\" }, providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }], usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollableElement, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualScrollingElement]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }],\n host: {\n 'class': 'cdk-virtual-scrollable',\n },\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Provides as virtual scrollable for the global / window scrollbar.\n */\nclass CdkVirtualScrollableWindow extends CdkVirtualScrollable {\n _elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n constructor() {\n super();\n this.elementRef = new ElementRef(document.documentElement);\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollableWindow, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkVirtualScrollableWindow, isStandalone: true, selector: \"cdk-virtual-scroll-viewport[scrollWindow]\", providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }], usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkVirtualScrollableWindow, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[scrollWindow]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }],\n }]\n }], ctorParameters: () => [] });\n\nclass CdkScrollableModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkScrollableModule, imports: [CdkScrollable], exports: [CdkScrollable] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkScrollableModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n imports: [CdkScrollable],\n }]\n }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollingModule, imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollingModule, imports: [BidiModule,\n CdkScrollableModule, BidiModule, CdkScrollableModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: ScrollingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n BidiModule,\n CdkScrollableModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollable, CdkVirtualScrollableElement, CdkVirtualScrollableWindow, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLLABLE, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n","import { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, inject, NgZone, Injectable, ElementRef, EventEmitter, Directive, Output, booleanAttribute, Input, NgModule } from '@angular/core';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { coerceElement, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { auditTime, takeUntil } from 'rxjs/operators';\n\n/** Component used to load the structural styles of the text field. */\nclass _CdkTextFieldStyleLoader {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _CdkTextFieldStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.0.0\", type: _CdkTextFieldStyleLoader, isStandalone: true, selector: \"ng-component\", host: { attributes: { \"cdk-text-field-style-loader\": \"\" } }, ngImport: i0, template: '', isInline: true, styles: [\"textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: _CdkTextFieldStyleLoader, decorators: [{\n type: Component,\n args: [{ template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'cdk-text-field-style-loader': '' }, styles: [\"textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\"] }]\n }] });\n\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n _platform = inject(Platform);\n _ngZone = inject(NgZone);\n _styleLoader = inject(_CdkPrivateStyleLoader);\n _monitoredElements = new Map();\n constructor() { }\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n this._styleLoader.load(_CdkTextFieldStyleLoader);\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n return info.subject;\n }\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n }\n else if (event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n }\n });\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n return result;\n }\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: AutofillMonitor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: AutofillMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n _elementRef = inject(ElementRef);\n _autofillMonitor = inject(AutofillMonitor);\n /** Emits when the autofill state of the element changes. */\n cdkAutofill = new EventEmitter();\n constructor() { }\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkAutofill, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkAutofill, isStandalone: true, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkAutofill, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]',\n }]\n }], ctorParameters: () => [], propDecorators: { cdkAutofill: [{\n type: Output\n }] } });\n\n/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n _elementRef = inject(ElementRef);\n _platform = inject(Platform);\n _ngZone = inject(NgZone);\n /** Keep track of the previous textarea value to avoid resizing when the value hasn't changed. */\n _previousValue;\n _initialHeight;\n _destroyed = new Subject();\n _minRows;\n _maxRows;\n _enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n _previousMinRows = -1;\n _textareaElement;\n /** Minimum amount of rows in the textarea. */\n get minRows() {\n return this._minRows;\n }\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n get maxRows() {\n return this._maxRows;\n }\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n if (value) {\n this._textareaElement.setAttribute('placeholder', value);\n }\n else {\n this._textareaElement.removeAttribute('placeholder');\n }\n this._cacheTextareaPlaceholderHeight();\n }\n /** Cached height of a textarea with a single row. */\n _cachedLineHeight;\n /** Cached height of a textarea with only the placeholder. */\n _cachedPlaceholderHeight;\n /** Used to reference correct document/window */\n _document = inject(DOCUMENT, { optional: true });\n _hasFocus;\n _isViewInited = false;\n constructor() {\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_CdkTextFieldStyleLoader);\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n }\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this._textareaElement.parentNode.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n return scrollHeight;\n }\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n /** Handles `focus` and `blur` events. */\n _handleFocusEvent = (event) => {\n this._hasFocus = event.type === 'focus';\n };\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n }\n else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n _scrollToCaretPosition(textarea) {\n const { selectionStart, selectionEnd } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTextareaAutosize, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkTextareaAutosize, isStandalone: true, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\", booleanAttribute], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n }]\n }], ctorParameters: () => [], propDecorators: { minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }], maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }], enabled: [{\n type: Input,\n args: [{ alias: 'cdkTextareaAutosize', transform: booleanAttribute }]\n }], placeholder: [{\n type: Input\n }] } });\n\nclass TextFieldModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: TextFieldModule, imports: [CdkAutofill, CdkTextareaAutosize], exports: [CdkAutofill, CdkTextareaAutosize] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: TextFieldModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: TextFieldModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkAutofill, CdkTextareaAutosize],\n exports: [CdkAutofill, CdkTextareaAutosize],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n","import { scanInternals } from './scanInternals';\nimport { operate } from '../util/lift';\nexport function reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n","import { SelectionModel, isDataSource } from '@angular/cdk/collections';\nimport { isObservable, Subject, BehaviorSubject, of, combineLatest, EMPTY, concat } from 'rxjs';\nimport { take, filter, takeUntil, startWith, tap, switchMap, map, reduce, concatMap, distinctUntilChanged } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, ViewContainerRef, Directive, TemplateRef, IterableDiffers, ChangeDetectorRef, ElementRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild, ContentChildren, EventEmitter, booleanAttribute, Output, numberAttribute, NgModule } from '@angular/core';\nimport { TREE_KEY_MANAGER } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceObservable } from '@angular/cdk/coercion/private';\n\n/**\n * Base tree control. It has basic toggle/expand/collapse operations on a single data node.\n *\n * @deprecated Use one of levelAccessor or childrenAccessor. To be removed in a future version.\n * @breaking-change 21.0.0\n */\nclass BaseTreeControl {\n /** Saved data node for `expandAll` action. */\n dataNodes;\n /** A selection model with multi-selection to track expansion status. */\n expansionModel = new SelectionModel(true);\n /**\n * Returns the identifier by which a dataNode should be tracked, should its\n * reference change.\n *\n * Similar to trackBy for *ngFor\n */\n trackBy;\n /** Get depth of a given data node, return the level number. This is for flat tree node. */\n getLevel;\n /**\n * Whether the data node is expandable. Returns true if expandable.\n * This is for flat tree node.\n */\n isExpandable;\n /** Gets a stream that emits whenever the given data node's children change. */\n getChildren;\n /** Toggles one single data node's expanded/collapsed state. */\n toggle(dataNode) {\n this.expansionModel.toggle(this._trackByValue(dataNode));\n }\n /** Expands one single data node. */\n expand(dataNode) {\n this.expansionModel.select(this._trackByValue(dataNode));\n }\n /** Collapses one single data node. */\n collapse(dataNode) {\n this.expansionModel.deselect(this._trackByValue(dataNode));\n }\n /** Whether a given data node is expanded or not. Returns true if the data node is expanded. */\n isExpanded(dataNode) {\n return this.expansionModel.isSelected(this._trackByValue(dataNode));\n }\n /** Toggles a subtree rooted at `node` recursively. */\n toggleDescendants(dataNode) {\n this.expansionModel.isSelected(this._trackByValue(dataNode))\n ? this.collapseDescendants(dataNode)\n : this.expandDescendants(dataNode);\n }\n /** Collapse all dataNodes in the tree. */\n collapseAll() {\n this.expansionModel.clear();\n }\n /** Expands a subtree rooted at given data node recursively. */\n expandDescendants(dataNode) {\n let toBeProcessed = [dataNode];\n toBeProcessed.push(...this.getDescendants(dataNode));\n this.expansionModel.select(...toBeProcessed.map(value => this._trackByValue(value)));\n }\n /** Collapses a subtree rooted at given data node recursively. */\n collapseDescendants(dataNode) {\n let toBeProcessed = [dataNode];\n toBeProcessed.push(...this.getDescendants(dataNode));\n this.expansionModel.deselect(...toBeProcessed.map(value => this._trackByValue(value)));\n }\n _trackByValue(value) {\n return this.trackBy ? this.trackBy(value) : value;\n }\n}\n\n/**\n * Flat tree control. Able to expand/collapse a subtree recursively for flattened tree.\n *\n * @deprecated Use one of levelAccessor or childrenAccessor instead. To be removed in a future\n * version.\n * @breaking-change 21.0.0\n */\nclass FlatTreeControl extends BaseTreeControl {\n getLevel;\n isExpandable;\n options;\n /** Construct with flat tree data node functions getLevel and isExpandable. */\n constructor(getLevel, isExpandable, options) {\n super();\n this.getLevel = getLevel;\n this.isExpandable = isExpandable;\n this.options = options;\n if (this.options) {\n this.trackBy = this.options.trackBy;\n }\n }\n /**\n * Gets a list of the data node's subtree of descendent data nodes.\n *\n * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes\n * with correct levels.\n */\n getDescendants(dataNode) {\n const startIndex = this.dataNodes.indexOf(dataNode);\n const results = [];\n // Goes through flattened tree nodes in the `dataNodes` array, and get all descendants.\n // The level of descendants of a tree node must be greater than the level of the given\n // tree node.\n // If we reach a node whose level is equal to the level of the tree node, we hit a sibling.\n // If we reach a node whose level is greater than the level of the tree node, we hit a\n // sibling of an ancestor.\n for (let i = startIndex + 1; i < this.dataNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataNodes[i]); i++) {\n results.push(this.dataNodes[i]);\n }\n return results;\n }\n /**\n * Expands all data nodes in the tree.\n *\n * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened\n * data nodes of the tree.\n */\n expandAll() {\n this.expansionModel.select(...this.dataNodes.map(node => this._trackByValue(node)));\n }\n}\n\n/**\n * Nested tree control. Able to expand/collapse a subtree recursively for NestedNode type.\n *\n * @deprecated Use one of levelAccessor or childrenAccessor instead. To be removed in a future\n * version.\n * @breaking-change 21.0.0\n */\nclass NestedTreeControl extends BaseTreeControl {\n getChildren;\n options;\n /** Construct with nested tree function getChildren. */\n constructor(getChildren, options) {\n super();\n this.getChildren = getChildren;\n this.options = options;\n if (this.options) {\n this.trackBy = this.options.trackBy;\n }\n if (this.options?.isExpandable) {\n this.isExpandable = this.options.isExpandable;\n }\n }\n /**\n * Expands all dataNodes in the tree.\n *\n * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level\n * data nodes of the tree.\n */\n expandAll() {\n this.expansionModel.clear();\n const allNodes = this.dataNodes.reduce((accumulator, dataNode) => [...accumulator, ...this.getDescendants(dataNode), dataNode], []);\n this.expansionModel.select(...allNodes.map(node => this._trackByValue(node)));\n }\n /** Gets a list of descendant dataNodes of a subtree rooted at given data node recursively. */\n getDescendants(dataNode) {\n const descendants = [];\n this._getDescendants(descendants, dataNode);\n // Remove the node itself\n return descendants.splice(1);\n }\n /** A helper function to get descendants recursively. */\n _getDescendants(descendants, dataNode) {\n descendants.push(dataNode);\n const childrenNodes = this.getChildren(dataNode);\n if (Array.isArray(childrenNodes)) {\n childrenNodes.forEach((child) => this._getDescendants(descendants, child));\n }\n else if (isObservable(childrenNodes)) {\n // TypeScript as of version 3.5 doesn't seem to treat `Boolean` like a function that\n // returns a `boolean` specifically in the context of `filter`, so we manually clarify that.\n childrenNodes.pipe(take(1), filter(Boolean)).subscribe(children => {\n for (const child of children) {\n this._getDescendants(descendants, child);\n }\n });\n }\n }\n}\n\n/**\n * Injection token used to provide a `CdkTreeNode` to its outlet.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst CDK_TREE_NODE_OUTLET_NODE = new InjectionToken('CDK_TREE_NODE_OUTLET_NODE');\n/**\n * Outlet for nested CdkNode. Put `[cdkTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\nclass CdkTreeNodeOutlet {\n viewContainer = inject(ViewContainerRef);\n _node = inject(CDK_TREE_NODE_OUTLET_NODE, { optional: true });\n constructor() { }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodeOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkTreeNodeOutlet, isStandalone: true, selector: \"[cdkTreeNodeOutlet]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodeOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeOutlet]',\n }]\n }], ctorParameters: () => [] });\n\n/** Context provided to the tree node component. */\nclass CdkTreeNodeOutletContext {\n /** Data for the node. */\n $implicit;\n /** Depth of the node. */\n level;\n /** Index location of the node. */\n index;\n /** Length of the number of total dataNodes. */\n count;\n constructor(data) {\n this.$implicit = data;\n }\n}\n/**\n * Data node definition for the CdkTree.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\nclass CdkTreeNodeDef {\n /** @docs-private */\n template = inject(TemplateRef);\n /**\n * Function that should return true if this node template should be used for the provided node\n * data and index. If left undefined, this node will be considered the default node template to\n * use when no other when functions return true for the data.\n * For every node, there must be at least one when function that passes or an undefined to\n * default.\n */\n when;\n constructor() { }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodeDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkTreeNodeDef, isStandalone: true, selector: \"[cdkTreeNodeDef]\", inputs: { when: [\"cdkTreeNodeDefWhen\", \"when\"] }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodeDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeDef]',\n inputs: [{ name: 'when', alias: 'cdkTreeNodeDefWhen' }],\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Returns an error to be thrown when there is no usable data.\n * @docs-private\n */\nfunction getTreeNoValidDataSourceError() {\n return Error(`A valid data source must be provided.`);\n}\n/**\n * Returns an error to be thrown when there are multiple nodes that are missing a when function.\n * @docs-private\n */\nfunction getTreeMultipleDefaultNodeDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching node defs for a particular set of data.\n * @docs-private\n */\nfunction getTreeMissingMatchingNodeDefError() {\n return Error(`Could not find a matching node definition for the provided node data.`);\n}\n/**\n * Returns an error to be thrown when there is no tree control.\n * @docs-private\n */\nfunction getTreeControlMissingError() {\n return Error(`Could not find a tree control, levelAccessor, or childrenAccessor for the tree.`);\n}\n/**\n * Returns an error to be thrown when there are multiple ways of specifying children or level\n * provided to the tree.\n * @docs-private\n */\nfunction getMultipleTreeControlsError() {\n return Error(`More than one of tree control, levelAccessor, or childrenAccessor were provided.`);\n}\n\n/**\n * CDK tree component that connects with a data source to retrieve data of type `T` and renders\n * dataNodes with hierarchy. Updates the dataNodes when new data is provided by the data source.\n */\nclass CdkTree {\n _differs = inject(IterableDiffers);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _dir = inject(Directionality);\n /** Subject that emits when the component has been destroyed. */\n _onDestroy = new Subject();\n /** Differ used to find the changes in the data provided by the data source. */\n _dataDiffer;\n /** Stores the node definition that does not have a when predicate. */\n _defaultNodeDef;\n /** Data subscription */\n _dataSubscription;\n /** Level of nodes */\n _levels = new Map();\n /** The immediate parents for a node. This is `null` if there is no parent. */\n _parents = new Map();\n /**\n * Nodes grouped into each set, which is a list of nodes displayed together in the DOM.\n *\n * Lookup key is the parent of a set. Root nodes have key of null.\n *\n * Values is a 'set' of tree nodes. Each tree node maps to a treeitem element. Sets are in the\n * order that it is rendered. Each set maps directly to aria-posinset and aria-setsize attributes.\n */\n _ariaSets = new Map();\n /**\n * Provides a stream containing the latest data array to render. Influenced by the tree's\n * stream of view window (what dataNodes are currently on screen).\n * Data source can be an observable of data array, or a data array to render.\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n _dataSource;\n /**\n * The tree controller\n *\n * @deprecated Use one of `levelAccessor` or `childrenAccessor` instead. To be removed in a\n * future version.\n * @breaking-change 21.0.0\n */\n treeControl;\n /**\n * Given a data node, determines what tree level the node is at.\n *\n * One of levelAccessor or childrenAccessor must be specified, not both.\n * This is enforced at run-time.\n */\n levelAccessor;\n /**\n * Given a data node, determines what the children of that node are.\n *\n * One of levelAccessor or childrenAccessor must be specified, not both.\n * This is enforced at run-time.\n */\n childrenAccessor;\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize node operations by identifying a node based on its data\n * relative to the function to know if a node should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n trackBy;\n /**\n * Given a data node, determines the key by which we determine whether or not this node is expanded.\n */\n expansionKey;\n // Outlets within the tree's template where the dataNodes will be inserted.\n _nodeOutlet;\n /** The tree node template for the tree */\n _nodeDefs;\n // TODO(tinayuangao): Setup a listener for scrolling, emit the calculated view to viewChange.\n // Remove the MAX_VALUE in viewChange\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n */\n viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n /** Keep track of which nodes are expanded. */\n _expansionModel;\n /**\n * Maintain a synchronous cache of flattened data nodes. This will only be\n * populated after initial render, and in certain cases, will be delayed due to\n * relying on Observable `getChildren` calls.\n */\n _flattenedNodes = new BehaviorSubject([]);\n /** The automatically determined node type for the tree. */\n _nodeType = new BehaviorSubject(null);\n /** The mapping between data and the node that is rendered. */\n _nodes = new BehaviorSubject(new Map());\n /**\n * Synchronous cache of nodes for the `TreeKeyManager`. This is separate\n * from `_flattenedNodes` so they can be independently updated at different\n * times.\n */\n _keyManagerNodes = new BehaviorSubject([]);\n _keyManagerFactory = inject(TREE_KEY_MANAGER);\n /** The key manager for this tree. Handles focus and activation based on user keyboard input. */\n _keyManager;\n _viewInit = false;\n constructor() { }\n ngAfterContentInit() {\n this._initializeKeyManager();\n }\n ngAfterContentChecked() {\n this._updateDefaultNodeDefinition();\n this._subscribeToDataChanges();\n }\n ngOnDestroy() {\n this._nodeOutlet.viewContainer.clear();\n this.viewChange.complete();\n this._onDestroy.next();\n this._onDestroy.complete();\n if (this._dataSource && typeof this._dataSource.disconnect === 'function') {\n this.dataSource.disconnect(this);\n }\n if (this._dataSubscription) {\n this._dataSubscription.unsubscribe();\n this._dataSubscription = null;\n }\n // In certain tests, the tree might be destroyed before this is initialized\n // in `ngAfterContentInit`.\n this._keyManager?.destroy();\n }\n ngOnInit() {\n this._checkTreeControlUsage();\n this._initializeDataDiffer();\n }\n ngAfterViewInit() {\n this._viewInit = true;\n }\n _updateDefaultNodeDefinition() {\n const defaultNodeDefs = this._nodeDefs.filter(def => !def.when);\n if (defaultNodeDefs.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeMultipleDefaultNodeDefsError();\n }\n this._defaultNodeDef = defaultNodeDefs[0];\n }\n /**\n * Sets the node type for the tree, if it hasn't been set yet.\n *\n * This will be called by the first node that's rendered in order for the tree\n * to determine what data transformations are required.\n */\n _setNodeTypeIfUnset(newType) {\n const currentType = this._nodeType.value;\n if (currentType === null) {\n this._nodeType.next(newType);\n }\n else if ((typeof ngDevMode === 'undefined' || ngDevMode) && currentType !== newType) {\n console.warn(`Tree is using conflicting node types which can cause unexpected behavior. ` +\n `Please use tree nodes of the same type (e.g. only flat or only nested). ` +\n `Current node type: \"${currentType}\", new node type \"${newType}\".`);\n }\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the node outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n if (this._dataSource && typeof this._dataSource.disconnect === 'function') {\n this.dataSource.disconnect(this);\n }\n if (this._dataSubscription) {\n this._dataSubscription.unsubscribe();\n this._dataSubscription = null;\n }\n // Remove the all dataNodes if there is now no data source\n if (!dataSource) {\n this._nodeOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n if (this._nodeDefs) {\n this._subscribeToDataChanges();\n }\n }\n _getExpansionModel() {\n if (!this.treeControl) {\n this._expansionModel ??= new SelectionModel(true);\n return this._expansionModel;\n }\n return this.treeControl.expansionModel;\n }\n /** Set up a subscription for the data provided by the data source. */\n _subscribeToDataChanges() {\n if (this._dataSubscription) {\n return;\n }\n let dataStream;\n if (isDataSource(this._dataSource)) {\n dataStream = this._dataSource.connect(this);\n }\n else if (isObservable(this._dataSource)) {\n dataStream = this._dataSource;\n }\n else if (Array.isArray(this._dataSource)) {\n dataStream = of(this._dataSource);\n }\n if (!dataStream) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTreeNoValidDataSourceError();\n }\n return;\n }\n this._dataSubscription = this._getRenderData(dataStream)\n .pipe(takeUntil(this._onDestroy))\n .subscribe(renderingData => {\n this._renderDataChanges(renderingData);\n });\n }\n /** Given an Observable containing a stream of the raw data, returns an Observable containing the RenderingData */\n _getRenderData(dataStream) {\n const expansionModel = this._getExpansionModel();\n return combineLatest([\n dataStream,\n this._nodeType,\n // We don't use the expansion data directly, however we add it here to essentially\n // trigger data rendering when expansion changes occur.\n expansionModel.changed.pipe(startWith(null), tap(expansionChanges => {\n this._emitExpansionChanges(expansionChanges);\n })),\n ]).pipe(switchMap(([data, nodeType]) => {\n if (nodeType === null) {\n return of({ renderNodes: data, flattenedNodes: null, nodeType });\n }\n // If we're here, then we know what our node type is, and therefore can\n // perform our usual rendering pipeline, which necessitates converting the data\n return this._computeRenderingData(data, nodeType).pipe(map(convertedData => ({ ...convertedData, nodeType })));\n }));\n }\n _renderDataChanges(data) {\n if (data.nodeType === null) {\n this.renderNodeChanges(data.renderNodes);\n return;\n }\n // If we're here, then we know what our node type is, and therefore can\n // perform our usual rendering pipeline.\n this._updateCachedData(data.flattenedNodes);\n this.renderNodeChanges(data.renderNodes);\n this._updateKeyManagerItems(data.flattenedNodes);\n }\n _emitExpansionChanges(expansionChanges) {\n if (!expansionChanges) {\n return;\n }\n const nodes = this._nodes.value;\n for (const added of expansionChanges.added) {\n const node = nodes.get(added);\n node?._emitExpansionState(true);\n }\n for (const removed of expansionChanges.removed) {\n const node = nodes.get(removed);\n node?._emitExpansionState(false);\n }\n }\n _initializeKeyManager() {\n const items = combineLatest([this._keyManagerNodes, this._nodes]).pipe(map(([keyManagerNodes, renderNodes]) => keyManagerNodes.reduce((items, data) => {\n const node = renderNodes.get(this._getExpansionKey(data));\n if (node) {\n items.push(node);\n }\n return items;\n }, [])));\n const keyManagerOptions = {\n trackBy: node => this._getExpansionKey(node.data),\n skipPredicate: node => !!node.isDisabled,\n typeAheadDebounceInterval: true,\n horizontalOrientation: this._dir.value,\n };\n this._keyManager = this._keyManagerFactory(items, keyManagerOptions);\n }\n _initializeDataDiffer() {\n // Provide a default trackBy based on `_getExpansionKey` if one isn't provided.\n const trackBy = this.trackBy ?? ((_index, item) => this._getExpansionKey(item));\n this._dataDiffer = this._differs.find([]).create(trackBy);\n }\n _checkTreeControlUsage() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Verify that Tree follows API contract of using one of TreeControl, levelAccessor or\n // childrenAccessor. Throw an appropriate error if contract is not met.\n let numTreeControls = 0;\n if (this.treeControl) {\n numTreeControls++;\n }\n if (this.levelAccessor) {\n numTreeControls++;\n }\n if (this.childrenAccessor) {\n numTreeControls++;\n }\n if (!numTreeControls) {\n throw getTreeControlMissingError();\n }\n else if (numTreeControls > 1) {\n throw getMultipleTreeControlsError();\n }\n }\n }\n /** Check for changes made in the data and render each change (node added/removed/moved). */\n renderNodeChanges(data, dataDiffer = this._dataDiffer, viewContainer = this._nodeOutlet.viewContainer, parentData) {\n const changes = dataDiffer.diff(data);\n // Some tree consumers expect change detection to propagate to nodes\n // even when the array itself hasn't changed; we explicitly detect changes\n // anyways in order for nodes to update their data.\n //\n // However, if change detection is called while the component's view is\n // still initing, then the order of child views initing will be incorrect;\n // to prevent this, we only exit early if the view hasn't initialized yet.\n if (!changes && !this._viewInit) {\n return;\n }\n changes?.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n this.insertNode(data[currentIndex], currentIndex, viewContainer, parentData);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex);\n }\n else {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n }\n });\n // If the data itself changes, but keeps the same trackBy, we need to update the templates'\n // context to reflect the new object.\n changes?.forEachIdentityChange((record) => {\n const newData = record.item;\n if (record.currentIndex != undefined) {\n const view = viewContainer.get(record.currentIndex);\n view.context.$implicit = newData;\n }\n });\n // Note: we only `detectChanges` from a top-level call, otherwise we risk overflowing\n // the call stack since this method is called recursively (see #29733.)\n // TODO: change to `this._changeDetectorRef.markForCheck()`,\n // or just switch this component to use signals.\n if (parentData) {\n this._changeDetectorRef.markForCheck();\n }\n else {\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Finds the matching node definition that should be used for this node data. If there is only\n * one node definition, it is returned. Otherwise, find the node definition that has a when\n * predicate that returns true with the data. If none return true, return the default node\n * definition.\n */\n _getNodeDef(data, i) {\n if (this._nodeDefs.length === 1) {\n return this._nodeDefs.first;\n }\n const nodeDef = this._nodeDefs.find(def => def.when && def.when(i, data)) || this._defaultNodeDef;\n if (!nodeDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeMissingMatchingNodeDefError();\n }\n return nodeDef;\n }\n /**\n * Create the embedded view for the data node template and place it in the correct index location\n * within the data node view container.\n */\n insertNode(nodeData, index, viewContainer, parentData) {\n const levelAccessor = this._getLevelAccessor();\n const node = this._getNodeDef(nodeData, index);\n const key = this._getExpansionKey(nodeData);\n // Node context that will be provided to created embedded view\n const context = new CdkTreeNodeOutletContext(nodeData);\n parentData ??= this._parents.get(key) ?? undefined;\n // If the tree is flat tree, then use the `getLevel` function in flat tree control\n // Otherwise, use the level of parent node.\n if (levelAccessor) {\n context.level = levelAccessor(nodeData);\n }\n else if (parentData !== undefined && this._levels.has(this._getExpansionKey(parentData))) {\n context.level = this._levels.get(this._getExpansionKey(parentData)) + 1;\n }\n else {\n context.level = 0;\n }\n this._levels.set(key, context.level);\n // Use default tree nodeOutlet, or nested node's nodeOutlet\n const container = viewContainer ? viewContainer : this._nodeOutlet.viewContainer;\n container.createEmbeddedView(node.template, context, index);\n // Set the data to just created `CdkTreeNode`.\n // The `CdkTreeNode` created from `createEmbeddedView` will be saved in static variable\n // `mostRecentTreeNode`. We get it from static variable and pass the node data to it.\n if (CdkTreeNode.mostRecentTreeNode) {\n CdkTreeNode.mostRecentTreeNode.data = nodeData;\n }\n }\n /** Whether the data node is expanded or collapsed. Returns true if it's expanded. */\n isExpanded(dataNode) {\n return !!(this.treeControl?.isExpanded(dataNode) ||\n this._expansionModel?.isSelected(this._getExpansionKey(dataNode)));\n }\n /** If the data node is currently expanded, collapse it. Otherwise, expand it. */\n toggle(dataNode) {\n if (this.treeControl) {\n this.treeControl.toggle(dataNode);\n }\n else if (this._expansionModel) {\n this._expansionModel.toggle(this._getExpansionKey(dataNode));\n }\n }\n /** Expand the data node. If it is already expanded, does nothing. */\n expand(dataNode) {\n if (this.treeControl) {\n this.treeControl.expand(dataNode);\n }\n else if (this._expansionModel) {\n this._expansionModel.select(this._getExpansionKey(dataNode));\n }\n }\n /** Collapse the data node. If it is already collapsed, does nothing. */\n collapse(dataNode) {\n if (this.treeControl) {\n this.treeControl.collapse(dataNode);\n }\n else if (this._expansionModel) {\n this._expansionModel.deselect(this._getExpansionKey(dataNode));\n }\n }\n /**\n * If the data node is currently expanded, collapse it and all its descendants.\n * Otherwise, expand it and all its descendants.\n */\n toggleDescendants(dataNode) {\n if (this.treeControl) {\n this.treeControl.toggleDescendants(dataNode);\n }\n else if (this._expansionModel) {\n if (this.isExpanded(dataNode)) {\n this.collapseDescendants(dataNode);\n }\n else {\n this.expandDescendants(dataNode);\n }\n }\n }\n /**\n * Expand the data node and all its descendants. If they are already expanded, does nothing.\n */\n expandDescendants(dataNode) {\n if (this.treeControl) {\n this.treeControl.expandDescendants(dataNode);\n }\n else if (this._expansionModel) {\n const expansionModel = this._expansionModel;\n expansionModel.select(this._getExpansionKey(dataNode));\n this._getDescendants(dataNode)\n .pipe(take(1), takeUntil(this._onDestroy))\n .subscribe(children => {\n expansionModel.select(...children.map(child => this._getExpansionKey(child)));\n });\n }\n }\n /** Collapse the data node and all its descendants. If it is already collapsed, does nothing. */\n collapseDescendants(dataNode) {\n if (this.treeControl) {\n this.treeControl.collapseDescendants(dataNode);\n }\n else if (this._expansionModel) {\n const expansionModel = this._expansionModel;\n expansionModel.deselect(this._getExpansionKey(dataNode));\n this._getDescendants(dataNode)\n .pipe(take(1), takeUntil(this._onDestroy))\n .subscribe(children => {\n expansionModel.deselect(...children.map(child => this._getExpansionKey(child)));\n });\n }\n }\n /** Expands all data nodes in the tree. */\n expandAll() {\n if (this.treeControl) {\n this.treeControl.expandAll();\n }\n else if (this._expansionModel) {\n const expansionModel = this._expansionModel;\n expansionModel.select(...this._flattenedNodes.value.map(child => this._getExpansionKey(child)));\n }\n }\n /** Collapse all data nodes in the tree. */\n collapseAll() {\n if (this.treeControl) {\n this.treeControl.collapseAll();\n }\n else if (this._expansionModel) {\n const expansionModel = this._expansionModel;\n expansionModel.deselect(...this._flattenedNodes.value.map(child => this._getExpansionKey(child)));\n }\n }\n /** Level accessor, used for compatibility between the old Tree and new Tree */\n _getLevelAccessor() {\n return this.treeControl?.getLevel?.bind(this.treeControl) ?? this.levelAccessor;\n }\n /** Children accessor, used for compatibility between the old Tree and new Tree */\n _getChildrenAccessor() {\n return this.treeControl?.getChildren?.bind(this.treeControl) ?? this.childrenAccessor;\n }\n /**\n * Gets the direct children of a node; used for compatibility between the old tree and the\n * new tree.\n */\n _getDirectChildren(dataNode) {\n const levelAccessor = this._getLevelAccessor();\n const expansionModel = this._expansionModel ?? this.treeControl?.expansionModel;\n if (!expansionModel) {\n return of([]);\n }\n const key = this._getExpansionKey(dataNode);\n const isExpanded = expansionModel.changed.pipe(switchMap(changes => {\n if (changes.added.includes(key)) {\n return of(true);\n }\n else if (changes.removed.includes(key)) {\n return of(false);\n }\n return EMPTY;\n }), startWith(this.isExpanded(dataNode)));\n if (levelAccessor) {\n return combineLatest([isExpanded, this._flattenedNodes]).pipe(map(([expanded, flattenedNodes]) => {\n if (!expanded) {\n return [];\n }\n return this._findChildrenByLevel(levelAccessor, flattenedNodes, dataNode, 1);\n }));\n }\n const childrenAccessor = this._getChildrenAccessor();\n if (childrenAccessor) {\n return coerceObservable(childrenAccessor(dataNode) ?? []);\n }\n throw getTreeControlMissingError();\n }\n /**\n * Given the list of flattened nodes, the level accessor, and the level range within\n * which to consider children, finds the children for a given node.\n *\n * For example, for direct children, `levelDelta` would be 1. For all descendants,\n * `levelDelta` would be Infinity.\n */\n _findChildrenByLevel(levelAccessor, flattenedNodes, dataNode, levelDelta) {\n const key = this._getExpansionKey(dataNode);\n const startIndex = flattenedNodes.findIndex(node => this._getExpansionKey(node) === key);\n const dataNodeLevel = levelAccessor(dataNode);\n const expectedLevel = dataNodeLevel + levelDelta;\n const results = [];\n // Goes through flattened tree nodes in the `flattenedNodes` array, and get all\n // descendants within a certain level range.\n //\n // If we reach a node whose level is equal to or less than the level of the tree node,\n // we hit a sibling or parent's sibling, and should stop.\n for (let i = startIndex + 1; i < flattenedNodes.length; i++) {\n const currentLevel = levelAccessor(flattenedNodes[i]);\n if (currentLevel <= dataNodeLevel) {\n break;\n }\n if (currentLevel <= expectedLevel) {\n results.push(flattenedNodes[i]);\n }\n }\n return results;\n }\n /**\n * Adds the specified node component to the tree's internal registry.\n *\n * This primarily facilitates keyboard navigation.\n */\n _registerNode(node) {\n this._nodes.value.set(this._getExpansionKey(node.data), node);\n this._nodes.next(this._nodes.value);\n }\n /** Removes the specified node component from the tree's internal registry. */\n _unregisterNode(node) {\n this._nodes.value.delete(this._getExpansionKey(node.data));\n this._nodes.next(this._nodes.value);\n }\n /**\n * For the given node, determine the level where this node appears in the tree.\n *\n * This is intended to be used for `aria-level` but is 0-indexed.\n */\n _getLevel(node) {\n return this._levels.get(this._getExpansionKey(node));\n }\n /**\n * For the given node, determine the size of the parent's child set.\n *\n * This is intended to be used for `aria-setsize`.\n */\n _getSetSize(dataNode) {\n const set = this._getAriaSet(dataNode);\n return set.length;\n }\n /**\n * For the given node, determine the index (starting from 1) of the node in its parent's child set.\n *\n * This is intended to be used for `aria-posinset`.\n */\n _getPositionInSet(dataNode) {\n const set = this._getAriaSet(dataNode);\n const key = this._getExpansionKey(dataNode);\n return set.findIndex(node => this._getExpansionKey(node) === key) + 1;\n }\n /** Given a CdkTreeNode, gets the node that renders that node's parent's data. */\n _getNodeParent(node) {\n const parent = this._parents.get(this._getExpansionKey(node.data));\n return parent && this._nodes.value.get(this._getExpansionKey(parent));\n }\n /** Given a CdkTreeNode, gets the nodes that renders that node's child data. */\n _getNodeChildren(node) {\n return this._getDirectChildren(node.data).pipe(map(children => children.reduce((nodes, child) => {\n const value = this._nodes.value.get(this._getExpansionKey(child));\n if (value) {\n nodes.push(value);\n }\n return nodes;\n }, [])));\n }\n /** `keydown` event handler; this just passes the event to the `TreeKeyManager`. */\n _sendKeydownToKeyManager(event) {\n // Only handle events directly on the tree or directly on one of the nodes, otherwise\n // we risk interfering with events in the projected content (see #29828).\n if (event.target === this._elementRef.nativeElement) {\n this._keyManager.onKeydown(event);\n }\n else {\n const nodes = this._nodes.getValue();\n for (const [, node] of nodes) {\n if (event.target === node._elementRef.nativeElement) {\n this._keyManager.onKeydown(event);\n break;\n }\n }\n }\n }\n /** Gets all nested descendants of a given node. */\n _getDescendants(dataNode) {\n if (this.treeControl) {\n return of(this.treeControl.getDescendants(dataNode));\n }\n if (this.levelAccessor) {\n const results = this._findChildrenByLevel(this.levelAccessor, this._flattenedNodes.value, dataNode, Infinity);\n return of(results);\n }\n if (this.childrenAccessor) {\n return this._getAllChildrenRecursively(dataNode).pipe(reduce((allChildren, nextChildren) => {\n allChildren.push(...nextChildren);\n return allChildren;\n }, []));\n }\n throw getTreeControlMissingError();\n }\n /**\n * Gets all children and sub-children of the provided node.\n *\n * This will emit multiple times, in the order that the children will appear\n * in the tree, and can be combined with a `reduce` operator.\n */\n _getAllChildrenRecursively(dataNode) {\n if (!this.childrenAccessor) {\n return of([]);\n }\n return coerceObservable(this.childrenAccessor(dataNode)).pipe(take(1), switchMap(children => {\n // Here, we cache the parents of a particular child so that we can compute the levels.\n for (const child of children) {\n this._parents.set(this._getExpansionKey(child), dataNode);\n }\n return of(...children).pipe(concatMap(child => concat(of([child]), this._getAllChildrenRecursively(child))));\n }));\n }\n _getExpansionKey(dataNode) {\n // In the case that a key accessor function was not provided by the\n // tree user, we'll default to using the node object itself as the key.\n //\n // This cast is safe since:\n // - if an expansionKey is provided, TS will infer the type of K to be\n // the return type.\n // - if it's not, then K will be defaulted to T.\n return this.expansionKey?.(dataNode) ?? dataNode;\n }\n _getAriaSet(node) {\n const key = this._getExpansionKey(node);\n const parent = this._parents.get(key);\n const parentKey = parent ? this._getExpansionKey(parent) : null;\n const set = this._ariaSets.get(parentKey);\n return set ?? [node];\n }\n /**\n * Finds the parent for the given node. If this is a root node, this\n * returns null. If we're unable to determine the parent, for example,\n * if we don't have cached node data, this returns undefined.\n */\n _findParentForNode(node, index, cachedNodes) {\n // In all cases, we have a mapping from node to level; all we need to do here is backtrack in\n // our flattened list of nodes to determine the first node that's of a level lower than the\n // provided node.\n if (!cachedNodes.length) {\n return null;\n }\n const currentLevel = this._levels.get(this._getExpansionKey(node)) ?? 0;\n for (let parentIndex = index - 1; parentIndex >= 0; parentIndex--) {\n const parentNode = cachedNodes[parentIndex];\n const parentLevel = this._levels.get(this._getExpansionKey(parentNode)) ?? 0;\n if (parentLevel < currentLevel) {\n return parentNode;\n }\n }\n return null;\n }\n /**\n * Given a set of root nodes and the current node level, flattens any nested\n * nodes into a single array.\n *\n * If any nodes are not expanded, then their children will not be added into the array.\n * This will still traverse all nested children in order to build up our internal data\n * models, but will not include them in the returned array.\n */\n _flattenNestedNodesWithExpansion(nodes, level = 0) {\n const childrenAccessor = this._getChildrenAccessor();\n // If we're using a level accessor, we don't need to flatten anything.\n if (!childrenAccessor) {\n return of([...nodes]);\n }\n return of(...nodes).pipe(concatMap(node => {\n const parentKey = this._getExpansionKey(node);\n if (!this._parents.has(parentKey)) {\n this._parents.set(parentKey, null);\n }\n this._levels.set(parentKey, level);\n const children = coerceObservable(childrenAccessor(node));\n return concat(of([node]), children.pipe(take(1), tap(childNodes => {\n this._ariaSets.set(parentKey, [...(childNodes ?? [])]);\n for (const child of childNodes ?? []) {\n const childKey = this._getExpansionKey(child);\n this._parents.set(childKey, node);\n this._levels.set(childKey, level + 1);\n }\n }), switchMap(childNodes => {\n if (!childNodes) {\n return of([]);\n }\n return this._flattenNestedNodesWithExpansion(childNodes, level + 1).pipe(map(nestedNodes => (this.isExpanded(node) ? nestedNodes : [])));\n })));\n }), reduce((results, children) => {\n results.push(...children);\n return results;\n }, []));\n }\n /**\n * Converts children for certain tree configurations.\n *\n * This also computes parent, level, and group data.\n */\n _computeRenderingData(nodes, nodeType) {\n // The only situations where we have to convert children types is when\n // they're mismatched; i.e. if the tree is using a childrenAccessor and the\n // nodes are flat, or if the tree is using a levelAccessor and the nodes are\n // nested.\n if (this.childrenAccessor && nodeType === 'flat') {\n // This flattens children into a single array.\n this._ariaSets.set(null, [...nodes]);\n return this._flattenNestedNodesWithExpansion(nodes).pipe(map(flattenedNodes => ({\n renderNodes: flattenedNodes,\n flattenedNodes,\n })));\n }\n else if (this.levelAccessor && nodeType === 'nested') {\n // In the nested case, we only look for root nodes. The CdkNestedNode\n // itself will handle rendering each individual node's children.\n const levelAccessor = this.levelAccessor;\n return of(nodes.filter(node => levelAccessor(node) === 0)).pipe(map(rootNodes => ({\n renderNodes: rootNodes,\n flattenedNodes: nodes,\n })), tap(({ flattenedNodes }) => {\n this._calculateParents(flattenedNodes);\n }));\n }\n else if (nodeType === 'flat') {\n // In the case of a TreeControl, we know that the node type matches up\n // with the TreeControl, and so no conversions are necessary. Otherwise,\n // we've already confirmed that the data model matches up with the\n // desired node type here.\n return of({ renderNodes: nodes, flattenedNodes: nodes }).pipe(tap(({ flattenedNodes }) => {\n this._calculateParents(flattenedNodes);\n }));\n }\n else {\n // For nested nodes, we still need to perform the node flattening in order\n // to maintain our caches for various tree operations.\n this._ariaSets.set(null, [...nodes]);\n return this._flattenNestedNodesWithExpansion(nodes).pipe(map(flattenedNodes => ({\n renderNodes: nodes,\n flattenedNodes,\n })));\n }\n }\n _updateCachedData(flattenedNodes) {\n this._flattenedNodes.next(flattenedNodes);\n }\n _updateKeyManagerItems(flattenedNodes) {\n this._keyManagerNodes.next(flattenedNodes);\n }\n /** Traverse the flattened node data and compute parents, levels, and group data. */\n _calculateParents(flattenedNodes) {\n const levelAccessor = this._getLevelAccessor();\n if (!levelAccessor) {\n return;\n }\n this._parents.clear();\n this._ariaSets.clear();\n for (let index = 0; index < flattenedNodes.length; index++) {\n const dataNode = flattenedNodes[index];\n const key = this._getExpansionKey(dataNode);\n this._levels.set(key, levelAccessor(dataNode));\n const parent = this._findParentForNode(dataNode, index, flattenedNodes);\n this._parents.set(key, parent);\n const parentKey = parent ? this._getExpansionKey(parent) : null;\n const group = this._ariaSets.get(parentKey) ?? [];\n group.splice(index, 0, dataNode);\n this._ariaSets.set(parentKey, group);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTree, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkTree, isStandalone: true, selector: \"cdk-tree\", inputs: { dataSource: \"dataSource\", treeControl: \"treeControl\", levelAccessor: \"levelAccessor\", childrenAccessor: \"childrenAccessor\", trackBy: \"trackBy\", expansionKey: \"expansionKey\" }, host: { attributes: { \"role\": \"tree\" }, listeners: { \"keydown\": \"_sendKeydownToKeyManager($event)\" }, classAttribute: \"cdk-tree\" }, queries: [{ propertyName: \"_nodeDefs\", predicate: CdkTreeNodeDef, descendants: true }], viewQueries: [{ propertyName: \"_nodeOutlet\", first: true, predicate: CdkTreeNodeOutlet, descendants: true, static: true }], exportAs: [\"cdkTree\"], ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: \"directive\", type: CdkTreeNodeOutlet, selector: \"[cdkTreeNodeOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTree, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-tree',\n exportAs: 'cdkTree',\n template: ``,\n host: {\n 'class': 'cdk-tree',\n 'role': 'tree',\n '(keydown)': '_sendKeydownToKeyManager($event)',\n },\n encapsulation: ViewEncapsulation.None,\n // The \"OnPush\" status for the `CdkTree` component is effectively a noop, so we are removing it.\n // The view for `CdkTree` consists entirely of templates declared in other views. As they are\n // declared elsewhere, they are checked when their declaration points are checked.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n imports: [CdkTreeNodeOutlet],\n }]\n }], ctorParameters: () => [], propDecorators: { dataSource: [{\n type: Input\n }], treeControl: [{\n type: Input\n }], levelAccessor: [{\n type: Input\n }], childrenAccessor: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], expansionKey: [{\n type: Input\n }], _nodeOutlet: [{\n type: ViewChild,\n args: [CdkTreeNodeOutlet, { static: true }]\n }], _nodeDefs: [{\n type: ContentChildren,\n args: [CdkTreeNodeDef, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n/**\n * Tree node for CdkTree. It contains the data in the tree node.\n */\nclass CdkTreeNode {\n _elementRef = inject(ElementRef);\n _tree = inject(CdkTree);\n _tabindex = -1;\n _type = 'flat';\n /**\n * The role of the tree node.\n *\n * @deprecated This will be ignored; the tree will automatically determine the appropriate role\n * for tree node. This input will be removed in a future version.\n * @breaking-change 21.0.0\n */\n get role() {\n return 'treeitem';\n }\n set role(_role) {\n // ignore any role setting, we handle this internally.\n }\n /**\n * Whether or not this node is expandable.\n *\n * If not using `FlatTreeControl`, or if `isExpandable` is not provided to\n * `NestedTreeControl`, this should be provided for correct node a11y.\n */\n get isExpandable() {\n return this._isExpandable();\n }\n set isExpandable(isExpandable) {\n this._inputIsExpandable = isExpandable;\n if ((this.data && !this._isExpandable) || !this._inputIsExpandable) {\n return;\n }\n // If the node is being set to expandable, ensure that the status of the\n // node is propagated\n if (this._inputIsExpanded) {\n this.expand();\n }\n else if (this._inputIsExpanded === false) {\n this.collapse();\n }\n }\n get isExpanded() {\n return this._tree.isExpanded(this._data);\n }\n set isExpanded(isExpanded) {\n this._inputIsExpanded = isExpanded;\n if (isExpanded) {\n this.expand();\n }\n else {\n this.collapse();\n }\n }\n /**\n * Whether or not this node is disabled. If it's disabled, then the user won't be able to focus\n * or activate this node.\n */\n isDisabled;\n /**\n * The text used to locate this item during typeahead. If not specified, the `textContent` will\n * will be used.\n */\n typeaheadLabel;\n getLabel() {\n return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';\n }\n /** This emits when the node has been programatically activated or activated by keyboard. */\n activation = new EventEmitter();\n /** This emits when the node's expansion status has been changed. */\n expandedChange = new EventEmitter();\n /**\n * The most recently created `CdkTreeNode`. We save it in static variable so we can retrieve it\n * in `CdkTree` and set the data to it.\n */\n static mostRecentTreeNode = null;\n /** Subject that emits when the component has been destroyed. */\n _destroyed = new Subject();\n /** Emits when the node's data has changed. */\n _dataChanges = new Subject();\n _inputIsExpandable = false;\n _inputIsExpanded = undefined;\n /**\n * Flag used to determine whether or not we should be focusing the actual element based on\n * some user interaction (click or focus). On click, we don't forcibly focus the element\n * since the click could trigger some other component that wants to grab its own focus\n * (e.g. menu, dialog).\n */\n _shouldFocus = true;\n _parentNodeAriaLevel;\n /** The tree node's data. */\n get data() {\n return this._data;\n }\n set data(value) {\n if (value !== this._data) {\n this._data = value;\n this._dataChanges.next();\n }\n }\n _data;\n /* If leaf node, return true to not assign aria-expanded attribute */\n get isLeafNode() {\n // If flat tree node data returns false for expandable property, it's a leaf node\n if (this._tree.treeControl?.isExpandable !== undefined &&\n !this._tree.treeControl.isExpandable(this._data)) {\n return true;\n // If nested tree node data returns 0 descendants, it's a leaf node\n }\n else if (this._tree.treeControl?.isExpandable === undefined &&\n this._tree.treeControl?.getDescendants(this._data).length === 0) {\n return true;\n }\n return false;\n }\n get level() {\n // If the tree has a levelAccessor, use it to get the level. Otherwise read the\n // aria-level off the parent node and use it as the level for this node (note aria-level is\n // 1-indexed, while this property is 0-indexed, so we don't need to increment).\n return this._tree._getLevel(this._data) ?? this._parentNodeAriaLevel;\n }\n /** Determines if the tree node is expandable. */\n _isExpandable() {\n if (this._tree.treeControl) {\n if (this.isLeafNode) {\n return false;\n }\n // For compatibility with trees created using TreeControl before we added\n // CdkTreeNode#isExpandable.\n return true;\n }\n return this._inputIsExpandable;\n }\n /**\n * Determines the value for `aria-expanded`.\n *\n * For non-expandable nodes, this is `null`.\n */\n _getAriaExpanded() {\n if (!this._isExpandable()) {\n return null;\n }\n return String(this.isExpanded);\n }\n /**\n * Determines the size of this node's parent's child set.\n *\n * This is intended to be used for `aria-setsize`.\n */\n _getSetSize() {\n return this._tree._getSetSize(this._data);\n }\n /**\n * Determines the index (starting from 1) of this node in its parent's child set.\n *\n * This is intended to be used for `aria-posinset`.\n */\n _getPositionInSet() {\n return this._tree._getPositionInSet(this._data);\n }\n _changeDetectorRef = inject(ChangeDetectorRef);\n constructor() {\n CdkTreeNode.mostRecentTreeNode = this;\n }\n ngOnInit() {\n this._parentNodeAriaLevel = getParentNodeAriaLevel(this._elementRef.nativeElement);\n this._tree\n ._getExpansionModel()\n .changed.pipe(map(() => this.isExpanded), distinctUntilChanged())\n .subscribe(() => this._changeDetectorRef.markForCheck());\n this._tree._setNodeTypeIfUnset(this._type);\n this._tree._registerNode(this);\n }\n ngOnDestroy() {\n // If this is the last tree node being destroyed,\n // clear out the reference to avoid leaking memory.\n if (CdkTreeNode.mostRecentTreeNode === this) {\n CdkTreeNode.mostRecentTreeNode = null;\n }\n this._dataChanges.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n getParent() {\n return this._tree._getNodeParent(this) ?? null;\n }\n getChildren() {\n return this._tree._getNodeChildren(this);\n }\n /** Focuses this data node. Implemented for TreeKeyManagerItem. */\n focus() {\n this._tabindex = 0;\n if (this._shouldFocus) {\n this._elementRef.nativeElement.focus();\n }\n this._changeDetectorRef.markForCheck();\n }\n /** Defocus this data node. */\n unfocus() {\n this._tabindex = -1;\n this._changeDetectorRef.markForCheck();\n }\n /** Emits an activation event. Implemented for TreeKeyManagerItem. */\n activate() {\n if (this.isDisabled) {\n return;\n }\n this.activation.next(this._data);\n }\n /** Collapses this data node. Implemented for TreeKeyManagerItem. */\n collapse() {\n if (this.isExpandable) {\n this._tree.collapse(this._data);\n }\n }\n /** Expands this data node. Implemented for TreeKeyManagerItem. */\n expand() {\n if (this.isExpandable) {\n this._tree.expand(this._data);\n }\n }\n /** Makes the node focusable. Implemented for TreeKeyManagerItem. */\n makeFocusable() {\n this._tabindex = 0;\n this._changeDetectorRef.markForCheck();\n }\n _focusItem() {\n if (this.isDisabled) {\n return;\n }\n this._tree._keyManager.focusItem(this);\n }\n _setActiveItem() {\n if (this.isDisabled) {\n return;\n }\n this._shouldFocus = false;\n this._tree._keyManager.focusItem(this);\n this._shouldFocus = true;\n }\n _emitExpansionState(expanded) {\n this.expandedChange.emit(expanded);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNode, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkTreeNode, isStandalone: true, selector: \"cdk-tree-node\", inputs: { role: \"role\", isExpandable: [\"isExpandable\", \"isExpandable\", booleanAttribute], isExpanded: \"isExpanded\", isDisabled: [\"isDisabled\", \"isDisabled\", booleanAttribute], typeaheadLabel: [\"cdkTreeNodeTypeaheadLabel\", \"typeaheadLabel\"] }, outputs: { activation: \"activation\", expandedChange: \"expandedChange\" }, host: { attributes: { \"role\": \"treeitem\" }, listeners: { \"click\": \"_setActiveItem()\", \"focus\": \"_focusItem()\" }, properties: { \"attr.aria-expanded\": \"_getAriaExpanded()\", \"attr.aria-level\": \"level + 1\", \"attr.aria-posinset\": \"_getPositionInSet()\", \"attr.aria-setsize\": \"_getSetSize()\", \"tabindex\": \"_tabindex\" }, classAttribute: \"cdk-tree-node\" }, exportAs: [\"cdkTreeNode\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-tree-node',\n exportAs: 'cdkTreeNode',\n host: {\n 'class': 'cdk-tree-node',\n '[attr.aria-expanded]': '_getAriaExpanded()',\n '[attr.aria-level]': 'level + 1',\n '[attr.aria-posinset]': '_getPositionInSet()',\n '[attr.aria-setsize]': '_getSetSize()',\n '[tabindex]': '_tabindex',\n 'role': 'treeitem',\n '(click)': '_setActiveItem()',\n '(focus)': '_focusItem()',\n },\n }]\n }], ctorParameters: () => [], propDecorators: { role: [{\n type: Input\n }], isExpandable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], isExpanded: [{\n type: Input\n }], isDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], typeaheadLabel: [{\n type: Input,\n args: ['cdkTreeNodeTypeaheadLabel']\n }], activation: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }] } });\nfunction getParentNodeAriaLevel(nodeElement) {\n let parent = nodeElement.parentElement;\n while (parent && !isNodeElement(parent)) {\n parent = parent.parentElement;\n }\n if (!parent) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw Error('Incorrect tree structure containing detached node.');\n }\n else {\n return -1;\n }\n }\n else if (parent.classList.contains('cdk-nested-tree-node')) {\n return numberAttribute(parent.getAttribute('aria-level'));\n }\n else {\n // The ancestor element is the cdk-tree itself\n return 0;\n }\n}\nfunction isNodeElement(element) {\n const classList = element.classList;\n return !!(classList?.contains('cdk-nested-tree-node') || classList?.contains('cdk-tree'));\n}\n\n/**\n * Nested node is a child of ``. It works with nested tree.\n * By using `cdk-nested-tree-node` component in tree node template, children of the parent node will\n * be added in the `cdkTreeNodeOutlet` in tree node template.\n * The children of node will be automatically added to `cdkTreeNodeOutlet`.\n */\nclass CdkNestedTreeNode extends CdkTreeNode {\n _type = 'nested';\n _differs = inject(IterableDiffers);\n /** Differ used to find the changes in the data provided by the data source. */\n _dataDiffer;\n /** The children data dataNodes of current node. They will be placed in `CdkTreeNodeOutlet`. */\n _children;\n /** The children node placeholder. */\n nodeOutlet;\n constructor() {\n super();\n }\n ngAfterContentInit() {\n this._dataDiffer = this._differs.find([]).create(this._tree.trackBy);\n this._tree\n ._getDirectChildren(this.data)\n .pipe(takeUntil(this._destroyed))\n .subscribe(result => this.updateChildrenNodes(result));\n this.nodeOutlet.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateChildrenNodes());\n }\n ngOnDestroy() {\n this._clear();\n super.ngOnDestroy();\n }\n /** Add children dataNodes to the NodeOutlet */\n updateChildrenNodes(children) {\n const outlet = this._getNodeOutlet();\n if (children) {\n this._children = children;\n }\n if (outlet && this._children) {\n const viewContainer = outlet.viewContainer;\n this._tree.renderNodeChanges(this._children, this._dataDiffer, viewContainer, this._data);\n }\n else {\n // Reset the data differ if there's no children nodes displayed\n this._dataDiffer.diff([]);\n }\n }\n /** Clear the children dataNodes. */\n _clear() {\n const outlet = this._getNodeOutlet();\n if (outlet) {\n outlet.viewContainer.clear();\n this._dataDiffer.diff([]);\n }\n }\n /** Gets the outlet for the current node. */\n _getNodeOutlet() {\n const outlets = this.nodeOutlet;\n // Note that since we use `descendants: true` on the query, we have to ensure\n // that we don't pick up the outlet of a child node by accident.\n return outlets && outlets.find(outlet => !outlet._node || outlet._node === this);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkNestedTreeNode, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.0\", type: CdkNestedTreeNode, isStandalone: true, selector: \"cdk-nested-tree-node\", host: { classAttribute: \"cdk-nested-tree-node\" }, providers: [\n { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },\n ], queries: [{ propertyName: \"nodeOutlet\", predicate: CdkTreeNodeOutlet, descendants: true }], exportAs: [\"cdkNestedTreeNode\"], usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkNestedTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-nested-tree-node',\n exportAs: 'cdkNestedTreeNode',\n providers: [\n { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },\n ],\n host: {\n 'class': 'cdk-nested-tree-node',\n },\n }]\n }], ctorParameters: () => [], propDecorators: { nodeOutlet: [{\n type: ContentChildren,\n args: [CdkTreeNodeOutlet, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * Indent for the children tree dataNodes.\n * This directive will add left-padding to the node to show hierarchy.\n */\nclass CdkTreeNodePadding {\n _treeNode = inject(CdkTreeNode);\n _tree = inject(CdkTree);\n _element = inject(ElementRef);\n _dir = inject(Directionality, { optional: true });\n /** Current padding value applied to the element. Used to avoid unnecessarily hitting the DOM. */\n _currentPadding;\n /** Subject that emits when the component has been destroyed. */\n _destroyed = new Subject();\n /** CSS units used for the indentation value. */\n indentUnits = 'px';\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n get level() {\n return this._level;\n }\n set level(value) {\n this._setLevelInput(value);\n }\n _level;\n /**\n * The indent for each level. Can be a number or a CSS string.\n * Default number 40px from material design menu sub-menu spec.\n */\n get indent() {\n return this._indent;\n }\n set indent(indent) {\n this._setIndentInput(indent);\n }\n _indent = 40;\n constructor() {\n this._setPadding();\n this._dir?.change.pipe(takeUntil(this._destroyed)).subscribe(() => this._setPadding(true));\n // In Ivy the indentation binding might be set before the tree node's data has been added,\n // which means that we'll miss the first render. We have to subscribe to changes in the\n // data to ensure that everything is up to date.\n this._treeNode._dataChanges.subscribe(() => this._setPadding());\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** The padding indent value for the tree node. Returns a string with px numbers if not null. */\n _paddingIndent() {\n const nodeLevel = (this._treeNode.data && this._tree._getLevel(this._treeNode.data)) ?? null;\n const level = this._level == null ? nodeLevel : this._level;\n return typeof level === 'number' ? `${level * this._indent}${this.indentUnits}` : null;\n }\n _setPadding(forceChange = false) {\n const padding = this._paddingIndent();\n if (padding !== this._currentPadding || forceChange) {\n const element = this._element.nativeElement;\n const paddingProp = this._dir && this._dir.value === 'rtl' ? 'paddingRight' : 'paddingLeft';\n const resetProp = paddingProp === 'paddingLeft' ? 'paddingRight' : 'paddingLeft';\n element.style[paddingProp] = padding || '';\n element.style[resetProp] = '';\n this._currentPadding = padding;\n }\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setLevelInput(value) {\n // Set to null as the fallback value so that _setPadding can fall back to the node level if the\n // consumer set the directive as `cdkTreeNodePadding=\"\"`. We still want to take this value if\n // they set 0 explicitly.\n this._level = isNaN(value) ? null : value;\n this._setPadding();\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setIndentInput(indent) {\n let value = indent;\n let units = 'px';\n if (typeof indent === 'string') {\n const parts = indent.split(cssUnitPattern);\n value = parts[0];\n units = parts[1] || units;\n }\n this.indentUnits = units;\n this._indent = numberAttribute(value);\n this._setPadding();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodePadding, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkTreeNodePadding, isStandalone: true, selector: \"[cdkTreeNodePadding]\", inputs: { level: [\"cdkTreeNodePadding\", \"level\", numberAttribute], indent: [\"cdkTreeNodePaddingIndent\", \"indent\"] }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodePadding, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodePadding]',\n }]\n }], ctorParameters: () => [], propDecorators: { level: [{\n type: Input,\n args: [{ alias: 'cdkTreeNodePadding', transform: numberAttribute }]\n }], indent: [{\n type: Input,\n args: ['cdkTreeNodePaddingIndent']\n }] } });\n\n/**\n * Node toggle to expand and collapse the node.\n */\nclass CdkTreeNodeToggle {\n _tree = inject(CdkTree);\n _treeNode = inject(CdkTreeNode);\n /** Whether expand/collapse the node recursively. */\n recursive = false;\n constructor() { }\n // Toggle the expanded or collapsed state of this node.\n //\n // Focus this node with expanding or collapsing it. This ensures that the active node will always\n // be visible when expanding and collapsing.\n _toggle() {\n this.recursive\n ? this._tree.toggleDescendants(this._treeNode.data)\n : this._tree.toggle(this._treeNode.data);\n this._tree._keyManager.focusItem(this._treeNode);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodeToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.0\", type: CdkTreeNodeToggle, isStandalone: true, selector: \"[cdkTreeNodeToggle]\", inputs: { recursive: [\"cdkTreeNodeToggleRecursive\", \"recursive\", booleanAttribute] }, host: { attributes: { \"tabindex\": \"-1\" }, listeners: { \"click\": \"_toggle(); $event.stopPropagation();\", \"keydown.Enter\": \"_toggle(); $event.preventDefault();\", \"keydown.Space\": \"_toggle(); $event.preventDefault();\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeNodeToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeToggle]',\n host: {\n '(click)': '_toggle(); $event.stopPropagation();',\n '(keydown.Enter)': '_toggle(); $event.preventDefault();',\n '(keydown.Space)': '_toggle(); $event.preventDefault();',\n 'tabindex': '-1',\n },\n }]\n }], ctorParameters: () => [], propDecorators: { recursive: [{\n type: Input,\n args: [{ alias: 'cdkTreeNodeToggleRecursive', transform: booleanAttribute }]\n }] } });\n\nconst EXPORTED_DECLARATIONS = [\n CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet,\n];\nclass CdkTreeModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeModule, imports: [CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet], exports: [CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.0\", ngImport: i0, type: CdkTreeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: EXPORTED_DECLARATIONS,\n exports: EXPORTED_DECLARATIONS,\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseTreeControl, CDK_TREE_NODE_OUTLET_NODE, CdkNestedTreeNode, CdkTree, CdkTreeModule, CdkTreeNode, CdkTreeNodeDef, CdkTreeNodeOutlet, CdkTreeNodeOutletContext, CdkTreeNodePadding, CdkTreeNodeToggle, FlatTreeControl, NestedTreeControl, getMultipleTreeControlsError, getTreeControlMissingError, getTreeMissingMatchingNodeDefError, getTreeMultipleDefaultNodeDefsError, getTreeNoValidDataSourceError };\n","/**\n * @license Angular v19.0.4\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, inject, Optional, Inject, ɵɵinject, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵstringify, Directive, Input, createNgModule, NgModuleRef, ɵRuntimeError, Host, Attribute, RendererStyleFlags2, untracked, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable, PLATFORM_ID, ɵformatRuntimeError, ɵIMAGE_CONFIG, Renderer2, ElementRef, Injector, ɵperformanceMarkFeature, NgZone, ApplicationRef, ChangeDetectorRef, numberAttribute, booleanAttribute, ɵIMAGE_CONFIG_DEFAULTS, ɵunwrapSafeValue } from '@angular/core';\nexport { ɵIMAGE_CONFIG as IMAGE_CONFIG } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setRootDomAdapter(adapter) {\n _DOM ??= adapter;\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * This class wraps the platform Navigation API which allows server-specific and test\n * implementations.\n */\nclass PlatformNavigation {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PlatformNavigation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PlatformNavigation, providedIn: 'platform', useFactory: () => window.navigation });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PlatformNavigation, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform', useFactory: () => window.navigation }]\n }] });\n\n/**\n * A DI Token representing the main rendering context.\n * In a browser and SSR this is the DOM Document.\n * When using SSR, that document is created by [Domino](https://github.com/angular/domino).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken(ngDevMode ? 'DocumentToken' : '');\n\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error(ngDevMode ? 'Not implemented' : '');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: () => inject(BrowserPlatformLocation) });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform', useFactory: () => inject(BrowserPlatformLocation) }]\n }] });\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken(ngDevMode ? 'Location Initialized' : '');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * @publicApi\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n _location;\n _history;\n _doc = inject(DOCUMENT);\n constructor() {\n super();\n this._location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this._location.href;\n }\n get protocol() {\n return this._location.protocol;\n }\n get hostname() {\n return this._location.hostname;\n }\n get port() {\n return this._location.port;\n }\n get pathname() {\n return this._location.pathname;\n }\n get search() {\n return this._location.search;\n }\n get hash() {\n return this._location.hash;\n }\n set pathname(newPath) {\n this._location.pathname = newPath;\n }\n pushState(state, title, url) {\n this._history.pushState(state, title, url);\n }\n replaceState(state, title, url) {\n this._history.replaceState(state, title, url);\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserPlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: () => new BrowserPlatformLocation() });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n useFactory: () => new BrowserPlatformLocation(),\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = (match && match.index) || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com/#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error(ngDevMode ? 'Not implemented' : '');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }]\n }] });\n/**\n * A predefined DI token for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```ts\n * import {NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken(ngDevMode ? 'appBaseHref' : '');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you may provide a {@link APP_BASE_HREF}\n * or add a `` element to the document to override the default.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n _platformLocation;\n _baseHref;\n _removeListenerFns = [];\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref =\n href ??\n this._platformLocation.getBaseHrefFromDOM() ??\n inject(DOCUMENT).location?.origin ??\n '';\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }] });\n\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n _platformLocation;\n _baseHref = '';\n _removeListenerFns = [];\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n const path = this._platformLocation.hash ?? '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? '#' + url : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HashLocationStrategy });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }] });\n\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass Location {\n /** @internal */\n _subject = new Subject();\n /** @internal */\n _basePath;\n /** @internal */\n _locationStrategy;\n /** @internal */\n _urlChangeListeners = [];\n /** @internal */\n _urlChangeSubscription = null;\n constructor(locationStrategy) {\n this._locationStrategy = locationStrategy;\n const baseHref = this._locationStrategy.getBaseHref();\n // Note: This class's interaction with base HREF does not fully follow the rules\n // outlined in the spec https://www.freesoft.org/CIE/RFC/1808/18.htm.\n // Instead of trying to fix individual bugs with more and more code, we should\n // investigate using the URL constructor and providing the base as a second\n // argument.\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#parameters\n this._basePath = _stripOrigin(stripTrailingSlash(_stripIndexHtml(baseHref)));\n this._locationStrategy.onPopState((ev) => {\n this._subject.next({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeListeners = [];\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._locationStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._locationStrategy.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBasePath(this._basePath, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._locationStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._locationStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._locationStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._locationStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._locationStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n this._locationStrategy.historyGo?.(relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n * @returns A function that, when executed, unregisters a URL change listener.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n this._urlChangeSubscription ??= this.subscribe((v) => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n return () => {\n const fnIndex = this._urlChangeListeners.indexOf(fn);\n this._urlChangeListeners.splice(fnIndex, 1);\n if (this._urlChangeListeners.length === 0) {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeSubscription = null;\n }\n };\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach((fn) => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({\n next: onNext,\n error: onThrow ?? undefined,\n complete: onReturn ?? undefined,\n });\n }\n /**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\n static normalizeQueryParams = normalizeQueryParams;\n /**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\n static joinWithSlash = joinWithSlash;\n /**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\n static stripTrailingSlash = stripTrailingSlash;\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: () => [{ type: LocationStrategy }] });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy));\n}\nfunction _stripBasePath(basePath, url) {\n if (!basePath || !url.startsWith(basePath)) {\n return url;\n }\n const strippedUrl = url.substring(basePath.length);\n if (strippedUrl === '' || ['/', ';', '?', '#'].includes(strippedUrl[0])) {\n return strippedUrl;\n }\n return url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\nfunction _stripOrigin(baseHref) {\n // DO NOT REFACTOR! Previously, this check looked like this:\n // `/^(https?:)?\\/\\//.test(baseHref)`, but that resulted in\n // syntactically incorrect code after Closure Compiler minification.\n // This was likely caused by a bug in Closure Compiler, but\n // for now, the check is rewritten to use `new RegExp` instead.\n const isAbsoluteUrl = new RegExp('^(https?:)?//').test(baseHref);\n if (isAbsoluteUrl) {\n const [, pathname] = baseHref.split(/\\/\\/[^\\/]+/);\n return pathname;\n }\n return baseHref;\n}\n\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, undefined, 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLE\": [undefined, undefined, 2], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * Format styles that can be used to represent numbers.\n * @see {@link getLocaleNumberFormat}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated `getLocaleNumberFormat` is deprecated\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see {@link NgPlural}\n * @see {@link NgPluralCase}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated `getLocalePluralCase` is deprecated\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated locale data getters are deprecated\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n *\n * @deprecated locale data getters are deprecated\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see {@link getLocaleDateFormat}\n * @see {@link getLocaleTimeFormat}\n * @see {@link getLocaleDateTimeFormat}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n * @publicApi\n *\n * @deprecated Date locale data getters are deprecated\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, `'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n// This needs to be an object literal, rather than an enum, because TypeScript 5.4+\n// doesn't allow numeric keys and we have `Infinity` and `NaN`.\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see {@link getLocaleNumberSymbol}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated `getLocaleNumberSymbol` is deprecated\n *\n * @object-literal-as-enum\n */\nconst NumberSymbol = {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n Decimal: 0,\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n Group: 1,\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n List: 2,\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n PercentSign: 3,\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n PlusSign: 4,\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n MinusSign: 5,\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n Exponential: 6,\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n SuperscriptingExponent: 7,\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n PerMille: 8,\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n Infinity: 9,\n /**\n * Not a number.\n * Example: NaN\n */\n NaN: 10,\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n TimeSeparator: 11,\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n CurrencyDecimal: 12,\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n CurrencyGroup: 13,\n};\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n *\n * @deprecated Week locale getters are deprecated\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * This function serves no purpose when relying on the `Intl` API.\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.DateTimeFormat` for date formating instead.\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat],\n data[ɵLocaleDataIndex.DayPeriodsStandalone],\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.DateTimeFormat` for date formating instead.\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [\n data[ɵLocaleDataIndex.DaysFormat],\n data[ɵLocaleDataIndex.DaysStandalone],\n ];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.DateTimeFormat` for date formating instead.\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [\n data[ɵLocaleDataIndex.MonthsFormat],\n data[ɵLocaleDataIndex.MonthsStandalone],\n ];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.DateTimeFormat` for date formating instead.\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Intl's [`getWeekInfo`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getWeekInfo) has partial support (Chromium M99 & Safari 17).\n * You may want to rely on the following alternatives:\n * - Libraries like [`Luxon`](https://moment.github.io/luxon/#/) rely on `Intl` but fallback on the ISO 8601 definition (monday) if `getWeekInfo` is not supported.\n * - Other librairies like [`date-fns`](https://date-fns.org/), [`day.js`](https://day.js.org/en/) or [`weekstart`](https://www.npmjs.com/package/weekstart) library provide their own locale based data for the first day of the week.\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Intl's [`getWeekInfo`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getWeekInfo) has partial support (Chromium M99 & Safari 17).\n * Libraries like [`Luxon`](https://moment.github.io/luxon/#/) rely on `Intl` but fallback on the ISO 8601 definition (Saturday+Sunday) if `getWeekInfo` is not supported .\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.DateTimeFormat` for date formating instead.\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n\n * @publicApi\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.DateTimeFormat` for date formating instead.\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.DateTimeFormat` for date formating instead.\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize. Must be one of `NumberSymbol`.\n * @returns The character for the localized symbol.\n * @see {@link NumberSymbol}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.NumberFormat` to format numbers instead.\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see {@link NumberFormatStyle}\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Let `Intl.NumberFormat` determine the number format instead\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Use the `Intl` API to format a currency with from currency code\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Use the `Intl` API to format a currency with from currency code\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n *\n * @deprecated We recommend you create a map of locale to ISO 4217 currency codes.\n * Time relative currency data is provided by the CLDR project. See https://www.unicode.org/cldr/charts/44/supplemental/detailed_territory_currency_information.html\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Use `Intl.PluralRules` instead\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex.LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n/format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see {@link getLocaleExtraDayPeriods}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * Let `Intl.DateTimeFormat` determine the day period instead.\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ɵExtraLocaleDataIndex.ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n/format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see {@link getLocaleExtraDayPeriodRules}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * To extract a day period use `Intl.DateTimeFormat` with the `dayPeriod` option instead.\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ɵExtraLocaleDataIndex.ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone */],\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * For dates and numbers, let `Intl.DateTimeFormat()` and `Intl.NumberFormat()` determine the writing direction.\n * The `Intl` alternative [`getTextInfo`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getTextInfo).\n * has only partial support (Chromium M99 & Safari 17).\n * 3rd party alternatives like [`rtl-detect`](https://www.npmjs.com/package/rtl-detect) can work around this issue.\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * You can use `Intl.NumberFormat().formatToParts()` to extract the currency symbol.\n * For example: `Intl.NumberFormat('en', {style:'currency', currency: 'USD'}).formatToParts().find(part => part.type === 'currency').value`\n * returns `$` for USD currency code in the `en` locale.\n * Note: `US$` is a currency symbol for the `en-ca` locale but not the `en-us` locale.\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* ɵCurrencyIndex.SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* ɵCurrencyIndex.Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n *\n * @deprecated Angular recommends relying on the `Intl` API for i18n.\n * This function should not be used anymore. Let `Intl.NumberFormat` determine the number of digits to display for the currency\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* ɵCurrencyIndex.NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\nconst ISO8601_DATE_REGEX = /^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`).\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see {@link DatePipe}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach((value) => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter\n ? dateFormatter(date, locale, dateTimezoneOffset)\n : value === \"''\"\n ? \"'\"\n : value.replace(/(^'|'$)/g, '').replace(/''/g, \"'\");\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] ??= {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [\n shortTime,\n shortDate,\n ]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [\n mediumTime,\n mediumDate,\n ]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [\n longTime,\n longDate,\n ]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [\n fullTime,\n fullDate,\n ]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return opt_values != null && key in opt_values ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.slice(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substring(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex((rule) => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = currentHours < to.hours || (currentHours === to.hours && currentMinutes < to.minutes);\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else {\n // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0 ? '+' : '') +\n padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign));\n case ZoneWidth.ShortGMT:\n return 'GMT' + (zone >= 0 ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return ('GMT' +\n (zone >= 0 ? '+' : '') +\n padNumber(hours, 2, minusSign) +\n ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign));\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0 ? '+' : '') +\n padNumber(hours, 2, minusSign) +\n ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign));\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + (firstDayOfYear <= THURSDAY ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\n/**\n * ISO Week starts on day 1 (Monday) and ends with day 0 (Sunday)\n */\nfunction getThursdayThisIsoWeek(datetime) {\n // getDay returns 0-6 range with sunday as 0.\n const currentDay = datetime.getDay();\n // On a Sunday, read the previous Thursday since ISO weeks start on Monday.\n const deltaToThursday = currentDay === 0 ? -3 : THURSDAY - currentDay;\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + deltaToThursday);\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisIsoWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisIsoWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if ((match = value.match(ISO8601_DATE_REGEX))) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every((d) => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see {@link formatNumber}\n * @see {@link DecimalPipe}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return (res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is suppressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim());\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see {@link formatNumber}\n * @see {@link DecimalPipe}\n * @see [Internationalization (i18n) Guide](guide/i18n)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](guide/i18n)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0,\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1\n ? positive.split(DECIMAL_SEP)\n : [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1),\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substring(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = groups[2] || groups[1] ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substring(0, pos).replace(/'/g, '');\n p.negSuf = negative.slice(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) {\n /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, (roundAt = fractionSize + 1));\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @publicApi\n */\nclass NgLocalization {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\n }] });\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n locale;\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgLocaleLocalization });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }] });\n\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n/format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\nconst WS_REGEXP = /\\s+/;\nconst EMPTY_ARRAY = [];\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```html\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n _ngEl;\n _renderer;\n initialClasses = EMPTY_ARRAY;\n rawClass;\n stateMap = new Map();\n constructor(_ngEl, _renderer) {\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n }\n set klass(value) {\n this.initialClasses = value != null ? value.trim().split(WS_REGEXP) : EMPTY_ARRAY;\n }\n set ngClass(value) {\n this.rawClass = typeof value === 'string' ? value.trim().split(WS_REGEXP) : value;\n }\n /*\n The NgClass directive uses the custom change detection algorithm for its inputs. The custom\n algorithm is necessary since inputs are represented as complex object or arrays that need to be\n deeply-compared.\n \n This algorithm is perf-sensitive since NgClass is used very frequently and its poor performance\n might negatively impact runtime performance of the entire change detection cycle. The design of\n this algorithm is making sure that:\n - there is no unnecessary DOM manipulation (CSS classes are added / removed from the DOM only when\n needed), even if references to bound objects change;\n - there is no memory allocation if nothing changes (even relatively modest memory allocation\n during the change detection cycle can result in GC pauses for some of the CD cycles).\n \n The algorithm works by iterating over the set of bound classes, staring with [class] binding and\n then going over [ngClass] binding. For each CSS class name:\n - check if it was seen before (this information is tracked in the state map) and if its value\n changed;\n - mark it as \"touched\" - names that are not marked are not present in the latest set of binding\n and we can remove such class name from the internal data structures;\n \n After iteration over all the CSS class names we've got data structure with all the information\n necessary to synchronize changes to the DOM - it is enough to iterate over the state map, flush\n changes to the DOM and reset internal data structures so those are ready for the next change\n detection cycle.\n */\n ngDoCheck() {\n // classes from the [class] binding\n for (const klass of this.initialClasses) {\n this._updateState(klass, true);\n }\n // classes from the [ngClass] binding\n const rawClass = this.rawClass;\n if (Array.isArray(rawClass) || rawClass instanceof Set) {\n for (const klass of rawClass) {\n this._updateState(klass, true);\n }\n }\n else if (rawClass != null) {\n for (const klass of Object.keys(rawClass)) {\n this._updateState(klass, Boolean(rawClass[klass]));\n }\n }\n this._applyStateDiff();\n }\n _updateState(klass, nextEnabled) {\n const state = this.stateMap.get(klass);\n if (state !== undefined) {\n if (state.enabled !== nextEnabled) {\n state.changed = true;\n state.enabled = nextEnabled;\n }\n state.touched = true;\n }\n else {\n this.stateMap.set(klass, { enabled: nextEnabled, changed: true, touched: true });\n }\n }\n _applyStateDiff() {\n for (const stateEntry of this.stateMap) {\n const klass = stateEntry[0];\n const state = stateEntry[1];\n if (state.changed) {\n this._toggleClass(klass, state.enabled);\n state.changed = false;\n }\n else if (!state.touched) {\n // A class that was previously active got removed from the new collection of classes -\n // remove from the DOM as well.\n if (state.enabled) {\n this._toggleClass(klass, false);\n }\n this.stateMap.delete(klass);\n }\n state.touched = false;\n }\n }\n _toggleClass(klass, enabled) {\n if (ngDevMode) {\n if (typeof klass !== 'string') {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(klass)}`);\n }\n }\n klass = klass.trim();\n if (klass.length > 0) {\n klass.split(WS_REGEXP).forEach((klass) => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgClass, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgClass, isStandalone: true, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngClass]',\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInputs`: Optional component inputs object, which will be bind to the\n * component.\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional\n * NgModule factory to allow loading another module dynamically, then loading a component from that\n * module. Use `ngComponentOutletNgModule` instead.\n *\n * ### Syntax\n *\n * Simple\n * ```html\n * \n * ```\n *\n * With inputs\n * ```html\n * \n * \n * ```\n *\n * Customized injector/content\n * ```html\n * \n * \n * ```\n *\n * Customized NgModule reference\n * ```html\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n _viewContainerRef;\n ngComponentOutlet = null;\n ngComponentOutletInputs;\n ngComponentOutletInjector;\n ngComponentOutletContent;\n ngComponentOutletNgModule;\n /**\n * @deprecated This input is deprecated, use `ngComponentOutletNgModule` instead.\n */\n ngComponentOutletNgModuleFactory;\n _componentRef;\n _moduleRef;\n /**\n * A helper data structure that allows us to track inputs that were part of the\n * ngComponentOutletInputs expression. Tracking inputs is necessary for proper removal of ones\n * that are no longer referenced.\n */\n _inputsUsed = new Map();\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n }\n _needToReCreateNgModuleInstance(changes) {\n // Note: square brackets property accessor is safe for Closure compiler optimizations (the\n // `changes` argument of the `ngOnChanges` lifecycle hook retains the names of the fields that\n // were changed).\n return (changes['ngComponentOutletNgModule'] !== undefined ||\n changes['ngComponentOutletNgModuleFactory'] !== undefined);\n }\n _needToReCreateComponentInstance(changes) {\n // Note: square brackets property accessor is safe for Closure compiler optimizations (the\n // `changes` argument of the `ngOnChanges` lifecycle hook retains the names of the fields that\n // were changed).\n return (changes['ngComponentOutlet'] !== undefined ||\n changes['ngComponentOutletContent'] !== undefined ||\n changes['ngComponentOutletInjector'] !== undefined ||\n this._needToReCreateNgModuleInstance(changes));\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this._needToReCreateComponentInstance(changes)) {\n this._viewContainerRef.clear();\n this._inputsUsed.clear();\n this._componentRef = undefined;\n if (this.ngComponentOutlet) {\n const injector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (this._needToReCreateNgModuleInstance(changes)) {\n this._moduleRef?.destroy();\n if (this.ngComponentOutletNgModule) {\n this._moduleRef = createNgModule(this.ngComponentOutletNgModule, getParentInjector(injector));\n }\n else if (this.ngComponentOutletNgModuleFactory) {\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(getParentInjector(injector));\n }\n else {\n this._moduleRef = undefined;\n }\n }\n this._componentRef = this._viewContainerRef.createComponent(this.ngComponentOutlet, {\n injector,\n ngModuleRef: this._moduleRef,\n projectableNodes: this.ngComponentOutletContent,\n });\n }\n }\n }\n /** @nodoc */\n ngDoCheck() {\n if (this._componentRef) {\n if (this.ngComponentOutletInputs) {\n for (const inputName of Object.keys(this.ngComponentOutletInputs)) {\n this._inputsUsed.set(inputName, true);\n }\n }\n this._applyInputStateDiff(this._componentRef);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n this._moduleRef?.destroy();\n }\n _applyInputStateDiff(componentRef) {\n for (const [inputName, touched] of this._inputsUsed) {\n if (!touched) {\n // The input that was previously active no longer exists and needs to be set to undefined.\n componentRef.setInput(inputName, undefined);\n this._inputsUsed.delete(inputName);\n }\n else {\n // Since touched is true, it can be asserted that the inputs object is not empty.\n componentRef.setInput(inputName, this.ngComponentOutletInputs[inputName]);\n this._inputsUsed.set(inputName, false);\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgComponentOutlet, isStandalone: true, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInputs: \"ngComponentOutletInputs\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModule: \"ngComponentOutletNgModule\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngComponentOutlet]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInputs: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModule: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n// Helper function that returns an Injector instance of a parent NgModule.\nfunction getParentInjector(injector) {\n const parentNgModule = injector.get(NgModuleRef);\n return parentNgModule.injector;\n}\n\n/**\n * @publicApi\n */\nclass NgForOfContext {\n $implicit;\n ngForOf;\n index;\n count;\n constructor(\n /** Reference to the current item from the collection. */\n $implicit, \n /**\n * The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe\n * (`userStreams | async`).\n */\n ngForOf, \n /** Returns an index of the current item in the collection. */\n index, \n /** Returns total amount of items in the collection. */\n count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n // Indicates whether this is the first item in the collection.\n get first() {\n return this.index === 0;\n }\n // Indicates whether this is the last item in the collection.\n get last() {\n return this.index === this.count - 1;\n }\n // Indicates whether an index of this item in the collection is even.\n get even() {\n return this.index % 2 === 0;\n }\n // Indicates whether an index of this item in the collection is odd.\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/directives/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/directives/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```html\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```html\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/directives/structural-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For further discussion, see\n * [Structural Directives](guide/directives/structural-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```html\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/animations/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/directives/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n _viewContainer;\n _template;\n _differs;\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/directives/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see {@link TrackByFunction}\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n _ngForOf = null;\n _ngForOfDirty = true;\n _differ = null;\n // TODO(issue/24571): remove '!'\n // waiting for microsoft/typescript#43662 to allow the return type `TrackByFunction|undefined` for\n // the getter\n _trackByFn;\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/templates/variables#template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @nodoc\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch {\n let errorMessage = `Cannot find a differ supporting object '${value}' of type '` +\n `${getTypeName(value)}'. NgFor only supports binding to Iterables, such as Arrays.`;\n if (typeof value === 'object') {\n errorMessage += ' Did you mean to use the keyvalue pipe?';\n }\n throw new ɵRuntimeError(-2200 /* RuntimeErrorCode.NG_FOR_MISSING_DIFFER */, errorMessage);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const viewContainer = this._viewContainer;\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgForOf, isStandalone: true, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngFor][ngForOf]',\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }], propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/directives/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```html\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```html\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```html\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```html\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```html\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```html\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```html\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](guide/directives/structural-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n _viewContainer;\n _context = new NgIfContext();\n _thenTemplateRef = null;\n _elseTemplateRef = null;\n _thenViewRef = null;\n _elseViewRef = null;\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef = this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef = this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /** @internal */\n static ngIfUseIfTypeGuard;\n /**\n * Assert the correct type of the expression bound to the `ngIf` input within the template.\n *\n * The presence of this static field is a signal to the Ivy template type check compiler that\n * when the `NgIf` structural directive renders its template, the type of the expression bound\n * to `ngIf` should be narrowed in some way. For `NgIf`, the binding expression itself is used to\n * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgIf`.\n */\n static ngTemplateGuard_ngIf;\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgIf, isStandalone: true, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngIf]',\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }], propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n $implicit = null;\n ngIf = null;\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\nclass SwitchView {\n _viewContainerRef;\n _templateRef;\n _created = false;\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```html\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```html\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```html\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```html\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see {@link NgSwitchCase}\n * @see {@link NgSwitchDefault}\n * @see [Structural Directives](guide/directives/structural-directives)\n *\n */\nclass NgSwitch {\n _defaultViews = [];\n _defaultUsed = false;\n _caseCount = 0;\n _lastCaseCheckIndex = 0;\n _lastCasesMatched = false;\n _ngSwitch;\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value === this._ngSwitch;\n this._lastCasesMatched ||= matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews.length > 0 && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (const defaultView of this._defaultViews) {\n defaultView.enforceState(useDefault);\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgSwitch, isStandalone: true, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitch]',\n }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```html\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * As of Angular v17 the NgSwitch directive uses strict equality comparison (`===`) instead of\n * loose equality (`==`) to match different cases.\n *\n * @publicApi\n * @see {@link NgSwitch}\n * @see {@link NgSwitchDefault}\n *\n */\nclass NgSwitchCase {\n ngSwitch;\n _view;\n /**\n * Stores the HTML template to be selected on match.\n */\n ngSwitchCase;\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgSwitchCase, isStandalone: true, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchCase]',\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }], propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see {@link NgSwitch}\n * @see {@link NgSwitchCase}\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgSwitchDefault, isStandalone: true, selector: \"[ngSwitchDefault]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchDefault]',\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }] });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\nfunction stringifyValue(value) {\n return typeof value === 'string' ? `'${value}'` : String(value);\n}\n\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```html\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n _localization;\n _activeView;\n _caseViews = {};\n constructor(_localization) {\n this._localization = _localization;\n }\n set ngPlural(value) {\n this._updateView(value);\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView(switchValue) {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgPlural, isStandalone: true, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPlural]',\n }]\n }], ctorParameters: () => [{ type: NgLocalization }], propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```html\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n value;\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgPluralCase, isStandalone: true, selector: \"[ngPluralCase]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPluralCase]',\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }] });\n\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```html\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```html\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```html\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n _ngEl;\n _differs;\n _renderer;\n _ngStyle = null;\n _differ = null;\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n const flags = name.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, unit ? `${value}${unit}` : value, flags);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name, flags);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgStyle, isStandalone: true, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngStyle]',\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }], propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```html\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n _viewContainerRef;\n _viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n ngTemplateOutlet = null;\n /** Injector to be used within the embedded view. */\n ngTemplateOutletInjector = null;\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n }\n ngOnChanges(changes) {\n if (this._shouldRecreateView(changes)) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n // If there is no outlet, clear the destroyed view ref.\n if (!this.ngTemplateOutlet) {\n this._viewRef = null;\n return;\n }\n // Create a context forward `Proxy` that will always bind to the user-specified context,\n // without having to destroy and re-create views whenever the context changes.\n const viewContext = this._createContextForwardProxy();\n this._viewRef = viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, viewContext, {\n injector: this.ngTemplateOutletInjector ?? undefined,\n });\n }\n }\n /**\n * We need to re-create existing embedded view if either is true:\n * - the outlet changed.\n * - the injector changed.\n */\n _shouldRecreateView(changes) {\n return !!changes['ngTemplateOutlet'] || !!changes['ngTemplateOutletInjector'];\n }\n /**\n * For a given outlet instance, we create a proxy object that delegates\n * to the user-specified context. This allows changing, or swapping out\n * the context object completely without having to destroy/re-create the view.\n */\n _createContextForwardProxy() {\n return new Proxy({}, {\n set: (_target, prop, newValue) => {\n if (!this.ngTemplateOutletContext) {\n return false;\n }\n return Reflect.set(this.ngTemplateOutletContext, prop, newValue);\n },\n get: (_target, prop, receiver) => {\n if (!this.ngTemplateOutletContext) {\n return undefined;\n }\n return Reflect.get(this.ngTemplateOutletContext, prop, receiver);\n },\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"19.0.4\", type: NgTemplateOutlet, isStandalone: true, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\", ngTemplateOutletInjector: \"ngTemplateOutletInjector\" }, usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngTemplateOutlet]',\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }], ngTemplateOutletInjector: [{\n type: Input\n }] } });\n\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\nfunction invalidPipeArgumentError(type, value) {\n return new ɵRuntimeError(2100 /* RuntimeErrorCode.INVALID_PIPE_ARGUMENT */, ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n // Subscription can be side-effectful, and we don't want any signal reads which happen in the\n // side effect of the subscription to be tracked by a component's template when that\n // subscription is triggered via the async pipe. So we wrap the subscription in `untracked` to\n // decouple from the current reactive context.\n //\n // `untracked` also prevents signal _writes_ which happen in the subscription side effect from\n // being treated as signal writes during the template evaluation (which throws errors).\n return untracked(() => async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n },\n }));\n }\n dispose(subscription) {\n // See the comment in `createSubscription` above on the use of `untracked`.\n untracked(() => subscription.unsubscribe());\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, (e) => {\n throw e;\n });\n }\n dispose(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n _ref;\n _latestValue = null;\n markForCheckOnValueUpdate = true;\n _subscription = null;\n _obj = null;\n _strategy = null;\n constructor(ref) {\n // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor\n // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`.\n this._ref = ref;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate\n // potential memory leaks in Observables that could otherwise cause the view data to\n // be retained.\n // https://github.com/angular/angular/issues/17624\n this._ref = null;\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n try {\n // Only call `markForCheck` if the value is updated asynchronously.\n // Synchronous updates _during_ subscription should not wastefully mark for check -\n // this value is already going to be returned from the transform function.\n this.markForCheckOnValueUpdate = false;\n this._subscribe(obj);\n }\n finally {\n this.markForCheckOnValueUpdate = true;\n }\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n // Note: `dispose` is only called if a subscription has been initialized before, indicating\n // that `this._strategy` is also available.\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n if (this.markForCheckOnValueUpdate) {\n this._ref?.markForCheck();\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: AsyncPipe, isStandalone: true, name: \"async\", pure: false });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'async',\n pure: false,\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });\n\n/**\n * Transforms text to all lower case.\n *\n * @see {@link UpperCasePipe}\n * @see {@link TitleCasePipe}\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * {@example common/pipes/ts/lowerupper_pipe.ts region='LowerUpperPipe'}\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: \"lowercase\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'lowercase',\n }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see {@link LowerCasePipe}\n * @see {@link UpperCasePipe}\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * {@example common/pipes/ts/titlecase_pipe.ts region='TitleCasePipe'}\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt) => txt[0].toUpperCase() + txt.slice(1).toLowerCase());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: \"titlecase\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'titlecase',\n }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see {@link LowerCasePipe}\n * @see {@link TitleCasePipe}\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: \"uppercase\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'uppercase',\n }]\n }] });\n\n/**\n * The default date format of Angular date pipe, which corresponds to the following format:\n * `'MMM d,y'` (e.g. `Jun 15, 2015`)\n */\nconst DEFAULT_DATE_FORMAT = 'mediumDate';\n\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n *\n * @deprecated use DATE_PIPE_DEFAULT_OPTIONS token to configure DatePipe\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken(ngDevMode ? 'DATE_PIPE_DEFAULT_TIMEZONE' : '');\n/**\n * DI token that allows to provide default configuration for the `DatePipe` instances in an\n * application. The value is an object which can include the following fields:\n * - `dateFormat`: configures the default date format. If not provided, the `DatePipe`\n * will use the 'mediumDate' as a value.\n * - `timezone`: configures the default timezone. If not provided, the `DatePipe` will\n * use the end-user's local system timezone.\n *\n * @see {@link DatePipeConfig}\n *\n * @usageNotes\n *\n * Various date pipe default values can be overwritten by providing this token with\n * the value that has this interface.\n *\n * For example:\n *\n * Override the default date format by providing a value using the token:\n * ```ts\n * providers: [\n * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {dateFormat: 'shortDate'}}\n * ]\n * ```\n *\n * Override the default timezone by providing a value using the token:\n * ```ts\n * providers: [\n * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {timezone: '-1200'}}\n * ]\n * ```\n */\nconst DATE_PIPE_DEFAULT_OPTIONS = new InjectionToken(ngDevMode ? 'DATE_PIPE_DEFAULT_OPTIONS' : '');\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n/format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_OPTIONS`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see {@link formatDate}\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------------|-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | ISO Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | ISO Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * {{ dateObj | date:\"MMM dd, yyyy 'at' hh:mm a\" }} // output is 'Jun 15, 2015 at 09:43 PM'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```angular-ts\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\nclass DatePipe {\n locale;\n defaultTimezone;\n defaultOptions;\n constructor(locale, defaultTimezone, defaultOptions) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n this.defaultOptions = defaultOptions;\n }\n transform(value, format, timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n const _format = format ?? this.defaultOptions?.dateFormat ?? DEFAULT_DATE_FORMAT;\n const _timezone = timezone ?? this.defaultOptions?.timezone ?? this.defaultTimezone ?? undefined;\n return formatDate(value, _format, locale || this.locale, _timezone);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: DatePipe, isStandalone: true, name: \"date\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'date',\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_OPTIONS]\n }, {\n type: Optional\n }] }] });\n\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n _localization;\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * https://unicode-org.github.io/icu/userguide/format_parse/messages/.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: \"i18nPlural\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nPlural',\n }]\n }], ctorParameters: () => [{ type: NgLocalization }] });\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: \"i18nSelect\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nSelect',\n }]\n }] });\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: JsonPipe, isStandalone: true, name: \"json\", pure: false });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'json',\n pure: false,\n }]\n }] });\n\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n * Passing `null` as the compareFn will use natural ordering of the input.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n differs;\n constructor(differs) {\n this.differs = differs;\n }\n differ;\n keyValues = [];\n compareFn = defaultComparator;\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n // make a differ for whatever type we've been passed in\n this.differ ??= this.differs.find(input).create();\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n if (compareFn) {\n this.keyValues.sort(compareFn);\n }\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: \"keyvalue\", pure: false });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'keyvalue',\n pure: false,\n }]\n }], ctorParameters: () => [{ type: i0.KeyValueDiffers }] });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see {@link formatNumber}\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n/locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * {@example common/pipes/ts/number_pipe.ts region='NumberPipe'}\n *\n * @publicApi\n */\nclass DecimalPipe {\n _locale;\n constructor(_locale) {\n this._locale = _locale;\n }\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale ||= this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: DecimalPipe, isStandalone: true, name: \"number\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'number',\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }] });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see {@link formatPercent}\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * {@example common/pipes/ts/percent_pipe.ts region='PercentPipe'}\n *\n * @publicApi\n */\nclass PercentPipe {\n _locale;\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n/locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale ||= this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: PercentPipe, isStandalone: true, name: \"percent\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'percent',\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }] });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n *\n * @see {@link getCurrencySymbol}\n * @see {@link formatCurrency}\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * {@example common/pipes/ts/currency_pipe.ts region='CurrencyPipe'}\n *\n * @publicApi\n */\nclass CurrencyPipe {\n _locale;\n _defaultCurrencyCode;\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale ||= this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: \"currency\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'currency',\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }] });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: SlicePipe, isStandalone: true, name: \"slice\", pure: false });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'slice',\n pure: false,\n }]\n }] });\n\n/**\n * @module\n * @description\n * This module provides a set of common Pipes.\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * @publicApi\n */\nclass CommonModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"19.0.4\", ngImport: i0, type: CommonModule, imports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: CommonModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\n\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('19.0.4');\n\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n // De-sugared tree-shakable injection\n // See #23917\n /** @nocollapse */\n static ɵprov = /** @pureOrBreakMyCode */ /* @__PURE__ */ ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => isPlatformBrowser(inject(PLATFORM_ID))\n ? new BrowserViewportScroller(inject(DOCUMENT), window)\n : new NullViewportScroller(),\n });\n}\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n document;\n window;\n offset = () => [0, 0];\n constructor(document, window) {\n this.document = document;\n this.window = window;\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n return [this.window.scrollX, this.window.scrollY];\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n this.window.scrollTo(position[0], position[1]);\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\n // @see https://html.spec.whatwg.org/#get-the-focusable-area\n // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n // @see https://html.spec.whatwg.org/#focusable-area\n elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n this.window.history.scrollRestoration = scrollRestoration;\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' &&\n document.body &&\n typeof document.body.attachShadow === 'function') {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * Value (out of 100) of the requested quality for placeholder images.\n */\nconst PLACEHOLDER_QUALITY = '20';\n\n// Converts a string that represents a URL into a URL class instance.\nfunction getUrl(src, win) {\n // Don't use a base URL is the URL is absolute.\n return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href);\n}\n// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`).\nfunction isAbsoluteUrl(src) {\n return /^https?:\\/\\//.test(src);\n}\n// Given a URL, extract the hostname part.\n// If a URL is a relative one - the URL is returned as is.\nfunction extractHostname(url) {\n return isAbsoluteUrl(url) ? new URL(url).hostname : url;\n}\nfunction isValidPath(path) {\n const isString = typeof path === 'string';\n if (!isString || path.trim() === '') {\n return false;\n }\n // Calling new URL() will throw if the path string is malformed\n try {\n const url = new URL(path);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction normalizePath(path) {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\nfunction normalizeSrc(src) {\n return src.startsWith('/') ? src.slice(1) : src;\n}\n\n/**\n * Noop image loader that does no transformation to the original src and just returns it as is.\n * This loader is used as a default one if more specific logic is not provided in an app config.\n *\n * @see {@link ImageLoader}\n * @see {@link NgOptimizedImage}\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see {@link ImageLoader}\n * @see {@link NgOptimizedImage}\n * @publicApi\n */\nconst IMAGE_LOADER = new InjectionToken(ngDevMode ? 'ImageLoader' : '', {\n providedIn: 'root',\n factory: () => noopImageLoader,\n});\n/**\n * Internal helper function that makes it easier to introduce custom image loaders for the\n * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI\n * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI\n * tokens managing preconnect check functionality.\n * @param buildUrlFn a function returning a full URL based on loader's configuration\n * @param exampleUrls example of full URLs for a given loader (used in error messages)\n * @returns a set of DI providers corresponding to the configured image loader\n */\nfunction createImageLoader(buildUrlFn, exampleUrls) {\n return function provideImageLoader(path) {\n if (!isValidPath(path)) {\n throwInvalidPathError(path, exampleUrls || []);\n }\n // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in\n // the individual loader functions.\n path = normalizePath(path);\n const loaderFn = (config) => {\n if (isAbsoluteUrl(config.src)) {\n // Image loader functions expect an image file name (e.g. `my-image.png`)\n // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,\n // so the final absolute URL can be constructed.\n // When an absolute URL is provided instead - the loader can not\n // build a final URL, thus the error is thrown to indicate that.\n throwUnexpectedAbsoluteUrlError(path, config.src);\n }\n return buildUrlFn(path, { ...config, src: normalizeSrc(config.src) });\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n return providers;\n };\n}\nfunction throwInvalidPathError(path, exampleUrls) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`);\n}\nfunction throwUnexpectedAbsoluteUrlError(path, url) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected a \\`\\` tag with an invalid \\`ngSrc\\` attribute: ${url}. ` +\n `This image loader expects \\`ngSrc\\` to be a relative URL - ` +\n `however the provided value is an absolute URL. ` +\n `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +\n `configured for this loader (\\`${path}\\`).`);\n}\n\n/**\n * Function that generates an ImageLoader for [Cloudflare Image\n * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular\n * provider. Note: Cloudflare has multiple image products - this provider is specifically for\n * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.\n *\n * @param path Your domain name, e.g. https://mysite.com\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n */\nconst provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https:///cdn-cgi/image//'] : undefined);\nfunction createCloudflareUrl(path, config) {\n let params = `format=auto`;\n if (config.width) {\n params += `,width=${config.width}`;\n }\n // When requesting a placeholder image we ask for a low quality image to reduce the load time.\n if (config.isPlaceholder) {\n params += `,quality=${PLACEHOLDER_QUALITY}`;\n }\n // Cloudflare image URLs format:\n // https://developers.cloudflare.com/images/image-resizing/url-format/\n return `${path}/cdn-cgi/image/${params}/${config.src}`;\n}\n\n/**\n * Name and URL tester for Cloudinary.\n */\nconst cloudinaryLoaderInfo = {\n name: 'Cloudinary',\n testUrl: isCloudinaryUrl,\n};\nconst CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/;\n/**\n * Tests whether a URL is from Cloudinary CDN.\n */\nfunction isCloudinaryUrl(url) {\n return CLOUDINARY_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.\n *\n * @param path Base URL of your Cloudinary images\n * This URL should match one of the following formats:\n * https://res.cloudinary.com/mysite\n * https://mysite.cloudinary.com\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n */\nconst provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode\n ? [\n 'https://res.cloudinary.com/mysite',\n 'https://mysite.cloudinary.com',\n 'https://subdomain.mysite.com',\n ]\n : undefined);\nfunction createCloudinaryUrl(path, config) {\n // Cloudinary image URLformat:\n // https://cloudinary.com/documentation/image_transformations#transformation_url_structure\n // Example of a Cloudinary image URL:\n // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png\n // For a placeholder image, we use the lowest image setting available to reduce the load time\n // else we use the auto size\n const quality = config.isPlaceholder ? 'q_auto:low' : 'q_auto';\n let params = `f_auto,${quality}`;\n if (config.width) {\n params += `,w_${config.width}`;\n }\n if (config.loaderParams?.['rounded']) {\n params += `,r_max`;\n }\n return `${path}/image/upload/${params}/${config.src}`;\n}\n\n/**\n * Name and URL tester for ImageKit.\n */\nconst imageKitLoaderInfo = {\n name: 'ImageKit',\n testUrl: isImageKitUrl,\n};\nconst IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/;\n/**\n * Tests whether a URL is from ImageKit CDN.\n */\nfunction isImageKitUrl(url) {\n return IMAGE_KIT_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.\n *\n * @param path Base URL of your ImageKit images\n * This URL should match one of the following formats:\n * https://ik.imagekit.io/myaccount\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n */\nconst provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);\nfunction createImagekitUrl(path, config) {\n // Example of an ImageKit image URL:\n // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg\n const { src, width } = config;\n const params = [];\n if (width) {\n params.push(`w-${width}`);\n }\n // When requesting a placeholder image we ask for a low quality image to reduce the load time.\n if (config.isPlaceholder) {\n params.push(`q-${PLACEHOLDER_QUALITY}`);\n }\n const urlSegments = params.length ? [path, `tr:${params.join(',')}`, src] : [path, src];\n const url = new URL(urlSegments.join('/'));\n return url.href;\n}\n\n/**\n * Name and URL tester for Imgix.\n */\nconst imgixLoaderInfo = {\n name: 'Imgix',\n testUrl: isImgixUrl,\n};\nconst IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/;\n/**\n * Tests whether a URL is from Imgix CDN.\n */\nfunction isImgixUrl(url) {\n return IMGIX_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.\n *\n * @param path path to the desired Imgix origin,\n * e.g. https://somepath.imgix.net or https://images.mysite.com\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n */\nconst provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);\nfunction createImgixUrl(path, config) {\n const url = new URL(`${path}/${config.src}`);\n // This setting ensures the smallest allowable format is set.\n url.searchParams.set('auto', 'format');\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n // When requesting a placeholder image we ask a low quality image to reduce the load time.\n if (config.isPlaceholder) {\n url.searchParams.set('q', PLACEHOLDER_QUALITY);\n }\n return url.href;\n}\n\n/**\n * Name and URL tester for Netlify.\n */\nconst netlifyLoaderInfo = {\n name: 'Netlify',\n testUrl: isNetlifyUrl,\n};\nconst NETLIFY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.netlify\\.app\\/.+/;\n/**\n * Tests whether a URL is from a Netlify site. This won't catch sites with a custom domain,\n * but it's a good start for sites in development. This is only used to warn users who haven't\n * configured an image loader.\n */\nfunction isNetlifyUrl(url) {\n return NETLIFY_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Netlify and turns it into an Angular provider.\n *\n * @param path optional URL of the desired Netlify site. Defaults to the current site.\n * @returns Set of providers to configure the Netlify loader.\n *\n * @publicApi\n */\nfunction provideNetlifyLoader(path) {\n if (path && !isValidPath(path)) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply either the full URL to the Netlify site, or leave it empty to use the current site.`);\n }\n if (path) {\n const url = new URL(path);\n path = url.origin;\n }\n const loaderFn = (config) => {\n return createNetlifyUrl(config, path);\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n return providers;\n}\nconst validParams = new Map([\n ['height', 'h'],\n ['fit', 'fit'],\n ['quality', 'q'],\n ['q', 'q'],\n ['position', 'position'],\n]);\nfunction createNetlifyUrl(config, path) {\n // Note: `path` can be undefined, in which case we use a fake one to construct a `URL` instance.\n const url = new URL(path ?? 'https://a/');\n url.pathname = '/.netlify/images';\n if (!isAbsoluteUrl(config.src) && !config.src.startsWith('/')) {\n config.src = '/' + config.src;\n }\n url.searchParams.set('url', config.src);\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n // When requesting a placeholder image we ask for a low quality image to reduce the load time.\n // If the quality is specified in the loader config - always use provided value.\n const configQuality = config.loaderParams?.['quality'] ?? config.loaderParams?.['q'];\n if (config.isPlaceholder && !configQuality) {\n url.searchParams.set('q', PLACEHOLDER_QUALITY);\n }\n for (const [param, value] of Object.entries(config.loaderParams ?? {})) {\n if (validParams.has(param)) {\n url.searchParams.set(validParams.get(param), value.toString());\n }\n else {\n if (ngDevMode) {\n console.warn(ɵformatRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, `The Netlify image loader has detected an \\`\\` tag with the unsupported attribute \"\\`${param}\\`\".`));\n }\n }\n }\n // The \"a\" hostname is used for relative URLs, so we can remove it from the final URL.\n return url.hostname === 'a' ? url.href.replace(url.origin, '') : url.href;\n}\n\n// Assembles directive details string, useful for error messages.\nfunction imgDirectiveDetails(ngSrc, includeNgSrc = true) {\n const ngSrcInfo = includeNgSrc\n ? `(activated on an element with the \\`ngSrc=\"${ngSrc}\"\\`) `\n : '';\n return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;\n}\n\n/**\n * Asserts that the application is in development mode. Throws an error if the application is in\n * production mode. This assert can be used to make sure that there is no dev-mode code invoked in\n * the prod mode accidentally.\n */\nfunction assertDevMode(checkName) {\n if (!ngDevMode) {\n throw new ɵRuntimeError(2958 /* RuntimeErrorCode.UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` +\n `Please make sure that the prod mode is enabled for production builds.`);\n }\n}\n\n/**\n * Observer that detects whether an image with `NgOptimizedImage`\n * is treated as a Largest Contentful Paint (LCP) element. If so,\n * asserts that the image has the `priority` attribute.\n *\n * Note: this is a dev-mode only class and it does not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n *\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript.\n */\nclass LCPImageObserver {\n // Map of full image URLs -> original `ngSrc` values.\n images = new Map();\n window = null;\n observer = null;\n constructor() {\n const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n assertDevMode('LCP checker');\n const win = inject(DOCUMENT).defaultView;\n if (isBrowser && typeof PerformanceObserver !== 'undefined') {\n this.window = win;\n this.observer = this.initPerformanceObserver();\n }\n }\n /**\n * Inits PerformanceObserver and subscribes to LCP events.\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript\n */\n initPerformanceObserver() {\n const observer = new PerformanceObserver((entryList) => {\n const entries = entryList.getEntries();\n if (entries.length === 0)\n return;\n // We use the latest entry produced by the `PerformanceObserver` as the best\n // signal on which element is actually an LCP one. As an example, the first image to load on\n // a page, by virtue of being the only thing on the page so far, is often a LCP candidate\n // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.\n const lcpElement = entries[entries.length - 1];\n // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.\n // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint\n const imgSrc = lcpElement.element?.src ?? '';\n // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.\n if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))\n return;\n const img = this.images.get(imgSrc);\n if (!img)\n return;\n if (!img.priority && !img.alreadyWarnedPriority) {\n img.alreadyWarnedPriority = true;\n logMissingPriorityError(imgSrc);\n }\n if (img.modified && !img.alreadyWarnedModified) {\n img.alreadyWarnedModified = true;\n logModifiedWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc, isPriority) {\n if (!this.observer)\n return;\n const newObservedImageState = {\n priority: isPriority,\n modified: false,\n alreadyWarnedModified: false,\n alreadyWarnedPriority: false,\n };\n this.images.set(getUrl(rewrittenSrc, this.window).href, newObservedImageState);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n updateImage(originalSrc, newSrc) {\n if (!this.observer)\n return;\n const originalUrl = getUrl(originalSrc, this.window).href;\n const img = this.images.get(originalUrl);\n if (img) {\n img.modified = true;\n this.images.set(getUrl(newSrc, this.window).href, img);\n this.images.delete(originalUrl);\n }\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: LCPImageObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\nfunction logMissingPriorityError(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.error(ɵformatRuntimeError(2955 /* RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element but was not marked \"priority\". This image should be marked ` +\n `\"priority\" in order to prioritize its loading. ` +\n `To fix this, add the \"priority\" attribute.`));\n}\nfunction logModifiedWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2964 /* RuntimeErrorCode.LCP_IMG_NGSRC_MODIFIED */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element and has had its \"ngSrc\" attribute modified. This can cause ` +\n `slower loading performance. It is recommended not to modify the \"ngSrc\" ` +\n `property on any image which could be the LCP element.`));\n}\n\n// Set of origins that are always excluded from the preconnect checks.\nconst INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);\n/**\n * Injection token to configure which origins should be excluded\n * from the preconnect checks. It can either be a single string or an array of strings\n * to represent a group of origins, for example:\n *\n * ```ts\n * {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```ts\n * {provide: PRECONNECT_CHECK_BLOCKLIST,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n */\nconst PRECONNECT_CHECK_BLOCKLIST = new InjectionToken(ngDevMode ? 'PRECONNECT_CHECK_BLOCKLIST' : '');\n/**\n * Contains the logic to detect whether an image, marked with the \"priority\" attribute\n * has a corresponding `` tag in the `document.head`.\n *\n * Note: this is a dev-mode only class, which should not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n */\nclass PreconnectLinkChecker {\n document = inject(DOCUMENT);\n isServer = isPlatformServer(inject(PLATFORM_ID));\n /**\n * Set of tags found on this page.\n * The `null` value indicates that there was no DOM query operation performed.\n */\n preconnectLinks = null;\n /*\n * Keep track of all already seen origin URLs to avoid repeating the same check.\n */\n alreadySeen = new Set();\n window = null;\n blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);\n constructor() {\n assertDevMode('preconnect link checker');\n const win = this.document.defaultView;\n if (typeof win !== 'undefined') {\n this.window = win;\n }\n const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, { optional: true });\n if (blocklist) {\n this.populateBlocklist(blocklist);\n }\n }\n populateBlocklist(origins) {\n if (Array.isArray(origins)) {\n deepForEach(origins, (origin) => {\n this.blocklist.add(extractHostname(origin));\n });\n }\n else {\n this.blocklist.add(extractHostname(origins));\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head for the\n * given src.\n *\n * @param rewrittenSrc src formatted with loader\n * @param originalNgSrc ngSrc value\n */\n assertPreconnect(rewrittenSrc, originalNgSrc) {\n if (this.isServer)\n return;\n const imgUrl = getUrl(rewrittenSrc, this.window);\n if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin))\n return;\n // Register this origin as seen, so we don't check it again later.\n this.alreadySeen.add(imgUrl.origin);\n // Note: we query for preconnect links only *once* and cache the results\n // for the entire lifespan of an application, since it's unlikely that the\n // list would change frequently. This allows to make sure there are no\n // performance implications of making extra DOM lookups for each image.\n this.preconnectLinks ??= this.queryPreconnectLinks();\n if (!this.preconnectLinks.has(imgUrl.origin)) {\n console.warn(ɵformatRuntimeError(2956 /* RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +\n `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +\n `images are delivered as soon as possible. To fix this, please add the following ` +\n `element into the of the document:\\n` +\n ` `));\n }\n }\n queryPreconnectLinks() {\n const preconnectUrls = new Set();\n const selector = 'link[rel=preconnect]';\n const links = Array.from(this.document.querySelectorAll(selector));\n for (let link of links) {\n const url = getUrl(link.href, this.window);\n preconnectUrls.add(url.origin);\n }\n return preconnectUrls;\n }\n ngOnDestroy() {\n this.preconnectLinks?.clear();\n this.alreadySeen.clear();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PreconnectLinkChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n/**\n * Invokes a callback for each element in the array. Also invokes a callback\n * recursively for each nested array.\n */\nfunction deepForEach(input, fn) {\n for (let value of input) {\n Array.isArray(value) ? deepForEach(value, fn) : fn(value);\n }\n}\n\n/**\n * In SSR scenarios, a preload `` element is generated for priority images.\n * Having a large number of preload tags may negatively affect the performance,\n * so we warn developers (by throwing an error) if the number of preloaded images\n * is above a certain threshold. This const specifies this threshold.\n */\nconst DEFAULT_PRELOADED_IMAGES_LIMIT = 5;\n/**\n * Helps to keep track of priority images that already have a corresponding\n * preload tag (to avoid generating multiple preload tags with the same URL).\n *\n * This Set tracks the original src passed into the `ngSrc` input not the src after it has been\n * run through the specified `IMAGE_LOADER`.\n */\nconst PRELOADED_IMAGES = new InjectionToken('NG_OPTIMIZED_PRELOADED_IMAGES', {\n providedIn: 'root',\n factory: () => new Set(),\n});\n\n/**\n * @description Contains the logic needed to track and add preload link tags to the `` tag. It\n * will also track what images have already had preload link tags added so as to not duplicate link\n * tags.\n *\n * In dev mode this service will validate that the number of preloaded images does not exceed the\n * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.\n */\nclass PreloadLinkCreator {\n preloadedImages = inject(PRELOADED_IMAGES);\n document = inject(DOCUMENT);\n /**\n * @description Add a preload `` to the `` of the `index.html` that is served from the\n * server while using Angular Universal and SSR to kick off image loads for high priority images.\n *\n * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)\n * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`\n * respectively, on the preload `` tag so that the correctly sized image is preloaded from\n * the CDN.\n *\n * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}\n *\n * @param renderer The `Renderer2` passed in from the directive\n * @param src The original src of the image that is set on the `ngSrc` input.\n * @param srcset The parsed and formatted srcset created from the `ngSrcset` input\n * @param sizes The value of the `sizes` attribute passed in to the `` tag\n */\n createPreloadLinkTag(renderer, src, srcset, sizes) {\n if (ngDevMode) {\n if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {\n throw new ɵRuntimeError(2961 /* RuntimeErrorCode.TOO_MANY_PRELOADED_IMAGES */, ngDevMode &&\n `The \\`NgOptimizedImage\\` directive has detected that more than ` +\n `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +\n `This might negatively affect an overall performance of the page. ` +\n `To fix this, remove the \"priority\" attribute from images with less priority.`);\n }\n }\n if (this.preloadedImages.has(src)) {\n return;\n }\n this.preloadedImages.add(src);\n const preload = renderer.createElement('link');\n renderer.setAttribute(preload, 'as', 'image');\n renderer.setAttribute(preload, 'href', src);\n renderer.setAttribute(preload, 'rel', 'preload');\n renderer.setAttribute(preload, 'fetchpriority', 'high');\n if (sizes) {\n renderer.setAttribute(preload, 'imageSizes', sizes);\n }\n if (srcset) {\n renderer.setAttribute(preload, 'imageSrcset', srcset);\n }\n renderer.appendChild(this.document.head, preload);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: PreloadLinkCreator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,\n * an error is thrown. The image content (as a string) might be very long, thus making\n * it hard to read an error message if the entire string is included. This const defines\n * the number of characters that should be included into the error message. The rest\n * of the content is truncated.\n */\nconst BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;\n/**\n * RegExpr to determine whether a src in a srcset is using width descriptors.\n * Should match something like: \"100w, 200w\".\n */\nconst VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;\n/**\n * RegExpr to determine whether a src in a srcset is using density descriptors.\n * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".\n */\nconst VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;\n/**\n * Srcset values with a density descriptor higher than this value will actively\n * throw an error. Such densities are not permitted as they cause image sizes\n * to be unreasonably large and slow down LCP.\n */\nconst ABSOLUTE_SRCSET_DENSITY_CAP = 3;\n/**\n * Used only in error message text to communicate best practices, as we will\n * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.\n */\nconst RECOMMENDED_SRCSET_DENSITY_CAP = 2;\n/**\n * Used in generating automatic density-based srcsets\n */\nconst DENSITY_SRCSET_MULTIPLIERS = [1, 2];\n/**\n * Used to determine which breakpoints to use on full-width images\n */\nconst VIEWPORT_BREAKPOINT_CUTOFF = 640;\n/**\n * Used to determine whether two aspect ratios are similar in value.\n */\nconst ASPECT_RATIO_TOLERANCE = 0.1;\n/**\n * Used to determine whether the image has been requested at an overly\n * large size compared to the actual rendered image size (after taking\n * into account a typical device pixel ratio). In pixels.\n */\nconst OVERSIZED_IMAGE_TOLERANCE = 1000;\n/**\n * Used to limit automatic srcset generation of very large sources for\n * fixed-size images. In pixels.\n */\nconst FIXED_SRCSET_WIDTH_LIMIT = 1920;\nconst FIXED_SRCSET_HEIGHT_LIMIT = 1080;\n/**\n * Default blur radius of the CSS filter used on placeholder images, in pixels\n */\nconst PLACEHOLDER_BLUR_AMOUNT = 15;\n/**\n * Placeholder dimension (height or width) limit in pixels. Angular produces a warning\n * when this limit is crossed.\n */\nconst PLACEHOLDER_DIMENSION_LIMIT = 1000;\n/**\n * Used to warn or error when the user provides an overly large dataURL for the placeholder\n * attribute.\n * Character count of Base64 images is 1 character per byte, and base64 encoding is approximately\n * 33% larger than base images, so 4000 characters is around 3KB on disk and 10000 characters is\n * around 7.7KB. Experimentally, 4000 characters is about 20x20px in PNG or medium-quality JPEG\n * format, and 10,000 is around 50x50px, but there's quite a bit of variation depending on how the\n * image is saved.\n */\nconst DATA_URL_WARN_LIMIT = 4000;\nconst DATA_URL_ERROR_LIMIT = 10000;\n/** Info about built-in loaders we can test for. */\nconst BUILT_IN_LOADERS = [\n imgixLoaderInfo,\n imageKitLoaderInfo,\n cloudinaryLoaderInfo,\n netlifyLoaderInfo,\n];\n/**\n * Threshold for the PRIORITY_TRUE_COUNT\n */\nconst PRIORITY_COUNT_THRESHOLD = 10;\n/**\n * This count is used to log a devMode warning\n * when the count of directive instances with priority=true\n * exceeds the threshold PRIORITY_COUNT_THRESHOLD\n */\nlet IMGS_WITH_PRIORITY_ATTR_COUNT = 0;\n/**\n * This function is for testing purpose.\n */\nfunction resetImagePriorityCount() {\n IMGS_WITH_PRIORITY_ATTR_COUNT = 0;\n}\n/**\n * Directive that improves image loading performance by enforcing best practices.\n *\n * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is\n * prioritized by:\n * - Automatically setting the `fetchpriority` attribute on the `` tag\n * - Lazy loading non-priority images by default\n * - Automatically generating a preconnect link tag in the document head\n *\n * In addition, the directive:\n * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided\n * - Automatically generates a srcset\n * - Requires that `width` and `height` are set\n * - Warns if `width` or `height` have been set incorrectly\n * - Warns if the image will be visually distorted when rendered\n *\n * @usageNotes\n * The `NgOptimizedImage` directive is marked as [standalone](guide/components/importing) and can\n * be imported directly.\n *\n * Follow the steps below to enable and use the directive:\n * 1. Import it into the necessary NgModule or a standalone Component.\n * 2. Optionally provide an `ImageLoader` if you use an image hosting service.\n * 3. Update the necessary `` tags in templates and replace `src` attributes with `ngSrc`.\n * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image\n * download.\n *\n * Step 1: import the `NgOptimizedImage` directive.\n *\n * ```ts\n * import { NgOptimizedImage } from '@angular/common';\n *\n * // Include it into the necessary NgModule\n * @NgModule({\n * imports: [NgOptimizedImage],\n * })\n * class AppModule {}\n *\n * // ... or a standalone Component\n * @Component({\n * imports: [NgOptimizedImage],\n * })\n * class MyStandaloneComponent {}\n * ```\n *\n * Step 2: configure a loader.\n *\n * To use the **default loader**: no additional code changes are necessary. The URL returned by the\n * generic loader will always match the value of \"src\". In other words, this loader applies no\n * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.\n *\n * To use an existing loader for a **third-party image service**: add the provider factory for your\n * chosen service to the `providers` array. In the example below, the Imgix loader is used:\n *\n * ```ts\n * import {provideImgixLoader} from '@angular/common';\n *\n * // Call the function and add the result to the `providers` array:\n * providers: [\n * provideImgixLoader(\"https://my.base.url/\"),\n * ],\n * ```\n *\n * The `NgOptimizedImage` directive provides the following functions:\n * - `provideCloudflareLoader`\n * - `provideCloudinaryLoader`\n * - `provideImageKitLoader`\n * - `provideImgixLoader`\n *\n * If you use a different image provider, you can create a custom loader function as described\n * below.\n *\n * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI\n * token.\n *\n * ```ts\n * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';\n *\n * // Configure the loader using the `IMAGE_LOADER` token.\n * providers: [\n * {\n * provide: IMAGE_LOADER,\n * useValue: (config: ImageLoaderConfig) => {\n * return `https://example.com/${config.src}-${config.width}.jpg`;\n * }\n * },\n * ],\n * ```\n *\n * Step 3: update `` tags in templates to use `ngSrc` instead of `src`.\n *\n * ```html\n * \n * ```\n *\n * @publicApi\n */\nclass NgOptimizedImage {\n imageLoader = inject(IMAGE_LOADER);\n config = processConfig(inject(ɵIMAGE_CONFIG));\n renderer = inject(Renderer2);\n imgElement = inject(ElementRef).nativeElement;\n injector = inject(Injector);\n isServer = isPlatformServer(inject(PLATFORM_ID));\n preloadLinkCreator = inject(PreloadLinkCreator);\n // a LCP image observer - should be injected only in the dev mode\n lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;\n /**\n * Calculate the rewritten `src` once and store it.\n * This is needed to avoid repetitive calculations and make sure the directive cleanup in the\n * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other\n * instance that might be already destroyed).\n */\n _renderedSrc = null;\n /**\n * Name of the source image.\n * Image name will be processed by the image loader and the final URL will be applied as the `src`\n * property of the image.\n */\n ngSrc;\n /**\n * A comma separated list of width or density descriptors.\n * The image name will be taken from `ngSrc` and combined with the list of width or density\n * descriptors to generate the final `srcset` property of the image.\n *\n * Example:\n * ```\n * =>\n * \n * ```\n */\n ngSrcset;\n /**\n * The base `sizes` attribute passed through to the `` element.\n * Providing sizes causes the image to create an automatic responsive srcset.\n */\n sizes;\n /**\n * For responsive images: the intrinsic width of the image in pixels.\n * For fixed size images: the desired rendered width of the image in pixels.\n */\n width;\n /**\n * For responsive images: the intrinsic height of the image in pixels.\n * For fixed size images: the desired rendered height of the image in pixels.\n */\n height;\n /**\n * The desired loading behavior (lazy, eager, or auto). Defaults to `lazy`,\n * which is recommended for most images.\n *\n * Warning: Setting images as loading=\"eager\" or loading=\"auto\" marks them\n * as non-priority images and can hurt loading performance. For images which\n * may be the LCP element, use the `priority` attribute instead of `loading`.\n */\n loading;\n /**\n * Indicates whether this image should have a high priority.\n */\n priority = false;\n /**\n * Data to pass through to custom loaders.\n */\n loaderParams;\n /**\n * Disables automatic srcset generation for this image.\n */\n disableOptimizedSrcset = false;\n /**\n * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds\n * styles such that the image fills its containing element.\n */\n fill = false;\n /**\n * A URL or data URL for an image to be used as a placeholder while this image loads.\n */\n placeholder;\n /**\n * Configuration object for placeholder settings. Options:\n * * blur: Setting this to false disables the automatic CSS blur.\n */\n placeholderConfig;\n /**\n * Value of the `src` attribute if set on the host `` element.\n * This input is exclusively read to assert that `src` is not set in conflict\n * with `ngSrc` and that images don't start to load until a lazy loading strategy is set.\n * @internal\n */\n src;\n /**\n * Value of the `srcset` attribute if set on the host `` element.\n * This input is exclusively read to assert that `srcset` is not set in conflict\n * with `ngSrcset` and that images don't start to load until a lazy loading strategy is set.\n * @internal\n */\n srcset;\n /** @nodoc */\n ngOnInit() {\n ɵperformanceMarkFeature('NgOptimizedImage');\n if (ngDevMode) {\n const ngZone = this.injector.get(NgZone);\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n if (this.ngSrcset) {\n assertNoConflictingSrcset(this);\n }\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n if (this.fill) {\n assertEmptyWidthAndHeight(this);\n // This leaves the Angular zone to avoid triggering unnecessary change detection cycles when\n // `load` tasks are invoked on images.\n ngZone.runOutsideAngular(() => assertNonZeroRenderedHeight(this, this.imgElement, this.renderer));\n }\n else {\n assertNonEmptyWidthAndHeight(this);\n if (this.height !== undefined) {\n assertGreaterThanZero(this, this.height, 'height');\n }\n if (this.width !== undefined) {\n assertGreaterThanZero(this, this.width, 'width');\n }\n // Only check for distorted images when not in fill mode, where\n // images may be intentionally stretched, cropped or letterboxed.\n ngZone.runOutsideAngular(() => assertNoImageDistortion(this, this.imgElement, this.renderer));\n }\n assertValidLoadingInput(this);\n if (!this.ngSrcset) {\n assertNoComplexSizes(this);\n }\n assertValidPlaceholder(this, this.imageLoader);\n assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);\n assertNoNgSrcsetWithoutLoader(this, this.imageLoader);\n assertNoLoaderParamsWithoutLoader(this, this.imageLoader);\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc, this.priority);\n });\n }\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n if (!this.isServer) {\n const applicationRef = this.injector.get(ApplicationRef);\n assetPriorityCountBelowThreshold(applicationRef);\n }\n }\n }\n if (this.placeholder) {\n this.removePlaceholderOnLoad(this.imgElement);\n }\n this.setHostAttributes();\n }\n setHostAttributes() {\n // Must set width/height explicitly in case they are bound (in which case they will\n // only be reflected and not found by the browser)\n if (this.fill) {\n this.sizes ||= '100vw';\n }\n else {\n this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n }\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `data-ng-img` attribute flags an image as using the directive, to allow\n // for analysis of the directive's performance.\n this.setHostAttribute('ng-img', 'true');\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n const rewrittenSrcset = this.updateSrcAndSrcset();\n if (this.sizes) {\n if (this.getLoadingBehavior() === 'lazy') {\n this.setHostAttribute('sizes', 'auto, ' + this.sizes);\n }\n else {\n this.setHostAttribute('sizes', this.sizes);\n }\n }\n else {\n if (this.ngSrcset &&\n VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset) &&\n this.getLoadingBehavior() === 'lazy') {\n this.setHostAttribute('sizes', 'auto, 100vw');\n }\n }\n if (this.isServer && this.priority) {\n this.preloadLinkCreator.createPreloadLinkTag(this.renderer, this.getRewrittenSrc(), rewrittenSrcset, this.sizes);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, [\n 'ngSrcset',\n 'width',\n 'height',\n 'priority',\n 'fill',\n 'loading',\n 'sizes',\n 'loaderParams',\n 'disableOptimizedSrcset',\n ]);\n }\n if (changes['ngSrc'] && !changes['ngSrc'].isFirstChange()) {\n const oldSrc = this._renderedSrc;\n this.updateSrcAndSrcset(true);\n const newSrc = this._renderedSrc;\n if (this.lcpObserver !== null && oldSrc && newSrc && oldSrc !== newSrc) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver?.updateImage(oldSrc, newSrc);\n });\n }\n }\n if (ngDevMode && changes['placeholder']?.currentValue && !this.isServer) {\n assertPlaceholderDimensions(this, this.imgElement);\n }\n }\n callImageLoader(configWithoutCustomParams) {\n let augmentedConfig = configWithoutCustomParams;\n if (this.loaderParams) {\n augmentedConfig.loaderParams = this.loaderParams;\n }\n return this.imageLoader(augmentedConfig);\n }\n getLoadingBehavior() {\n if (!this.priority && this.loading !== undefined) {\n return this.loading;\n }\n return this.priority ? 'eager' : 'lazy';\n }\n getFetchPriority() {\n return this.priority ? 'high' : 'auto';\n }\n getRewrittenSrc() {\n // ImageLoaderConfig supports setting a width property. However, we're not setting width here\n // because if the developer uses rendered width instead of intrinsic width in the HTML width\n // attribute, the image requested may be too small for 2x+ screens.\n if (!this._renderedSrc) {\n const imgConfig = { src: this.ngSrc };\n // Cache calculated image src to reuse it later in the code.\n this._renderedSrc = this.callImageLoader(imgConfig);\n }\n return this._renderedSrc;\n }\n getRewrittenSrcset() {\n const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);\n const finalSrcs = this.ngSrcset\n .split(',')\n .filter((src) => src !== '')\n .map((srcStr) => {\n srcStr = srcStr.trim();\n const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;\n return `${this.callImageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\n getAutomaticSrcset() {\n if (this.sizes) {\n return this.getResponsiveSrcset();\n }\n else {\n return this.getFixedSrcset();\n }\n }\n getResponsiveSrcset() {\n const { breakpoints } = this.config;\n let filteredBreakpoints = breakpoints;\n if (this.sizes?.trim() === '100vw') {\n // Since this is a full-screen-width image, our srcset only needs to include\n // breakpoints with full viewport widths.\n filteredBreakpoints = breakpoints.filter((bp) => bp >= VIEWPORT_BREAKPOINT_CUTOFF);\n }\n const finalSrcs = filteredBreakpoints.map((bp) => `${this.callImageLoader({ src: this.ngSrc, width: bp })} ${bp}w`);\n return finalSrcs.join(', ');\n }\n updateSrcAndSrcset(forceSrcRecalc = false) {\n if (forceSrcRecalc) {\n // Reset cached value, so that the followup `getRewrittenSrc()` call\n // will recalculate it and update the cache.\n this._renderedSrc = null;\n }\n const rewrittenSrc = this.getRewrittenSrc();\n this.setHostAttribute('src', rewrittenSrc);\n let rewrittenSrcset = undefined;\n if (this.ngSrcset) {\n rewrittenSrcset = this.getRewrittenSrcset();\n }\n else if (this.shouldGenerateAutomaticSrcset()) {\n rewrittenSrcset = this.getAutomaticSrcset();\n }\n if (rewrittenSrcset) {\n this.setHostAttribute('srcset', rewrittenSrcset);\n }\n return rewrittenSrcset;\n }\n getFixedSrcset() {\n const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map((multiplier) => `${this.callImageLoader({\n src: this.ngSrc,\n width: this.width * multiplier,\n })} ${multiplier}x`);\n return finalSrcs.join(', ');\n }\n shouldGenerateAutomaticSrcset() {\n let oversizedImage = false;\n if (!this.sizes) {\n oversizedImage =\n this.width > FIXED_SRCSET_WIDTH_LIMIT || this.height > FIXED_SRCSET_HEIGHT_LIMIT;\n }\n return (!this.disableOptimizedSrcset &&\n !this.srcset &&\n this.imageLoader !== noopImageLoader &&\n !oversizedImage);\n }\n /**\n * Returns an image url formatted for use with the CSS background-image property. Expects one of:\n * * A base64 encoded image, which is wrapped and passed through.\n * * A boolean. If true, calls the image loader to generate a small placeholder url.\n */\n generatePlaceholder(placeholderInput) {\n const { placeholderResolution } = this.config;\n if (placeholderInput === true) {\n return `url(${this.callImageLoader({\n src: this.ngSrc,\n width: placeholderResolution,\n isPlaceholder: true,\n })})`;\n }\n else if (typeof placeholderInput === 'string') {\n return `url(${placeholderInput})`;\n }\n return null;\n }\n /**\n * Determines if blur should be applied, based on an optional boolean\n * property `blur` within the optional configuration object `placeholderConfig`.\n */\n shouldBlurPlaceholder(placeholderConfig) {\n if (!placeholderConfig || !placeholderConfig.hasOwnProperty('blur')) {\n return true;\n }\n return Boolean(placeholderConfig.blur);\n }\n removePlaceholderOnLoad(img) {\n const callback = () => {\n const changeDetectorRef = this.injector.get(ChangeDetectorRef);\n removeLoadListenerFn();\n removeErrorListenerFn();\n this.placeholder = false;\n changeDetectorRef.markForCheck();\n };\n const removeLoadListenerFn = this.renderer.listen(img, 'load', callback);\n const removeErrorListenerFn = this.renderer.listen(img, 'error', callback);\n callOnLoadIfImageIsLoaded(img, callback);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (ngDevMode) {\n if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {\n this.lcpObserver.unregisterImage(this._renderedSrc);\n }\n }\n }\n setHostAttribute(name, value) {\n this.renderer.setAttribute(this.imgElement, name, value);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"19.0.4\", type: NgOptimizedImage, isStandalone: true, selector: \"img[ngSrc]\", inputs: { ngSrc: [\"ngSrc\", \"ngSrc\", unwrapSafeUrl], ngSrcset: \"ngSrcset\", sizes: \"sizes\", width: [\"width\", \"width\", numberAttribute], height: [\"height\", \"height\", numberAttribute], loading: \"loading\", priority: [\"priority\", \"priority\", booleanAttribute], loaderParams: \"loaderParams\", disableOptimizedSrcset: [\"disableOptimizedSrcset\", \"disableOptimizedSrcset\", booleanAttribute], fill: [\"fill\", \"fill\", booleanAttribute], placeholder: [\"placeholder\", \"placeholder\", booleanOrUrlAttribute], placeholderConfig: \"placeholderConfig\", src: \"src\", srcset: \"srcset\" }, host: { properties: { \"style.position\": \"fill ? \\\"absolute\\\" : null\", \"style.width\": \"fill ? \\\"100%\\\" : null\", \"style.height\": \"fill ? \\\"100%\\\" : null\", \"style.inset\": \"fill ? \\\"0\\\" : null\", \"style.background-size\": \"placeholder ? \\\"cover\\\" : null\", \"style.background-position\": \"placeholder ? \\\"50% 50%\\\" : null\", \"style.background-repeat\": \"placeholder ? \\\"no-repeat\\\" : null\", \"style.background-image\": \"placeholder ? generatePlaceholder(placeholder) : null\", \"style.filter\": \"placeholder && shouldBlurPlaceholder(placeholderConfig) ? \\\"blur(15px)\\\" : null\" } }, usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{\n selector: 'img[ngSrc]',\n host: {\n '[style.position]': 'fill ? \"absolute\" : null',\n '[style.width]': 'fill ? \"100%\" : null',\n '[style.height]': 'fill ? \"100%\" : null',\n '[style.inset]': 'fill ? \"0\" : null',\n '[style.background-size]': 'placeholder ? \"cover\" : null',\n '[style.background-position]': 'placeholder ? \"50% 50%\" : null',\n '[style.background-repeat]': 'placeholder ? \"no-repeat\" : null',\n '[style.background-image]': 'placeholder ? generatePlaceholder(placeholder) : null',\n '[style.filter]': `placeholder && shouldBlurPlaceholder(placeholderConfig) ? \"blur(${PLACEHOLDER_BLUR_AMOUNT}px)\" : null`,\n },\n }]\n }], propDecorators: { ngSrc: [{\n type: Input,\n args: [{ required: true, transform: unwrapSafeUrl }]\n }], ngSrcset: [{\n type: Input\n }], sizes: [{\n type: Input\n }], width: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], height: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], loaderParams: [{\n type: Input\n }], disableOptimizedSrcset: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], fill: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], placeholder: [{\n type: Input,\n args: [{ transform: booleanOrUrlAttribute }]\n }], placeholderConfig: [{\n type: Input\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Sorts provided config breakpoints and uses defaults.\n */\nfunction processConfig(config) {\n let sortedBreakpoints = {};\n if (config.breakpoints) {\n sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);\n }\n return Object.assign({}, ɵIMAGE_CONFIG_DEFAULTS, config, sortedBreakpoints);\n}\n/***** Assert functions *****/\n/**\n * Verifies that there is no `src` set on a host element.\n */\nfunction assertNoConflictingSrc(dir) {\n if (dir.src) {\n throw new ɵRuntimeError(2950 /* RuntimeErrorCode.UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +\n `To fix this, please remove the \\`src\\` attribute.`);\n }\n}\n/**\n * Verifies that there is no `srcset` set on a host element.\n */\nfunction assertNoConflictingSrcset(dir) {\n if (dir.srcset) {\n throw new ɵRuntimeError(2951 /* RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +\n `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Base64-encoded image.\n */\nfunction assertNotBase64Image(dir) {\n let ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('data:')) {\n if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {\n ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';\n }\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +\n `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the 'sizes' only includes responsive values.\n */\nfunction assertNoComplexSizes(dir) {\n let sizes = dir.sizes;\n if (sizes?.match(/((\\)|,)\\s|^)\\d+px/)) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +\n `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +\n `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +\n `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);\n }\n}\nfunction assertValidPlaceholder(dir, imageLoader) {\n assertNoPlaceholderConfigWithoutPlaceholder(dir);\n assertNoRelativePlaceholderWithoutLoader(dir, imageLoader);\n assertNoOversizedDataUrl(dir);\n}\n/**\n * Verifies that placeholderConfig isn't being used without placeholder\n */\nfunction assertNoPlaceholderConfigWithoutPlaceholder(dir) {\n if (dir.placeholderConfig && !dir.placeholder) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`placeholderConfig\\` options were provided for an ` +\n `image that does not use the \\`placeholder\\` attribute, and will have no effect.`);\n }\n}\n/**\n * Warns if a relative URL placeholder is specified, but no loader is present to provide the small\n * image.\n */\nfunction assertNoRelativePlaceholderWithoutLoader(dir, imageLoader) {\n if (dir.placeholder === true && imageLoader === noopImageLoader) {\n throw new ɵRuntimeError(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`placeholder\\` attribute is set to true but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which would result in the same image being used for the primary image and its placeholder. ` +\n `To fix this, provide a loader or remove the \\`placeholder\\` attribute from the image.`);\n }\n}\n/**\n * Warns or throws an error if an oversized dataURL placeholder is provided.\n */\nfunction assertNoOversizedDataUrl(dir) {\n if (dir.placeholder &&\n typeof dir.placeholder === 'string' &&\n dir.placeholder.startsWith('data:')) {\n if (dir.placeholder.length > DATA_URL_ERROR_LIMIT) {\n throw new ɵRuntimeError(2965 /* RuntimeErrorCode.OVERSIZED_PLACEHOLDER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`placeholder\\` attribute is set to a data URL which is longer ` +\n `than ${DATA_URL_ERROR_LIMIT} characters. This is strongly discouraged, as large inline placeholders ` +\n `directly increase the bundle size of Angular and hurt page load performance. To fix this, generate ` +\n `a smaller data URL placeholder.`);\n }\n if (dir.placeholder.length > DATA_URL_WARN_LIMIT) {\n console.warn(ɵformatRuntimeError(2965 /* RuntimeErrorCode.OVERSIZED_PLACEHOLDER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`placeholder\\` attribute is set to a data URL which is longer ` +\n `than ${DATA_URL_WARN_LIMIT} characters. This is discouraged, as large inline placeholders ` +\n `directly increase the bundle size of Angular and hurt page load performance. For better loading performance, ` +\n `generate a smaller data URL placeholder.`));\n }\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Blob URL.\n */\nfunction assertNotBlobUrl(dir) {\n const ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('blob:')) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +\n `Blob URLs are not supported by the NgOptimizedImage directive. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the input is set to a non-empty string.\n */\nfunction assertNonEmptyInput(dir, name, value) {\n const isString = typeof value === 'string';\n const isEmptyString = isString && value.trim() === '';\n if (!isString || isEmptyString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +\n `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);\n }\n}\n/**\n * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".\n */\nfunction assertValidNgSrcset(dir, value) {\n if (value == null)\n return;\n assertNonEmptyInput(dir, 'ngSrcset', value);\n const stringVal = value;\n const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);\n const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);\n if (isValidDensityDescriptor) {\n assertUnderDensityCap(dir, stringVal);\n }\n const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;\n if (!isValidSrcset) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +\n `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +\n `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);\n }\n}\nfunction assertUnderDensityCap(dir, value) {\n const underDensityCap = value\n .split(',')\n .every((num) => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);\n if (!underDensityCap) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +\n `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +\n `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +\n `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);\n }\n}\n/**\n * Creates a `RuntimeError` instance to represent a situation when an input is set after\n * the directive has initialized.\n */\nfunction postInitInputChangeError(dir, inputName) {\n let reason;\n if (inputName === 'width' || inputName === 'height') {\n reason =\n `Changing \\`${inputName}\\` may result in different attribute value ` +\n `applied to the underlying image element and cause layout shifts on a page.`;\n }\n else {\n reason =\n `Changing the \\`${inputName}\\` would have no effect on the underlying ` +\n `image element, because the resource loading has already occurred.`;\n }\n return new ɵRuntimeError(2953 /* RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +\n `The NgOptimizedImage directive will not react to this input change. ${reason} ` +\n `To fix this, either switch \\`${inputName}\\` to a static value ` +\n `or wrap the image element in an *ngIf that is gated on the necessary value.`);\n}\n/**\n * Verify that none of the listed inputs has changed.\n */\nfunction assertNoPostInitInputChange(dir, changes, inputs) {\n inputs.forEach((input) => {\n const isUpdated = changes.hasOwnProperty(input);\n if (isUpdated && !changes[input].isFirstChange()) {\n if (input === 'ngSrc') {\n // When the `ngSrc` input changes, we detect that only in the\n // `ngOnChanges` hook, thus the `ngSrc` is already set. We use\n // `ngSrc` in the error message, so we use a previous value, but\n // not the updated one in it.\n dir = { ngSrc: changes[input].previousValue };\n }\n throw postInitInputChangeError(dir, input);\n }\n });\n}\n/**\n * Verifies that a specified input is a number greater than 0.\n */\nfunction assertGreaterThanZero(dir, inputValue, inputName) {\n const validNumber = typeof inputValue === 'number' && inputValue > 0;\n const validString = typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;\n if (!validNumber && !validString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value. ` +\n `To fix this, provide \\`${inputName}\\` as a number greater than 0.`);\n }\n}\n/**\n * Verifies that the rendered image is not visually distorted. Effectively this is checking:\n * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.\n * - Whether image styling is \"correct\" (see below for a longer explanation).\n */\nfunction assertNoImageDistortion(dir, img, renderer) {\n const callback = () => {\n removeLoadListenerFn();\n removeErrorListenerFn();\n const computedStyle = window.getComputedStyle(img);\n let renderedWidth = parseFloat(computedStyle.getPropertyValue('width'));\n let renderedHeight = parseFloat(computedStyle.getPropertyValue('height'));\n const boxSizing = computedStyle.getPropertyValue('box-sizing');\n if (boxSizing === 'border-box') {\n const paddingTop = computedStyle.getPropertyValue('padding-top');\n const paddingRight = computedStyle.getPropertyValue('padding-right');\n const paddingBottom = computedStyle.getPropertyValue('padding-bottom');\n const paddingLeft = computedStyle.getPropertyValue('padding-left');\n renderedWidth -= parseFloat(paddingRight) + parseFloat(paddingLeft);\n renderedHeight -= parseFloat(paddingTop) + parseFloat(paddingBottom);\n }\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = img.naturalWidth;\n const intrinsicHeight = img.naturalHeight;\n const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;\n const suppliedWidth = dir.width;\n const suppliedHeight = dir.height;\n const suppliedAspectRatio = suppliedWidth / suppliedHeight;\n // Tolerance is used to account for the impact of subpixel rendering.\n // Due to subpixel rendering, the rendered, intrinsic, and supplied\n // aspect ratios of a correctly configured image may not exactly match.\n // For example, a `width=4030 height=3020` image might have a rendered\n // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)\n const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;\n const stylingDistortion = nonZeroRenderedDimensions &&\n Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;\n if (inaccurateDimensions) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +\n `the aspect ratio indicated by the width and height attributes. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${round(intrinsicAspectRatio)}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${round(suppliedAspectRatio)}). ` +\n `\\nTo fix this, update the width and height attributes.`));\n }\n else if (stylingDistortion) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +\n `does not match the image's intrinsic aspect ratio. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${round(intrinsicAspectRatio)}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${round(renderedAspectRatio)}). \\nThis issue can occur if \"width\" and \"height\" ` +\n `attributes are added to an image without updating the corresponding ` +\n `image styling. To fix this, adjust image styling. In most cases, ` +\n `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +\n `this issue.`));\n }\n else if (!dir.ngSrcset && nonZeroRenderedDimensions) {\n // If `ngSrcset` hasn't been set, sanity check the intrinsic size.\n const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;\n const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;\n const oversizedWidth = intrinsicWidth - recommendedWidth >= OVERSIZED_IMAGE_TOLERANCE;\n const oversizedHeight = intrinsicHeight - recommendedHeight >= OVERSIZED_IMAGE_TOLERANCE;\n if (oversizedWidth || oversizedHeight) {\n console.warn(ɵformatRuntimeError(2960 /* RuntimeErrorCode.OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +\n `larger than necessary. ` +\n `\\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +\n `\\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +\n `\\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +\n `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));\n }\n }\n };\n const removeLoadListenerFn = renderer.listen(img, 'load', callback);\n // We only listen to the `error` event to remove the `load` event listener because it will not be\n // fired if the image fails to load. This is done to prevent memory leaks in development mode\n // because image elements aren't garbage-collected properly. It happens because zone.js stores the\n // event listener directly on the element and closures capture `dir`.\n const removeErrorListenerFn = renderer.listen(img, 'error', () => {\n removeLoadListenerFn();\n removeErrorListenerFn();\n });\n callOnLoadIfImageIsLoaded(img, callback);\n}\n/**\n * Verifies that a specified input is set.\n */\nfunction assertNonEmptyWidthAndHeight(dir) {\n let missingAttributes = [];\n if (dir.width === undefined)\n missingAttributes.push('width');\n if (dir.height === undefined)\n missingAttributes.push('height');\n if (missingAttributes.length > 0) {\n throw new ɵRuntimeError(2954 /* RuntimeErrorCode.REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +\n `are missing: ${missingAttributes.map((attr) => `\"${attr}\"`).join(', ')}. ` +\n `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +\n `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +\n `\"fill\" mode with the \\`fill\\` attribute.`);\n }\n}\n/**\n * Verifies that width and height are not set. Used in fill mode, where those attributes don't make\n * sense.\n */\nfunction assertEmptyWidthAndHeight(dir) {\n if (dir.width || dir.height) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +\n `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +\n `element, the size attributes have no effect and should be removed.`);\n }\n}\n/**\n * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides\n * guidance that this can be caused by the containing element's CSS position property.\n */\nfunction assertNonZeroRenderedHeight(dir, img, renderer) {\n const callback = () => {\n removeLoadListenerFn();\n removeErrorListenerFn();\n const renderedHeight = img.clientHeight;\n if (dir.fill && renderedHeight === 0) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +\n `This is likely because the containing element does not have the CSS 'position' ` +\n `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +\n `To fix this problem, make sure the container element has the CSS 'position' ` +\n `property defined and the height of the element is not zero.`));\n }\n };\n const removeLoadListenerFn = renderer.listen(img, 'load', callback);\n // See comments in the `assertNoImageDistortion`.\n const removeErrorListenerFn = renderer.listen(img, 'error', () => {\n removeLoadListenerFn();\n removeErrorListenerFn();\n });\n callOnLoadIfImageIsLoaded(img, callback);\n}\n/**\n * Verifies that the `loading` attribute is set to a valid input &\n * is not used on priority images.\n */\nfunction assertValidLoadingInput(dir) {\n if (dir.loading && dir.priority) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `was used on an image that was marked \"priority\". ` +\n `Setting \\`loading\\` on priority images is not allowed ` +\n `because these images will always be eagerly loaded. ` +\n `To fix this, remove the “loading” attribute from the priority image.`);\n }\n const validInputs = ['auto', 'eager', 'lazy'];\n if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `has an invalid value (\\`${dir.loading}\\`). ` +\n `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);\n }\n}\n/**\n * Warns if NOT using a loader (falling back to the generic loader) and\n * the image appears to be hosted on one of the image CDNs for which\n * we do have a built-in image loader. Suggests switching to the\n * built-in loader.\n *\n * @param ngSrc Value of the ngSrc attribute\n * @param imageLoader ImageLoader provided\n */\nfunction assertNotMissingBuiltInLoader(ngSrc, imageLoader) {\n if (imageLoader === noopImageLoader) {\n let builtInLoaderName = '';\n for (const loader of BUILT_IN_LOADERS) {\n if (loader.testUrl(ngSrc)) {\n builtInLoaderName = loader.name;\n break;\n }\n }\n if (builtInLoaderName) {\n console.warn(ɵformatRuntimeError(2962 /* RuntimeErrorCode.MISSING_BUILTIN_LOADER */, `NgOptimizedImage: It looks like your images may be hosted on the ` +\n `${builtInLoaderName} CDN, but your app is not using Angular's ` +\n `built-in loader for that CDN. We recommend switching to use ` +\n `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +\n `in your \\`providers\\` and passing it your instance's base URL. ` +\n `If you don't want to use the built-in loader, define a custom ` +\n `loader function using IMAGE_LOADER to silence this warning.`));\n }\n }\n}\n/**\n * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).\n */\nfunction assertNoNgSrcsetWithoutLoader(dir, imageLoader) {\n if (dir.ngSrcset && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which would result in the same image being used for all configured sizes. ` +\n `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));\n }\n}\n/**\n * Warns if loaderParams is present and no loader is configured (i.e. the default one is being\n * used).\n */\nfunction assertNoLoaderParamsWithoutLoader(dir, imageLoader) {\n if (dir.loaderParams && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which means that the loaderParams data will not be consumed and will not affect the URL. ` +\n `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));\n }\n}\n/**\n * Warns if the priority attribute is used too often on page load\n */\nasync function assetPriorityCountBelowThreshold(appRef) {\n if (IMGS_WITH_PRIORITY_ATTR_COUNT === 0) {\n IMGS_WITH_PRIORITY_ATTR_COUNT++;\n await appRef.whenStable();\n if (IMGS_WITH_PRIORITY_ATTR_COUNT > PRIORITY_COUNT_THRESHOLD) {\n console.warn(ɵformatRuntimeError(2966 /* RuntimeErrorCode.TOO_MANY_PRIORITY_ATTRIBUTES */, `NgOptimizedImage: The \"priority\" attribute is set to true more than ${PRIORITY_COUNT_THRESHOLD} times (${IMGS_WITH_PRIORITY_ATTR_COUNT} times). ` +\n `Marking too many images as \"high\" priority can hurt your application's LCP (https://web.dev/lcp). ` +\n `\"Priority\" should only be set on the image expected to be the page's LCP element.`));\n }\n }\n else {\n IMGS_WITH_PRIORITY_ATTR_COUNT++;\n }\n}\n/**\n * Warns if placeholder's dimension are over a threshold.\n *\n * This assert function is meant to only run on the browser.\n */\nfunction assertPlaceholderDimensions(dir, imgElement) {\n const computedStyle = window.getComputedStyle(imgElement);\n let renderedWidth = parseFloat(computedStyle.getPropertyValue('width'));\n let renderedHeight = parseFloat(computedStyle.getPropertyValue('height'));\n if (renderedWidth > PLACEHOLDER_DIMENSION_LIMIT || renderedHeight > PLACEHOLDER_DIMENSION_LIMIT) {\n console.warn(ɵformatRuntimeError(2967 /* RuntimeErrorCode.PLACEHOLDER_DIMENSION_LIMIT_EXCEEDED */, `${imgDirectiveDetails(dir.ngSrc)} it uses a placeholder image, but at least one ` +\n `of the dimensions attribute (height or width) exceeds the limit of ${PLACEHOLDER_DIMENSION_LIMIT}px. ` +\n `To fix this, use a smaller image as a placeholder.`));\n }\n}\nfunction callOnLoadIfImageIsLoaded(img, callback) {\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-complete\n // The spec defines that `complete` is truthy once its request state is fully available.\n // The image may already be available if it’s loaded from the browser cache.\n // In that case, the `load` event will not fire at all, meaning that all setup\n // callbacks listening for the `load` event will not be invoked.\n // In Safari, there is a known behavior where the `complete` property of an\n // `HTMLImageElement` may sometimes return `true` even when the image is not fully loaded.\n // Checking both `img.complete` and `img.naturalWidth` is the most reliable way to\n // determine if an image has been fully loaded, especially in browsers where the\n // `complete` property may return `true` prematurely.\n if (img.complete && img.naturalWidth) {\n callback();\n }\n}\nfunction round(input) {\n return Number.isInteger(input) ? input : input.toFixed(2);\n}\n// Transform function to handle SafeValue input for ngSrc. This doesn't do any sanitization,\n// as that is not needed for img.src and img.srcset. This transform is purely for compatibility.\nfunction unwrapSafeUrl(value) {\n if (typeof value === 'string') {\n return value;\n }\n return ɵunwrapSafeValue(value);\n}\n// Transform function to handle inputs which may be booleans, strings, or string representations\n// of boolean values. Used for the placeholder attribute.\nfunction booleanOrUrlAttribute(value) {\n if (typeof value === 'string' && value !== 'true' && value !== 'false' && value !== '') {\n return value;\n }\n return booleanAttribute(value);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, BrowserPlatformLocation, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_OPTIONS, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf as NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, provideNetlifyLoader, registerLocaleData, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PlatformNavigation as ɵPlatformNavigation, getDOM as ɵgetDOM, normalizeQueryParams as ɵnormalizeQueryParams, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v19.0.4\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, inject, NgZone, runInInjectionContext, InjectionToken, ɵPendingTasksInternal, PLATFORM_ID, ɵConsole, ɵformatRuntimeError, Inject, ɵRuntimeError, makeEnvironmentProviders, NgModule, TransferState, makeStateKey, ɵperformanceMarkFeature, APP_BOOTSTRAP_LISTENER, ApplicationRef, ɵtruncateMiddle } from '@angular/core';\nimport { of, Observable, from } from 'rxjs';\nimport { concatMap, filter, map, finalize, switchMap, tap } from 'rxjs/operators';\nimport * as i1 from '@angular/common';\nimport { isPlatformServer, DOCUMENT, ɵparseCookieValue } from '@angular/common';\n\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /**\n * Internal map of lowercase header names to values.\n */\n // TODO(issue/24571): remove '!'.\n headers;\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n normalizedNames = new Map();\n /**\n * Complete the lazy initialization of this object (needed before reading).\n */\n lazyInit;\n /**\n * Queued updates to be materialized the next initialization.\n */\n lazyUpdate = null;\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach((line) => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n this.addHeaderEntry(name, value);\n }\n });\n };\n }\n else if (typeof Headers !== 'undefined' && headers instanceof Headers) {\n this.headers = new Map();\n headers.forEach((value, name) => {\n this.addHeaderEntry(name, value);\n });\n }\n else {\n this.lazyInit = () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertValidHeaders(headers);\n }\n this.headers = new Map();\n Object.entries(headers).forEach(([name, values]) => {\n this.setHeaderEntries(name, values);\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or override for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach((update) => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach((key) => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit = !!this.lazyInit && this.lazyInit instanceof HttpHeaders ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter((value) => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n addHeaderEntry(name, value) {\n const key = name.toLowerCase();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n setHeaderEntries(name, values) {\n const headerValues = (Array.isArray(values) ? values : [values]).map((value) => value.toString());\n const key = name.toLowerCase();\n this.headers.set(key, headerValues);\n this.maybeSetNormalizedName(name, key);\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys()).forEach((key) => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n/**\n * Verifies that the headers object has the right shape: the values\n * must be either strings, numbers or arrays. Throws an error if an invalid\n * header value is present.\n */\nfunction assertValidHeaders(headers) {\n for (const [key, value] of Object.entries(headers)) {\n if (!(typeof value === 'string' || typeof value === 'number') && !Array.isArray(value)) {\n throw new Error(`Unexpected value of the \\`${key}\\` header provided. ` +\n `Expecting either a string, a number or an array, but got: \\`${value}\\`.`);\n }\n }\n}\n\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1\n ? [codec.decodeKey(param), '']\n : [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s);\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n map;\n encoder;\n updates = null;\n cloneFrom = null;\n constructor(options = {}) {\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach((key) => {\n const value = options.fromObject[key];\n // convert the values to strings\n const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)];\n this.map.set(key, values);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach((param) => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach((_value) => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return (this.keys()\n .map((key) => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key)\n .map((value) => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter((param) => param !== '')\n .join('&'));\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach((key) => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach((update) => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n defaultValue;\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```ts\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n map = new Map();\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n body = null;\n /**\n * Outgoing headers for this request.\n */\n // TODO(issue/24571): remove '!'.\n headers;\n /**\n * Shared and mutable context that can be used by interceptors\n */\n context;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n *\n * Note: The `FetchBackend` doesn't support progress report on uploads.\n */\n reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n responseType = 'json';\n /**\n * The outgoing HTTP request method.\n */\n method;\n /**\n * Outgoing URL parameters.\n *\n * To pass a string representation of HTTP parameters in the URL-query-string format,\n * the `HttpParamsOptions`' `fromString` may be used. For example:\n *\n * ```\n * new HttpParams({fromString: 'angular=awesome'})\n * ```\n */\n // TODO(issue/24571): remove '!'.\n params;\n /**\n * The outgoing URL with all URL parameters set.\n */\n urlWithParams;\n /**\n * The HttpTransferCache option for the request\n */\n transferCache;\n constructor(method, url, third, fourth) {\n this.url = url;\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = third !== undefined ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n // We do want to assign transferCache even if it's falsy (false is valid value)\n this.transferCache = options.transferCache;\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n this.headers ??= new HttpHeaders();\n // If no context have been passed in, construct a new HttpContext instance.\n this.context ??= new HttpContext();\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : qIdx < url.length - 1 ? '&' : '';\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (typeof this.body === 'string' ||\n isArrayBuffer(this.body) ||\n isBlob(this.body) ||\n isFormData(this.body) ||\n isUrlSearchParams(this.body)) {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' ||\n typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' ||\n typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // Carefully handle the transferCache to differentiate between\n // `false` and `undefined` in the update args.\n const transferCache = update.transferCache ?? this.transferCache;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = update.body !== undefined ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = update.withCredentials ?? this.withCredentials;\n const reportProgress = update.reportProgress ?? this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = update.context ?? this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers = Object.keys(update.setHeaders).reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams).reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n transferCache,\n });\n }\n}\n\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n *\n * Note: The `FetchBackend` doesn't support progress report on uploads.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * All response headers.\n */\n headers;\n /**\n * Response status code.\n */\n status;\n /**\n * Textual description of response status code, defaults to OK.\n *\n * Do not depend on this.\n */\n statusText;\n /**\n * URL of the resource retrieved, or null if not available.\n */\n url;\n /**\n * Whether the status code falls in the 2xx range.\n */\n ok;\n /**\n * Type of the response, narrowed to either the full response or the header.\n */\n // TODO(issue/24571): remove '!'.\n type;\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n }\n type = HttpEventType.ResponseHeader;\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * The response body, or `null` if one was not returned.\n */\n body;\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.body = init.body !== undefined ? init.body : null;\n }\n type = HttpEventType.Response;\n clone(update = {}) {\n return new HttpResponse({\n body: update.body !== undefined ? update.body : this.body,\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n name = 'HttpErrorResponse';\n message;\n error;\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n ok = false;\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n/**\n * We use these constant to prevent pulling the whole HttpStatusCode enum\n * Those are the only ones referenced directly by the framework\n */\nconst HTTP_STATUS_CODE_OK = 200;\nconst HTTP_STATUS_CODE_NO_CONTENT = 204;\n/**\n * Http status codes.\n * As per https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml\n * @publicApi\n */\nvar HttpStatusCode;\n(function (HttpStatusCode) {\n HttpStatusCode[HttpStatusCode[\"Continue\"] = 100] = \"Continue\";\n HttpStatusCode[HttpStatusCode[\"SwitchingProtocols\"] = 101] = \"SwitchingProtocols\";\n HttpStatusCode[HttpStatusCode[\"Processing\"] = 102] = \"Processing\";\n HttpStatusCode[HttpStatusCode[\"EarlyHints\"] = 103] = \"EarlyHints\";\n HttpStatusCode[HttpStatusCode[\"Ok\"] = 200] = \"Ok\";\n HttpStatusCode[HttpStatusCode[\"Created\"] = 201] = \"Created\";\n HttpStatusCode[HttpStatusCode[\"Accepted\"] = 202] = \"Accepted\";\n HttpStatusCode[HttpStatusCode[\"NonAuthoritativeInformation\"] = 203] = \"NonAuthoritativeInformation\";\n HttpStatusCode[HttpStatusCode[\"NoContent\"] = 204] = \"NoContent\";\n HttpStatusCode[HttpStatusCode[\"ResetContent\"] = 205] = \"ResetContent\";\n HttpStatusCode[HttpStatusCode[\"PartialContent\"] = 206] = \"PartialContent\";\n HttpStatusCode[HttpStatusCode[\"MultiStatus\"] = 207] = \"MultiStatus\";\n HttpStatusCode[HttpStatusCode[\"AlreadyReported\"] = 208] = \"AlreadyReported\";\n HttpStatusCode[HttpStatusCode[\"ImUsed\"] = 226] = \"ImUsed\";\n HttpStatusCode[HttpStatusCode[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpStatusCode[HttpStatusCode[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpStatusCode[HttpStatusCode[\"Found\"] = 302] = \"Found\";\n HttpStatusCode[HttpStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpStatusCode[HttpStatusCode[\"NotModified\"] = 304] = \"NotModified\";\n HttpStatusCode[HttpStatusCode[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpStatusCode[HttpStatusCode[\"Unused\"] = 306] = \"Unused\";\n HttpStatusCode[HttpStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpStatusCode[HttpStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpStatusCode[HttpStatusCode[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpStatusCode[HttpStatusCode[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpStatusCode[HttpStatusCode[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpStatusCode[HttpStatusCode[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpStatusCode[HttpStatusCode[\"NotFound\"] = 404] = \"NotFound\";\n HttpStatusCode[HttpStatusCode[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpStatusCode[HttpStatusCode[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpStatusCode[HttpStatusCode[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpStatusCode[HttpStatusCode[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpStatusCode[HttpStatusCode[\"Conflict\"] = 409] = \"Conflict\";\n HttpStatusCode[HttpStatusCode[\"Gone\"] = 410] = \"Gone\";\n HttpStatusCode[HttpStatusCode[\"LengthRequired\"] = 411] = \"LengthRequired\";\n HttpStatusCode[HttpStatusCode[\"PreconditionFailed\"] = 412] = \"PreconditionFailed\";\n HttpStatusCode[HttpStatusCode[\"PayloadTooLarge\"] = 413] = \"PayloadTooLarge\";\n HttpStatusCode[HttpStatusCode[\"UriTooLong\"] = 414] = \"UriTooLong\";\n HttpStatusCode[HttpStatusCode[\"UnsupportedMediaType\"] = 415] = \"UnsupportedMediaType\";\n HttpStatusCode[HttpStatusCode[\"RangeNotSatisfiable\"] = 416] = \"RangeNotSatisfiable\";\n HttpStatusCode[HttpStatusCode[\"ExpectationFailed\"] = 417] = \"ExpectationFailed\";\n HttpStatusCode[HttpStatusCode[\"ImATeapot\"] = 418] = \"ImATeapot\";\n HttpStatusCode[HttpStatusCode[\"MisdirectedRequest\"] = 421] = \"MisdirectedRequest\";\n HttpStatusCode[HttpStatusCode[\"UnprocessableEntity\"] = 422] = \"UnprocessableEntity\";\n HttpStatusCode[HttpStatusCode[\"Locked\"] = 423] = \"Locked\";\n HttpStatusCode[HttpStatusCode[\"FailedDependency\"] = 424] = \"FailedDependency\";\n HttpStatusCode[HttpStatusCode[\"TooEarly\"] = 425] = \"TooEarly\";\n HttpStatusCode[HttpStatusCode[\"UpgradeRequired\"] = 426] = \"UpgradeRequired\";\n HttpStatusCode[HttpStatusCode[\"PreconditionRequired\"] = 428] = \"PreconditionRequired\";\n HttpStatusCode[HttpStatusCode[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpStatusCode[HttpStatusCode[\"RequestHeaderFieldsTooLarge\"] = 431] = \"RequestHeaderFieldsTooLarge\";\n HttpStatusCode[HttpStatusCode[\"UnavailableForLegalReasons\"] = 451] = \"UnavailableForLegalReasons\";\n HttpStatusCode[HttpStatusCode[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpStatusCode[HttpStatusCode[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpStatusCode[HttpStatusCode[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpStatusCode[HttpStatusCode[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpStatusCode[HttpStatusCode[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n HttpStatusCode[HttpStatusCode[\"HttpVersionNotSupported\"] = 505] = \"HttpVersionNotSupported\";\n HttpStatusCode[HttpStatusCode[\"VariantAlsoNegotiates\"] = 506] = \"VariantAlsoNegotiates\";\n HttpStatusCode[HttpStatusCode[\"InsufficientStorage\"] = 507] = \"InsufficientStorage\";\n HttpStatusCode[HttpStatusCode[\"LoopDetected\"] = 508] = \"LoopDetected\";\n HttpStatusCode[HttpStatusCode[\"NotExtended\"] = 510] = \"NotExtended\";\n HttpStatusCode[HttpStatusCode[\"NetworkAuthenticationRequired\"] = 511] = \"NetworkAuthenticationRequired\";\n})(HttpStatusCode || (HttpStatusCode = {}));\n\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n transferCache: options.transferCache,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n * TODO(adev): review\n * @usageNotes\n *\n * ### HTTP Request Example\n *\n * ```ts\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```ts\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```ts\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```ts\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n handler;\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, options.body !== undefined ? options.body : null, {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n transferCache: options.transferCache,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = (events$.pipe(filter((event) => event instanceof HttpResponse)));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HttpClient });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: HttpHandler }] });\n\nconst XSSI_PREFIX$1 = /^\\)\\]\\}',?\\n/;\nconst REQUEST_URL_HEADER = `X-Request-URL`;\n/**\n * Determine an appropriate URL for the response, by checking either\n * response url or the X-Request-URL header.\n */\nfunction getResponseUrl$1(response) {\n if (response.url) {\n return response.url;\n }\n // stored as lowercase in the map\n const xRequestUrl = REQUEST_URL_HEADER.toLocaleLowerCase();\n return response.headers.get(xRequestUrl);\n}\n/**\n * Uses `fetch` to send requests to a backend server.\n *\n * This `FetchBackend` requires the support of the\n * [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) which is available on all\n * supported browsers and on Node.js v18 or later.\n *\n * @see {@link HttpHandler}\n *\n * @publicApi\n */\nclass FetchBackend {\n // We use an arrow function to always reference the current global implementation of `fetch`.\n // This is helpful for cases when the global `fetch` implementation is modified by external code,\n // see https://github.com/angular/angular/issues/57527.\n fetchImpl = inject(FetchFactory, { optional: true })?.fetch ?? ((...args) => globalThis.fetch(...args));\n ngZone = inject(NgZone);\n handle(request) {\n return new Observable((observer) => {\n const aborter = new AbortController();\n this.doRequest(request, aborter.signal, observer).then(noop, (error) => observer.error(new HttpErrorResponse({ error })));\n return () => aborter.abort();\n });\n }\n async doRequest(request, signal, observer) {\n const init = this.createRequestInit(request);\n let response;\n try {\n // Run fetch outside of Angular zone.\n // This is due to Node.js fetch implementation (Undici) which uses a number of setTimeouts to check if\n // the response should eventually timeout which causes extra CD cycles every 500ms\n const fetchPromise = this.ngZone.runOutsideAngular(() => this.fetchImpl(request.urlWithParams, { signal, ...init }));\n // Make sure Zone.js doesn't trigger false-positive unhandled promise\n // error in case the Promise is rejected synchronously. See function\n // description for additional information.\n silenceSuperfluousUnhandledPromiseRejection(fetchPromise);\n // Send the `Sent` event before awaiting the response.\n observer.next({ type: HttpEventType.Sent });\n response = await fetchPromise;\n }\n catch (error) {\n observer.error(new HttpErrorResponse({\n error,\n status: error.status ?? 0,\n statusText: error.statusText,\n url: request.urlWithParams,\n headers: error.headers,\n }));\n return;\n }\n const headers = new HttpHeaders(response.headers);\n const statusText = response.statusText;\n const url = getResponseUrl$1(response) ?? request.urlWithParams;\n let status = response.status;\n let body = null;\n if (request.reportProgress) {\n observer.next(new HttpHeaderResponse({ headers, status, statusText, url }));\n }\n if (response.body) {\n // Read Progress\n const contentLength = response.headers.get('content-length');\n const chunks = [];\n const reader = response.body.getReader();\n let receivedLength = 0;\n let decoder;\n let partialText;\n // We have to check whether the Zone is defined in the global scope because this may be called\n // when the zone is nooped.\n const reqZone = typeof Zone !== 'undefined' && Zone.current;\n // Perform response processing outside of Angular zone to\n // ensure no excessive change detection runs are executed\n // Here calling the async ReadableStreamDefaultReader.read() is responsible for triggering CD\n await this.ngZone.runOutsideAngular(async () => {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n receivedLength += value.length;\n if (request.reportProgress) {\n partialText =\n request.responseType === 'text'\n ? (partialText ?? '') +\n (decoder ??= new TextDecoder()).decode(value, { stream: true })\n : undefined;\n const reportProgress = () => observer.next({\n type: HttpEventType.DownloadProgress,\n total: contentLength ? +contentLength : undefined,\n loaded: receivedLength,\n partialText,\n });\n reqZone ? reqZone.run(reportProgress) : reportProgress();\n }\n }\n });\n // Combine all chunks.\n const chunksAll = this.concatChunks(chunks, receivedLength);\n try {\n const contentType = response.headers.get('Content-Type') ?? '';\n body = this.parseBody(request, chunksAll, contentType);\n }\n catch (error) {\n // Body loading or parsing failed\n observer.error(new HttpErrorResponse({\n error,\n headers: new HttpHeaders(response.headers),\n status: response.status,\n statusText: response.statusText,\n url: getResponseUrl$1(response) ?? request.urlWithParams,\n }));\n return;\n }\n }\n // Same behavior as the XhrBackend\n if (status === 0) {\n status = body ? HTTP_STATUS_CODE_OK : 0;\n }\n // ok determines whether the response will be transmitted on the event or\n // error channel. Unsuccessful status codes (not 2xx) will always be errors,\n // but a successful status code can still result in an error if the user\n // asked for JSON data and the body cannot be parsed as such.\n const ok = status >= 200 && status < 300;\n if (ok) {\n observer.next(new HttpResponse({\n body,\n headers,\n status,\n statusText,\n url,\n }));\n // The full body has been received and delivered, no further events\n // are possible. This request is complete.\n observer.complete();\n }\n else {\n observer.error(new HttpErrorResponse({\n error: body,\n headers,\n status,\n statusText,\n url,\n }));\n }\n }\n parseBody(request, binContent, contentType) {\n switch (request.responseType) {\n case 'json':\n // stripping the XSSI when present\n const text = new TextDecoder().decode(binContent).replace(XSSI_PREFIX$1, '');\n return text === '' ? null : JSON.parse(text);\n case 'text':\n return new TextDecoder().decode(binContent);\n case 'blob':\n return new Blob([binContent], { type: contentType });\n case 'arraybuffer':\n return binContent.buffer;\n }\n }\n createRequestInit(req) {\n // We could share some of this logic with the XhrBackend\n const headers = {};\n const credentials = req.withCredentials ? 'include' : undefined;\n // Setting all the requested headers.\n req.headers.forEach((name, values) => (headers[name] = values.join(',')));\n // Add an Accept header if one isn't present already.\n if (!req.headers.has('Accept')) {\n headers['Accept'] = 'application/json, text/plain, */*';\n }\n // Auto-detect the Content-Type header if one isn't present already.\n if (!req.headers.has('Content-Type')) {\n const detectedType = req.detectContentTypeHeader();\n // Sometimes Content-Type detection fails.\n if (detectedType !== null) {\n headers['Content-Type'] = detectedType;\n }\n }\n return {\n body: req.serializeBody(),\n method: req.method,\n headers,\n credentials,\n };\n }\n concatChunks(chunks, totalLength) {\n const chunksAll = new Uint8Array(totalLength);\n let position = 0;\n for (const chunk of chunks) {\n chunksAll.set(chunk, position);\n position += chunk.length;\n }\n return chunksAll;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: FetchBackend });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: FetchBackend, decorators: [{\n type: Injectable\n }] });\n/**\n * Abstract class to provide a mocked implementation of `fetch()`\n */\nclass FetchFactory {\n}\nfunction noop() { }\n/**\n * Zone.js treats a rejected promise that has not yet been awaited\n * as an unhandled error. This function adds a noop `.then` to make\n * sure that Zone.js doesn't throw an error if the Promise is rejected\n * synchronously.\n */\nfunction silenceSuperfluousUnhandledPromiseRejection(promise) {\n promise.then(noop, noop);\n}\n\nfunction interceptorChainEndFn(req, finalHandlerFn) {\n return finalHandlerFn(req);\n}\n/**\n * Constructs a `ChainedInterceptorFn` which adapts a legacy `HttpInterceptor` to the\n * `ChainedInterceptorFn` interface.\n */\nfunction adaptLegacyInterceptorToChain(chainTailFn, interceptor) {\n return (initialRequest, finalHandlerFn) => interceptor.intercept(initialRequest, {\n handle: (downstreamRequest) => chainTailFn(downstreamRequest, finalHandlerFn),\n });\n}\n/**\n * Constructs a `ChainedInterceptorFn` which wraps and invokes a functional interceptor in the given\n * injector.\n */\nfunction chainedInterceptorFn(chainTailFn, interceptorFn, injector) {\n return (initialRequest, finalHandlerFn) => runInInjectionContext(injector, () => interceptorFn(initialRequest, (downstreamRequest) => chainTailFn(downstreamRequest, finalHandlerFn)));\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken(ngDevMode ? 'HTTP_INTERCEPTORS' : '');\n/**\n * A multi-provided token of `HttpInterceptorFn`s.\n */\nconst HTTP_INTERCEPTOR_FNS = new InjectionToken(ngDevMode ? 'HTTP_INTERCEPTOR_FNS' : '');\n/**\n * A multi-provided token of `HttpInterceptorFn`s that are only set in root.\n */\nconst HTTP_ROOT_INTERCEPTOR_FNS = new InjectionToken(ngDevMode ? 'HTTP_ROOT_INTERCEPTOR_FNS' : '');\n// TODO(atscott): We need a larger discussion about stability and what should contribute to stability.\n// Should the whole interceptor chain contribute to stability or just the backend request #55075?\n// Should HttpClient contribute to stability automatically at all?\nconst REQUESTS_CONTRIBUTE_TO_STABILITY = new InjectionToken(ngDevMode ? 'REQUESTS_CONTRIBUTE_TO_STABILITY' : '', { providedIn: 'root', factory: () => true });\n/**\n * Creates an `HttpInterceptorFn` which lazily initializes an interceptor chain from the legacy\n * class-based interceptors and runs the request through it.\n */\nfunction legacyInterceptorFnFactory() {\n let chain = null;\n return (req, handler) => {\n if (chain === null) {\n const interceptors = inject(HTTP_INTERCEPTORS, { optional: true }) ?? [];\n // Note: interceptors are wrapped right-to-left so that final execution order is\n // left-to-right. That is, if `interceptors` is the array `[a, b, c]`, we want to\n // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside\n // out.\n chain = interceptors.reduceRight(adaptLegacyInterceptorToChain, interceptorChainEndFn);\n }\n const pendingTasks = inject(ɵPendingTasksInternal);\n const contributeToStability = inject(REQUESTS_CONTRIBUTE_TO_STABILITY);\n if (contributeToStability) {\n const taskId = pendingTasks.add();\n return chain(req, handler).pipe(finalize(() => pendingTasks.remove(taskId)));\n }\n else {\n return chain(req, handler);\n }\n };\n}\nlet fetchBackendWarningDisplayed = false;\n/** Internal function to reset the flag in tests */\nfunction resetFetchBackendWarningFlag() {\n fetchBackendWarningDisplayed = false;\n}\nclass HttpInterceptorHandler extends HttpHandler {\n backend;\n injector;\n chain = null;\n pendingTasks = inject(ɵPendingTasksInternal);\n contributeToStability = inject(REQUESTS_CONTRIBUTE_TO_STABILITY);\n constructor(backend, injector) {\n super();\n this.backend = backend;\n this.injector = injector;\n // We strongly recommend using fetch backend for HTTP calls when SSR is used\n // for an application. The logic below checks if that's the case and produces\n // a warning otherwise.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !fetchBackendWarningDisplayed) {\n const isServer = isPlatformServer(injector.get(PLATFORM_ID));\n // This flag is necessary because provideHttpClientTesting() overrides the backend\n // even if `withFetch()` is used within the test. When the testing HTTP backend is provided,\n // no HTTP calls are actually performed during the test, so producing a warning would be\n // misleading.\n const isTestingBackend = this.backend.isTestingBackend;\n if (isServer && !(this.backend instanceof FetchBackend) && !isTestingBackend) {\n fetchBackendWarningDisplayed = true;\n injector\n .get(ɵConsole)\n .warn(ɵformatRuntimeError(2801 /* RuntimeErrorCode.NOT_USING_FETCH_BACKEND_IN_SSR */, 'Angular detected that `HttpClient` is not configured ' +\n \"to use `fetch` APIs. It's strongly recommended to \" +\n 'enable `fetch` for applications that use Server-Side Rendering ' +\n 'for better performance and compatibility. ' +\n 'To enable `fetch`, add the `withFetch()` to the `provideHttpClient()` ' +\n 'call at the root of the application.'));\n }\n }\n }\n handle(initialRequest) {\n if (this.chain === null) {\n const dedupedInterceptorFns = Array.from(new Set([\n ...this.injector.get(HTTP_INTERCEPTOR_FNS),\n ...this.injector.get(HTTP_ROOT_INTERCEPTOR_FNS, []),\n ]));\n // Note: interceptors are wrapped right-to-left so that final execution order is\n // left-to-right. That is, if `dedupedInterceptorFns` is the array `[a, b, c]`, we want to\n // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside\n // out.\n this.chain = dedupedInterceptorFns.reduceRight((nextSequencedFn, interceptorFn) => chainedInterceptorFn(nextSequencedFn, interceptorFn, this.injector), interceptorChainEndFn);\n }\n if (this.contributeToStability) {\n const taskId = this.pendingTasks.add();\n return this.chain(initialRequest, (downstreamRequest) => this.backend.handle(downstreamRequest)).pipe(finalize(() => this.pendingTasks.remove(taskId)));\n }\n else {\n return this.chain(initialRequest, (downstreamRequest) => this.backend.handle(downstreamRequest));\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HttpInterceptorHandler });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.0.4\", ngImport: i0, type: HttpInterceptorHandler, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: HttpBackend }, { type: i0.EnvironmentInjector }] });\n\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending