{"version":3,"sources":["webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/react-navigation-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/filters.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/cerego-toast.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/time-helper.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/assignment-details-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/paginated-instructional-items-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/modals/memory-bank-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/modals/instructional-item-viewer-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/partner-domains-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/partner-library-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/partner-user-tag-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/partner-user-tag-type-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/tag-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/user_metrics_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-activation-tokens-resource.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-annotations-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-attached-items-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-concepts-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/tips-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-course-assignments-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-course-groups-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-facets-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-group-courses-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-group-users-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-groups-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-images-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-item-facets-ordering-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-items-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-merge-requests-resource.js.coffee","webpack://Packs.[name]/./app/assets/images/v3/assignment_placeholder_60.png","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-my-courses-resource.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-my-email-resource.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-partner-courses-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-passwords-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-sentences-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-transliteration-distractors-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-user-metrics-exports-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-users-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-videos-resource.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/after-study-message-card.ts","webpack://Packs.[name]/./app/assets/javascripts/util/partner-user-roles-helper.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/assignment-card.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/button-dropdown.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/course-card.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/daily-polar-graph.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/dropdown.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/item-card.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/local-storage-tip-card.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/partner-user-roles-descriptions-card.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/password-input.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/progress-indicator-orbs.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/searchable-items-collection.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/smart-learn-card.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/weekly-bar-graph.js.coffee","webpack://Packs.[name]/./lib/assets/javascripts/cerego_sdk/shared_lib.js","webpack://Packs.[name]/./app/assets/javascripts/util/quill-helper.ts","webpack://Packs.[name]/./app/assets/images/v3/common/assignment-card-icon.svg","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/partner-account-resource.ts","webpack://Packs.[name]/./node_modules/moment/locale sync ar|de|es|fr|ja","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-instructional-presentations-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3_sets_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-course-sets-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3_series_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-oauth-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/wysiwyg.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-session-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/course-items-resource.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/tooltip.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/goal-triangle.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/learner-dashboard-card.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/mini-memory-bank.js.coffee","webpack://Packs.[name]/./app/javascript/packs/v3-common-shim.js","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources sync nonrecursive ^\\.\\/.*$","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives sync nonrecursive ^\\.\\/.*$","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/modals sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/modals/add-users-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/modals/course-info-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/progress-card.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/modals/edit-quiz-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/helpers sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/helpers/instructor-names-helper.js","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/helpers/smart-group-rule-helper.js","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/group-context-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/smart-group-rule-editor-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/v3-passage-highlighting-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/v3-vocab-highlighting-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/filters.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/milestone-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/user-csv-uploader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/milestones-list.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/milestone.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/progress-bar.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3_concept_distractors_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/directives/tip-card.ts"],"names":["angular","service","$rootScope","$window","$routeParams","DebugHelper","setLearnURLService","$scope","$new","register","getBaseReactUrl","process","env","APP_HOST","window","location","origin","baseReactUrl","navigateToReactCourseDetailPage","courseId","url","getReturnUrl","fromEmbed","open","navigateToReactPage","path","returnUrl","URLSearchParams","search","get","getCourseId","getV4CourseUrl","navigateToUserProfile","userId","ceregoCommon","filter","text","replace","$sce","$filter","trustAsHtml","toString","$","html","object","attr","trustAsUrl","trustAsResourceUrl","input","encodeURIComponent","batchSize","filtered","push","element","_","reject","el","image","defaultImage","cost","toFixed","bool","number","Math","max","floor","decimal","maxLength","length","substring","isString","facets","sortBy","facet","anchor","sequence_node","position","isEmpty","dateText","locale","data","Date","toLocaleDateString","month","day","year","classes","check","field","toLowerCase","item","template","template_type","title","text_html","some","association_label","annotations","annotation","caption","sentences","sentence","transliteration_html","translation_html","module","name","names","split","first_last","slice","keys","ceregoToast","config","$mdToastProvider","addPreset","options","templateUrl","Packs","iKnowRoutes","toast_v3_templates_path","controller","locals","type","message","$mdToast","showToast","defaults","show","debug","secondsPerMinute","secondsPerHour","secondsPerDay","assignIn","secToString","sec","msecToString","msec","duration","moment","years","out","humanize","months","days","hours","minutes","seconds","round","roundTo","n","k","$route","$q","V3ModelHelper","V3SetsResource","V3SeriesResource","V3CourseSetsResource","CourseContextService","assignment","assignmentType","deferred","reset","setDueState","dueState","dueDate","meta","progress","initialize","current","$assignment_type","defer","assignment_id","set_id","setId","series_id","seriesId","id","course_id","include","success","parse","resolve","promise","V3CourseItemsResource","V3SetItemsResource","V3SeriesItemsResource","resources","activeTab","defaultOptions","sort","defaultResourceImage","lastOptions","getPaginatedResults","resource","query","loading","instructional_items","includeMeta","each","show_path","v3_learn_course_instructional_item_path","MemoryStorage","setContext","sessionContextId","sessionContextType","loadScopeFromModalOptions","user","this","modalOptions","course","$on","e","learnButtonLoaded","module_type","SessionSettings","V3InstructionalPresentationsResource","uiState","getCurrentTime","toISOString","setUIState","pdfAnnotation","find","attributes","embedItemType","fullInstructionalEmbed","alreadySeen","markAsDone","params","study_time_millis","getStudyDuration","session_guid","studySessionId","item_id","occurred_at","create","endTime","now","startTime","factory","$resource","index","method","isArray","APIRoutes","v3_partner_partner_domains_path","partner_id","update","v3_partner_domain_path","remove","v3_partner_partner_library_path","v3_partner_user_tag_type_partner_user_tags_path","partner_user_tag_type_id","v3_partner_partner_user_tag_type_path","v3_partner_user_tag_path","v3_partner_partner_user_tag_types_path","destroy","v3_tag_type_tags_path","tag_type_id","v3_user_metrics_path","v3_activation_token_path","activation_token","v3_annotation_path","v3_item_annotations_path","delete","v3_item_attached_items_path","v3_item_attached_item_path","attached_item_id","v3_concept_path","v3_concept_distractors_path","concept_id","v3_my_tips_path","v3_my_tip_path","tip_id","v3_course_assignments_path","bulk_update","bulk_destroy","v3_course_groups_path","v3_course_group_path","v3_facet_path","v3_item_facets_path","v3_group_courses_path","group_id","v3_group_users_path","v3_group_user_path","v3_partner_groups_path","v3_group_path","smart_group_preview","v3_partner_smart_group_preview_path","v3_image_path","v3_images_path","v3_item_facets_ordering_path","v3_item_path","v3_set_items_path","clone","clone_v3_item_path","v3_merge_request_path","exports","v3_my_courses_path","send_token","send_confirmation_token_v3_my_email_path","verify_token","verify_confirmation_token_v3_my_email_path","v3_partner_course_path","v3_password_path","v3_passwords_path","v3_sentence_path","v3_item_sentences_path","v3_facet_transliteration_distractors_path","facet_id","v3_transliteration_distractor_path","v3_user_metrics_export_path","v3_user_metrics_exports_path","v3_users_path","v3_user_path","transcription","transcription_v3_video_path","directive","restrict","scope","context","contextId","common_v3_templates_path","V3AfterStudyMessagesResource","stateUI","showPostStudyCard","newMemoryCount","fadingMemoryCount","set_ids","new_memory_count","fading_memory_count","postStudyCardHeaderMessage","header","postStudyCardDetailMessage","getPartnerUserRoles","isNewNav","role","ability","role_name","roleInfo","leftColor","rightColor","percent","setGradient","css","color_percent","gradient_values","join","link","attrs","$watch","isNumber","$location","MemoryBankLevelsService","assignmentDetailsPath","assignmentLearnPath","levelValue","levelNew","levels","intLevel","levelBuilding","levelOne","levelTwo","levelThree","levelFour","levelMastery","defaultIconImage","setBackgroundImageGradient","score","parseFloat","setNumberItemsToStudy","unstarted","fading","studyType","CeregoSharedLib","studyTypes","RECOMMENDED","percentStarted","started","sessionSizes","sessionSizeParts","itemsToLearn","min","fadingItems","pastDue","isGoodForNow","isScorm","isAssessment","isSurvey","v3_learn_set_path","quiz_v2_set_learn_path","getUrl","parseInt","version","fromPath","pathname","learnPath","URL","searchParams","append","v3_learn_series_path","quiz_v2_series_learn_path","component","transclude","bindings","dropdownDisabled","buttonStyle","$ctrl","dismissDropdownHandler","event","$apply","dropdown","click","unbind","flag","toggleShowDropdown","$event","preventDefault","stopPropagation","oldDropdownSetting","showDropdown","$broadcast","$analytics","toastHelper","V3CourseUsersResource","UserManager","StudyItemsService","ModalService","cardClick","href","v3_learn_course_path","showModal","unenroll","currentUser","eventTrack","failure","logError","enroll","user_id","loadStudyItem","then","studyItem","hourBegin","classNames","tooltipDirection","arcs","d3","layout","pie","maxRadius","maxSliceRadius","colorIntensity","tooltips","setMostEfficientDay","maxEfficiency","efficiency","mostEfficientIndex","indexOf","setUpGraph","svg","select","selectAll","on","addClass","removeClass","heading","direction","classname","updateGraph","popularity","arc","innerRadius","outerRadius","maxPopularity","radius","colorClass","ceil","classed","removeAttr","transition","ease","newVal","oldVal","buttonOptions","optionDisplayPath","currentSelection","onSelection","onSelectionArgs","displayOption","option","selectOption","$element","V3ContentService","V3ItemValidatorService","indexFontSize","card","scrollIntoView","filterText","getFacetQuizzes","quiz","quizzes","match","multiple_choice","fill_in_the_blank","click_in_the_dark","application_question_select","sequence_injection","getFacetNum","totalFacets","getFacetName","getQuizNum","totalQuizzes","suffix","reduce","sum","enabled","count","with_count","slug","getFacetNameForIndex","relationships","getTemplateType","getIncompleteName","getMissingAssociationName","getMissingAnchorName","getItemTypeName","hasAssociation","hasAnchor","canShowFacets","includes","localStorageService","key","respawnMilliseconds","localStorageKey","lastShown","getTime","set","SiteNavigationService","roles","isV4Embed","ngModel","placeholder","minlength","hideIcon","DEFAULT_PLACEHOLDER","passwordHidden","toggleShowPassword","onPasswordChanged","$emit","$onInit","$timeout","progressIndicatorOrbs","orbs","isActive","isComplete","routes","searchOptions","loadItems","items","contextType","V4RecommendedSetsResource","loaded","recommendedTab","valid","buttonClass","scormPackageId","goodForNowTab","fadingTab","showRecommendedTab","showTab","showFadingTab","tab","loadCard","include_scorm","parsedSuccess","tabScope","setID","setAttrs","Object","assign","skipModal","buttonText","cta","bodyTextHtml","description","daySlugs","getPercentageFromPopularity","map","value","percentageArray","elements","percentage","elm","animate","height","MAX_NEW_ITEMS","MAX_BURDEN","FADING","new_item_count","fading_item_count","sessionSize","parts","Inline","Quill","Link","Keyboard","tagName","sanitize","createWysiwygQuill","containerElem","toolbarElem","modules","formula","toolbar","keyboard","theme","overrideEnterKey","quill","handlerFunction","addBinding","ENTER","handler","v3_partner_account_path","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","v3_my_instructional_presentations_path","v3_sets_path","v3_set_path","save","v3_course_sets_path","v3_course_set_path","v3_series_path","authenticate","authenticate_v3_oauth_index_path","v3_oauth_path","provider","includeLinks","includeLists","includeUnderline","model","onPaste","autofocus","onChange","onFocus","hideToolbar","autowidth","onEnterKey","editorChanged","bottomBarHeight","minHeight","currentWidth","updateWidth","quillElem","root","innerHTML","style","width","clientWidth","children","clipboard","dangerouslyPasteHTML","setTimeout","bind","$digest","newText","oldText","content","setText","delta","oldDelta","source","innerText","trim","$applyAsync","addEventListener","focus","v3_sessions_path","v3_course_items_path","$compile","toggle","size","handleClick","toggleClass","toggled","hover","goalReached","getLevelClass","contextProgress","contextLevel","nextStudyTime","firstTimeCompleted","timeHelper","GoalMathHelper","MySetsResource","AssignmentDetailsService","LtiService","currentMode","FIRST_TIME_UNSTARTED","START_MORE_ITEMS","GOOD_FOR_NOW","FADING_ONLY","PROGRESS_COMPLETED","ONE_DAY_IN_MS","launchGoodForNow","returnURL","embed","showGoMobile","modalType","startLearning","continueLearning","toggleSchedule","unSchedule","addToSchedule","confirmUnschedule","removeFromSchedule","confirm_key","isBBC","confirmation_key","setNextRecommendedModule","nextModule","title_key","unstartedCount","fadingCount","durationString","sessionLengthSec","isUndefined","primaryCollection","totalMemoriesCount","estimatedStudyTimeLower","estimateRangeLower","estimatedStudyTimeUpper","levelToDaysConversion","asMilliseconds","lastStudyTime","progressVisual","MemoryBankAssetHelper","MODULE_RADIUS","WELCOME","WELCOME_BACK","ENCOURAGING","drop","forMobile","preloadedOrbs","prepareFacet","orb_type","level_slug","binContinuousLevel","level","review_interval","prepareModule","slugLevel","defaultModuleOrb","tick","selection","force","d","startTick","random","alpha","node","weight","x","target","y","bb","top","bottom","call","moveToPosition","updateSVG","totalLevels","totalLevelsExcludeUnstarted","scoring_goal","lockedLevelSize","nextLockedLevel","unlockedLevels","minLevel","svgDimensions","left","right","orb","domain","concat","range","times","i","xScale","scale","linear","yScale","keyFn","learning_engine_guid","enter","createOrb","cx","cy","r","stop","nodes","gravity","charge","friction","chargeDistance","resetAnimation","setTargetPosition","console","log","doAnimate","start","background","selected","links","calculateFinalPosition","orbRetention","finalPosition","current_retention","average_current_retention","setSourcePosition","preload","sourceOrb","sourcePosition","transform","px","py","fixed","module_id","preserveAspectRatio","loadData","constraints","loadUser","memoryBankModalOptions","lastConstraints","getLastConstraints","isEqual","preloadConstraints","omit","loadMemoryStorageData","drawData","load","response","memoriesLength","memories","showLearnButton","cloneDeep","m","error","prepareMiniMemoryBank","querySelector","forceAssignmentContext","context_type","forEach","PartnerUsersResource","paginatedLearnersService","myPartnersService","AmplitudeService","step","send_email","optionsToAdd","addByEmail","addByMemberId","showSendEmailOption","showInviteOptions","invite_list","error_invites","success_list","selectAddMethod","choice","addMethod","setShowSendEmailOption","toggleOptions","addUsers","is_instructor","userCreationPromises","obj","send_email_invite","enrolled_via","email","member_id","userResourceCreate","$promise","objectName","allSettled","createResponses","successResponses","partition","state","errorResponses","res","hash","correct","reason","trackAddUsersToCourse","markRefreshRequired","user_type","addSingleUser","invite","singular_user_type","userCount","eventAction","category","label","logEvent","curry","currentProductPartner","InstructorNamesHelper","paginatedAssignmentsService","listTemplatePath","loadingTemplatePath","partners_v3_templates_path","activeAssignment","styles","fullRow","showSearchInsideList","tabs","setCurrentAssignment","serviceOptions","instructorNames","getFormattedInstructorNames","headingText","assignment_count","percent_progress","hasLevelGoal","level_goal","days_to_achieve","V3VocabHighlightingService","V3PassageHighlightingService","V3SmartAutoSaveService","V3TransliterationDistractorsResource","QuizNameService","V3ConceptsResource","V3ConceptDistractorsResource","V3RegionContentService","V3RegionsService","CombiningMarksService","SentenceConverter","transliterationDistractors","answer","manualDistractors","IMAGE_DISTRACTORS_COUNT","TEXT_DISTRACTORS_COUNT","SEQUENCE_DISTRACTOR_COUNT","QUESTION_REGION_MAX_HEIGHT","ANSWER_REGION_MAX_HEIGHT","VOCAB_QUIZ_SPACES","imageQuiz","autogenDistractorsAllowed","templateTypes","iconClass","cardSides","dataModel","distractors","association","toggleNota","setImageQuiz","setAutogenDistractorsAllowed","distractorsRequired","hasNOTA","questionHasQuestionMark","question","quizQuestion","insertBlankInPassage","questionSide","firstSentence","insertBlankInSentence","fibContent","stripMarks","char","killDistractor","distractor","pull","showImageQuiz","answerSide","showImageAsQuestion","removeDistractor","setSaveForAttributes","registerSaveItem","sentenceAudio","saveNewDistractor","splice","addDistractor","distractorAmount","saveDistractors","initializeSVG","regionName","regionStyle","updateRegions","polygonData","polygons","regionHighlight","points","class","exit","createRegionHighlight","regionsToShow","t","answerSideSlug","instructor_names","instructor_one","instructor_two","instructor_three","extra_instructors_count","COMPARATORS","EQUALS","NOT_EQUALS","generateRuleString","group","rules_json","JSON","rule_strings","AND","rule_json","comparator_symbol","translate_params","tag_type_label","parseRulesJson","comparator","V3GroupsResource","getGroupId","checkForRefresh","resetGroup","refreshRequired","fetchGroup","childRefreshRequired","removeChildRefreshRequired","comparators","rules","validRules","beforePreview","pendingPreview","previewMembersHeaderString","previewMembersString","validateAllRules","every","rule","has","addRule","deleteRule","debouncedPreviewGroupMembers","ruleAsJson","json","previewGroupMembers","stringify","previewMembersCount","userStrings","buildRulesJson","debounce","trailing","cloze","passageText","clozeOffset","offset","clozeLength","filterStars","html2markup","a","facet_data","date","iFrameMessageService","V3MyMilestonesResource","previousMilestones","currentModule","checkNewBadgeUnlocked","milestones","milestone","postMessage","messageType","milestoneType","loadMilestones","UserCsvUploadsResource","user_csv_upload_id","finished_state","dry_run","onSuccess","csvUpload","notify","parse_background","controllerAs","milestoneService","that","assignmentProgress","assignmentLevel","isNull","setMilestoneNameAndType","setProgress","showProgressBar","percentProgress","completed","firstunlocked","faded","styleType","$interval","countProgress","cancel","progressCounter","TipsResource","tipPromises","tips","tipsResponse","_a","dismiss","tipId","status","tipService","tipSlug","tipCategory","hide","tip"],"mappings":"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","file":"js/v3-common-shim-4f768273b5d408dab4a1.chunk.js","sourcesContent":["import * as angular from 'angular';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\n\nexport interface IReactNavigationService extends ng.IScope {\n getBaseReactUrl: () => void;\n navigateToReactCourseDetailPage: (courseId) => void;\n navigateToReactPage: (path) => void;\n getCourseId: () => string;\n getV4CourseUrl: () => string;\n getReturnUrl: () => string;\n navigateToUserProfile: (userId: string) => void;\n}\n\nangular.module('cerego.common').service('reactNavigationService', [\n '$rootScope',\n '$window',\n '$routeParams',\n 'DebugHelper',\n 'setLearnURLService',\n ($rootScope: ng.IRootScopeService, $window, $routeParams, DebugHelper: IDebugHelper, setLearnURLService) => {\n const $scope = $rootScope.$new() as IReactNavigationService;\n\n DebugHelper.register('reactNavigationService', $scope);\n\n $scope.getBaseReactUrl = () => {\n const developmentUrl = process.env.APP_HOST || 'http://localhost:3002';\n return process.env.NODE_ENV === 'development' ? developmentUrl : `${window.location.origin}`;\n };\n\n const baseReactUrl = $scope.getBaseReactUrl();\n\n $scope.navigateToReactCourseDetailPage = courseId => {\n const url = baseReactUrl + setLearnURLService.getReturnUrl('/courses/' + courseId, { fromEmbed: false });\n $window.open(url, '_parent');\n };\n\n $scope.navigateToReactPage = path => {\n window.open(`${baseReactUrl}/app/nav${path}`, '_parent');\n };\n\n $scope.getReturnUrl = () => {\n const urlParams = new URLSearchParams($window.location.search);\n const returnUrl = urlParams.get('returnUrl');\n return returnUrl ? `${baseReactUrl}${returnUrl}` : null;\n };\n\n $scope.getCourseId = () => {\n return $routeParams.courseId;\n };\n\n $scope.getV4CourseUrl = () => {\n return `${baseReactUrl}/app/nav/courses/${$scope.getCourseId()}`;\n };\n\n $scope.navigateToUserProfile = (userId: string) => {\n const url = `${baseReactUrl}/app/nav/user/${userId}`;\n $window.open(url, '_parent');\n };\n\n return $scope;\n }\n]);\n","ceregoCommon.filter('hardNewlines', [->\n (text) ->\n (text || \"\").replace(/\\n/g, \"
\")\n])\n\nceregoCommon.filter('htmlSafe', ['$sce', '$filter', ($sce, $filter) ->\n (text) ->\n $sce.trustAsHtml($filter('hardNewlines')(text).toString())\n])\n\nceregoCommon.filter('stripNewLines', [->\n (text) ->\n (text || \"\").replace(/\\n|\\r/g, '')\n])\n\nceregoCommon.filter('stripHTML', [->\n (text) ->\n $(\"
\").html(text || \"\").text()\n])\n\nceregoCommon.filter('unstripHTML', [->\n (text) ->\n $(\"
\").text(text || \"\").html()\n])\n\nceregoCommon.filter('setCreateDimensions', [->\n (text) ->\n object = $(text || \"\")\n object.attr('width', '100%')\n object.attr('height', '400px')\n (object[0]?.outerHTML ? text) ? ''\n])\n\nceregoCommon.filter('trustedAsUrl', ['$sce', ($sce) ->\n (url) ->\n $sce.trustAsUrl(url)\n])\n\nceregoCommon.filter('trustedAsResourceUrl', ['$sce', ($sce) ->\n (url) ->\n $sce.trustAsResourceUrl(url)\n])\n\nceregoCommon.filter('encodeURIComponent', ['$window', ($window) ->\n (input) ->\n $window.encodeURIComponent(input)\n])\n\nceregoCommon.filter('inBatches', [->\n (input, batchSize) ->\n filtered = []\n for element in input by batchSize\n filtered.push element\n filtered\n])\n\nceregoCommon.filter('without', [->\n (input, element) ->\n _.reject input, (el) -> el == element\n])\n\nceregoCommon.filter('imagePresence', [->\n (image, defaultImage) ->\n image?.url || image?.data?.attributes?.url || defaultImage\n])\n\nceregoCommon.filter('centsToDollars', [->\n (cost) ->\n (cost/100).toFixed(2)\n])\n\nceregoCommon.filter('convertToBoolean', [->\n (bool) ->\n if bool == \"false\" || bool == \"0\"\n false\n else\n !!bool\n])\n\nceregoCommon.filter('levelRoundDown', [->\n (number) ->\n if number <= 0 then (0).toFixed(1) else Math.max(0.1, (Math.floor(number * 10) / 10)).toFixed(1)\n])\n\nceregoCommon.filter('convertProgressToInteger', [->\n (number) ->\n return 1 if number > 0 && number < 0.01 # If there is some progress always show at least 1%\n _.floor(number * 100)\n])\n\nceregoCommon.filter('decimalToPercentage', [->\n (decimal) ->\n Math.floor(decimal * 100).toFixed(0)\n])\n\nceregoCommon.filter('ellipsis', [->\n (text, maxLength) ->\n if text && text.length > maxLength\n text.substring(0, maxLength) + \"...\"\n else\n text\n])\n\nceregoCommon.filter('presence', [->\n (text) ->\n _.isString(text) && text.length > 0\n])\n\nceregoCommon.filter('sortedForSequence', [->\n (facets) ->\n _.sortBy(facets, (facet) -> facet.anchor.sequence_node.position)\n])\n\nceregoCommon.filter('isEmpty', [->\n (object) ->\n _.isEmpty(object)\n])\n\nceregoCommon.filter('localizeDateFormat', [ ->\n (dateText) ->\n locale = angular.element(\"body\").data(\"locale\") || \"en\"\n date = new Date(dateText)\n date.toLocaleDateString(locale, {month: \"long\", day: \"numeric\", year: \"numeric\"})\n])\n\nceregoCommon.filter('localizeDateWithOutYear', [ ->\n (dateText) ->\n locale = angular.element(\"body\").data(\"locale\") || \"en\"\n date = new Date(dateText)\n date.toLocaleDateString(locale, {month: \"long\", day: \"numeric\"})\n])\n\nceregoCommon.filter('textShrinkClasses', [->\n (text) ->\n classes = []\n if text\n classes.push(\"study--concept-long\") if text.length > 900\n classes.push(\"study--concept-left-align\") if text.length > 400\n return classes\n])\n\nceregoCommon.filter('filterItemsText', ['$filter', ($filter) ->\n (input, text) ->\n check = (field) ->\n !_.isEmpty(field) && $filter('filter')([field.toLowerCase()], text.toLowerCase()).length > 0\n\n if _.isEmpty(text)\n input\n else\n _.filter(input, (item) ->\n template = item[item.template_type]\n check(template?.title) || check(item.text) || check(template?.concept?.text_html) || _.some(template.facets, (facet) ->\n check(facet.association_label) ||\n check(facet.anchor.concept?.text_html) ||\n check(facet.association.concept?.text_html)\n ) || _.some(item.annotations, (annotation) ->\n check(annotation.text_html) ||\n check(annotation.caption)\n ) || _.some(item.sentences, (sentence) ->\n check(sentence.text_html) ||\n check(sentence.transliteration_html) ||\n check(sentence.translation_html)\n )\n )\n])\n\nceregoCommon.filter('filterName', ['$filter', ($filter) ->\n (input, text) ->\n check = (field) ->\n !_.isEmpty(field) && $filter('filter')([field.toLowerCase()], text.toLowerCase()).length > 0\n\n if _.isEmpty(text)\n input\n else\n _.filter(input, (module) ->\n name = module?.attributes?.name\n check(name)\n )\n])\n\nceregoCommon.filter('nameInitialHtml', ['$filter', ($filter) ->\n (name) ->\n names = name.split(/\\s+/)\n if names.length == 1\n if names[0][0] == '(' # \"(anonymous)\" users\n \"\"\n else\n names[0][0]\n else if names.length == 3 #hi ASL\n names[0][0] + names[1][0] + names[2][0]\n else\n first_last = [names[0], names.slice(-1)[0]]\n first_last[0][0] + first_last[1][0]\n])\n\nceregoCommon.filter('dig', [->\n (object, keys) ->\n _.get(object, keys)\n])\n","import 'angular-material'\n\nwindow.ceregoToast = angular.module(\"cerego.toast\", [\n \"ngMaterial\"\n])\n.config([\"$mdToastProvider\", ($mdToastProvider) ->\n $mdToastProvider.addPreset('simpleToast',\n options: ->\n templateUrl: Packs.iKnowRoutes.toast_v3_templates_path(\"simple_toast\")\n controller: 'simpleToastCtrl'\n locals:\n type: 'confirm'\n message: 'message'\n )\n]).service('toastHelper', ['$rootScope', 'DebugHelper', '$mdToast', ($rootScope, DebugHelper, $mdToast) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"toastHelper\", $scope)\n\n $scope.showToast = (name, options) ->\n options = _.defaults(options, position: \"bottom right\")\n $mdToast.show($mdToast[name](options))\n false\n\n $scope\n]).controller('simpleToastCtrl', ['$scope', 'DebugHelper', 'type', 'message', ($scope, DebugHelper, type, message) ->\n DebugHelper.register(\"simpleToastCtrl\", $scope)\n $scope.type = type\n $scope.message = message\n])\n","ceregoCommon.service(\"timeHelper\", ['$rootScope', '$filter', ($rootScope, $filter) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"timeHelper\"] = $scope\n\n secondsPerMinute = 60\n secondsPerHour = secondsPerMinute * 60\n secondsPerDay = secondsPerHour * 24\n secondsPerYear = secondsPerDay * 365\n\n _.assignIn $scope,\n secToString: (sec) ->\n $scope.msecToString(sec*1000)\n\n msecToString: (msec) ->\n duration = moment.duration(msec, \"ms\")\n if duration.years()\n out = moment.duration(duration.years(), \"year\").humanize()\n if duration.months() > 1\n out += ' ' + moment.duration(duration.months(), \"month\").humanize()\n else if duration.months()\n out = moment.duration(duration.months(), \"month\").humanize()\n if duration.days() > 1\n out += ' ' + moment.duration(duration.days(), \"day\").humanize()\n else if duration.days()\n out = moment.duration(duration.days(), \"day\").humanize()\n if duration.hours() > 1\n out += ' ' + moment.duration(duration.hours(), \"hour\").humanize()\n else if duration.hours()\n out = moment.duration(duration.hours(), \"hour\").humanize()\n if duration.minutes() > 1\n out += ' ' + moment.duration(duration.minutes(), \"minute\").humanize()\n else if duration.minutes()\n out = moment.duration(duration.minutes(), \"minute\").humanize()\n else if duration.seconds()\n out = moment.duration(duration.seconds(), \"seconds\").humanize()\n else\n out = $filter('translate')(\"js.memory_bank.less_than_a_second\")\n out\n\n round: (msec) ->\n roundTo = (n, k) ->\n Math.round(n / k) * k\n\n duration = moment.duration(Math.floor(msec), \"ms\")\n if duration.years()\n (duration.years() * 365 + roundTo(duration.days(), 365)) * secondsPerDay * 1000\n else if duration.days()\n (duration.days() * 24 + roundTo(duration.hours(), 24)) * secondsPerHour * 1000\n else if duration.hours()\n (duration.hours() * 60 + roundTo(duration.minutes(), 60)) * secondsPerMinute * 1000\n else if duration.minutes()\n (duration.minutes() * 60 + roundTo(duration.seconds(), 60)) * 1000\n else if duration.seconds()\n duration.seconds() * 1000\n else\n 1000\n])\n","ceregoCommon.service('AssignmentDetailsService', ['$filter', '$rootScope', '$route', '$routeParams', '$q', 'DebugHelper', 'V3ModelHelper', 'V3SetsResource', 'V3SeriesResource', 'V3CourseSetsResource', 'CourseContextService', ($filter, $rootScope, $route, $routeParams, $q, DebugHelper, V3ModelHelper, V3SetsResource, V3SeriesResource, V3CourseSetsResource, CourseContextService) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"AssignmentDetailsService\", $scope)\n\n _.assignIn $scope,\n assignment: null\n assignmentType: null\n deferred: null\n\n reset: () ->\n $scope.assignment = null\n $scope.deferred = null\n\n setDueState: () ->\n if $scope.assignment && $scope.assignment.meta?['due-at']\n $scope.assignment.dueState = \"due\"\n $scope.assignment.dueDate = $filter(\"localizeDateWithOutYear\")($scope.assignment.meta['due-at'])\n\n # complete\n if $scope.assignment.meta['memory-aggregate']?['progress'] == 1\n $scope.assignment.dueState = \"done\"\n # past due\n else if new Date() > new Date($scope.assignment.meta['due-at'])\n $scope.assignment.dueState = \"past-due\"\n # due within a week, start soon!\n else if $scope.assignment.meta['memory-aggregate'].progress == 0 && (new Date($scope.assignment.meta['due-at']) - new Date() < 604800000)\n $scope.assignment.dueState = \"due-soon\"\n else if $scope.assignment.meta['memory-aggregate']?['progress'] == 0\n $scope.assignment.dueState = \"start-soon\"\n\n\n initialize: () ->\n $scope.assignmentType = $route.current.locals.$assignment_type || \"set\"\n unless $scope.deferred\n $scope.deferred = $q.defer()\n\n assignment_id = $routeParams.set_id || $routeParams.setId || $routeParams.series_id || $routeParams.seriesId || $routeParams.id\n courseId = CourseContextService.getCourseId()\n if assignment_id\n if $scope.assignmentType == \"series\"\n resource = V3SeriesResource\n else if courseId != -1\n resource = V3CourseSetsResource\n else\n resource = V3SetsResource\n resource.get\n id: assignment_id\n course_id: courseId\n include: \"creator,image,creator.logo-image,creator.image\"\n , (success) ->\n success = V3ModelHelper.parse(success)\n $scope.assignment = success\n $scope.setDueState()\n $scope.deferred.resolve($scope.assignment)\n , $scope.deferred.reject\n else\n $scope.deferred.reject()\n $scope.deferred.promise\n\n\n $scope\n])\n","ceregoCommon.service('paginatedInstructionalItemsService', ['$rootScope', '$routeParams', '$q', 'DebugHelper', '$filter', 'V3CourseItemsResource', 'V3SetItemsResource', 'V3SeriesItemsResource', 'V3ModelHelper', ($rootScope, $routeParams, $q, DebugHelper, $filter, V3CourseItemsResource, V3SetItemsResource, V3SeriesItemsResource, V3ModelHelper) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"paginatedInstructionalItemsService\", $scope)\n\n _.assignIn $scope,\n resources: {}\n activeTab: \"default\"\n defaultOptions:\n sort: \"\"\n 'filter[type][]': [\"InstructionalContent\"]\n 'page[size]': 200\n defaultResourceImage: '<%= image_path(\"v3/assignment_placeholder_60.png\") %>'\n lastOptions: {}\n\n\n getPaginatedResults: (options = {}) ->\n options = _.defaults(options, $scope.defaultOptions)\n options.sort = \"\"\n deferred = $q.defer()\n\n if options['course_id']\n resource = V3CourseItemsResource\n else if options['set_id']\n resource = V3SetItemsResource\n else if options['series_id']\n resource = V3SeriesItemsResource\n\n resource.query options\n , (success) ->\n $scope.loading = false\n\n instructional_items = V3ModelHelper.parse(success, includeMeta: true)\n if options['course_id']\n _.each(instructional_items.data, (item) ->\n item.show_path = Packs.iKnowRoutes.v3_learn_course_instructional_item_path(options['course_id'], item.id)\n )\n\n deferred.resolve(instructional_items)\n deferred.promise\n $scope\n])\n","ceregoCommon.controller(\"memoryBankModal\", ['$scope', 'DebugHelper', 'MemoryStorage', ($scope, DebugHelper, MemoryStorage) ->\n DebugHelper.register(\"memoryBankModal\", $scope)\n\n _.assignIn $scope,\n setContext: ->\n $scope.sessionContextId = $scope.module?.id ? $scope.course?.id\n $scope.sessionContextType = $scope.module?.type ? $scope.course?.type\n\n loadScopeFromModalOptions: ->\n $scope.user = this.modalOptions.user\n $scope.course = this.modalOptions.course\n $scope.module = this.modalOptions.module\n\n # listen for module being selected in the knowledge bank so we can change the scoping\n # for the learn button. If no module is selected (i.e. zoom out in knowledge bank), reset\n # to the default scope provided by modalOptions\n $scope.$on \"memoryBank:setCurrentModule\", (e, module) ->\n $scope.learnButtonLoaded = false\n if !module\n $scope.loadScopeFromModalOptions()\n else\n module.type = if module.module_type == 'set' then 'sets' else 'series'\n $scope.module = module\n $scope.setContext()\n])\n","ceregoCommon.controller(\"instructionalItemViewerModal\", ['$scope' , 'DebugHelper', 'SessionSettings', 'V3InstructionalPresentationsResource', ($scope, DebugHelper, SessionSettings, V3InstructionalPresentationsResource) ->\n\n DebugHelper.register(\"instructionalItemViewerModal\", $scope)\n\n _.assignIn $scope,\n uiState: {}\n\n getCurrentTime: () ->\n now = new Date()\n now.toISOString()\n\n setUIState: ->\n pdfAnnotation = _.find($scope.item.relationships?.annotations.data, (annotation) ->\n annotation.relationships.document.data?.attributes['content-type'] == \"application/pdf\"\n )\n\n embedItemType = $scope.item.attributes[\"ic-subtype\"] == \"instructional_embed\"\n\n if pdfAnnotation || embedItemType\n $scope.uiState.fullInstructionalEmbed = true\n\n if $scope.item?.meta['already-seen']\n $scope.uiState.alreadySeen = true\n\n markAsDone: () ->\n\n params = {}\n params.study_time_millis = $scope.getStudyDuration()\n params.session_guid = SessionSettings.studySessionId\n params.item_id = $scope.item.id\n params.occurred_at = $scope.getCurrentTime()\n\n V3InstructionalPresentationsResource.create params\n , (success) ->\n $scope.item.meta ||= {}\n $scope.item.meta['already-seen'] = true\n $scope.uiState.alreadySeen = true\n\n getStudyDuration: () ->\n $scope.endTime = Date.now()\n return $scope.endTime - $scope.startTime\n\n initialize: () ->\n $scope.item = $scope.modalOptions.item\n $scope.startTime = Date.now()\n $scope.setUIState()\n\n $scope.initialize()\n])\n","ceregoCommon.factory('PartnerDomainsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_partner_domains_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_partner_domains_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_partner_domain_path(\":id\")\n params:\n id: \"@id\"\n remove:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_partner_domain_path(\":id\")\n params:\n id: \"@id\"\n\n])\n","ceregoCommon.factory('PartnerLibraryResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_partner_library_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_partner_partner_library_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_partner_library_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n])\n","ceregoCommon.factory('PartnerUserTagResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_user_tag_type_partner_user_tags_path(\":partner_user_tag_type_id\")\n params:\n partner_user_tag_type_id: @partner_user_tag_type_id\n show:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_partner_user_tag_type_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_partner_user_tag_path(\":id\")\n params:\n id: \"@id\"\n remove:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_partner_user_tag_path(\":id\")\n params:\n id: \"@id\"\n\n])\n","ceregoCommon.factory('PartnerUserTagTypeResource', ['$resource', ($resource) ->\n $resource \"\", {},\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_partner_user_tag_types_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_partner_user_tag_types_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_partner_partner_user_tag_type_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_partner_partner_user_tag_type_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n])\n","ceregoCommon.factory('TagResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_tag_type_tags_path(\":tag_type_id\")\n params:\n tag_type_id: \"@tag_type_id\"\n])\n","ceregoCommon.factory('UserMetricsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n index:\n method: 'GET'\n url: APIRoutes.v3_user_metrics_path()\n])\n","import * as angular from 'angular';\n\nexport interface IActivationTokensResource extends ng.resource.IResourceClass {}\n\nangular.module('cerego.common').factory('V3ActivationTokensResource', [\n '$resource',\n ($resource: ng.resource.IResourceService) => {\n return $resource(\n '',\n {},\n {\n get: {\n method: 'GET',\n isArray: false,\n url: APIRoutes.v3_activation_token_path(':activation_token'),\n params: {\n activation_token: '@activation_token'\n }\n }\n }\n );\n }\n]);\n","ceregoCommon.factory('V3AnnotationsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_annotation_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_item_annotations_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_annotation_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_annotation_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3AttachedItemsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_item_attached_items_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_item_attached_items_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_item_attached_item_path(\":item_id\", \":attached_item_id\")\n params:\n item_id: \"@item_id\"\n attached_item_id: \"@attached_item_id\"\n])\n","ceregoCommon.factory('V3ConceptsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_concept_path(\":id\")\n params:\n id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_concept_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_concept_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_concept_distractors_path(\":concept_id\")\n params:\n concept_id: \"@concept_id\"\n])\n","ceregoCommon.factory('TipsResource', ['$resource', ($resource) ->\n $resource \"\",{},\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_my_tips_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_my_tip_path(\":tip_id\")\n params:\n tip_id: \"@tip_id\"\n])\n","ceregoCommon.factory('V3CourseAssignmentsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_course_assignments_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n bulk_update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_course_assignments_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n bulk_destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_course_assignments_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n])\n","ceregoCommon.factory('V3CourseGroupsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_course_groups_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_course_groups_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n destroy:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_course_group_path(\":course_id\", \":id\")\n params:\n course_id: \"@course_id\"\n id: \"@id\"\n bulk_destroy:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_course_groups_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n\n])\n","ceregoCommon.factory('V3FacetsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_facet_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_item_facets_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_facet_path(\":id\")\n params:\n id: \"@id\"\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_item_facets_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_facet_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3GroupCoursesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_group_courses_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n bulk_destroy:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_group_courses_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n])\n","ceregoCommon.factory('V3GroupUsersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_group_users_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_group_users_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_group_user_path(\":group_id\", \":id\")\n params:\n group_id: \"@group_id\"\n id: \"@id\"\n bulk_destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_group_users_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n])\n","ceregoCommon.factory('V3GroupsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_groups_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_group_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_group_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_groups_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_group_path(\":id\")\n params:\n id: \"@id\"\n bulk_destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_partner_groups_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n smart_group_preview:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_smart_group_preview_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n])\n","ceregoCommon.factory('V3ImagesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_image_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_images_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_image_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3ItemFacetsOrderingResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_item_facets_ordering_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n])\n","ceregoCommon.factory('V3ItemsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_item_path(\":id\")\n params:\n id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_item_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_set_items_path(\":set_id\")\n params:\n set_id: \"@set_id\"\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_set_items_path(\":set_id\")\n params:\n set_id: \"@set_id\"\n clone:\n method: 'POST'\n isArray: false\n url: APIRoutes.clone_v3_item_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_item_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3MergeRequestsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_merge_request_path(\":id\")\n params:\n id: \"@id\"\n\n])\n","module.exports = __webpack_public_path__ + \"media/v3/assignment_placeholder_60-e5c59f92.png\";","import * as angular from 'angular';\n\nangular.module('cerego.common').factory('V3MyCoursesResource', [\n '$resource',\n ($resource: ng.resource.IResourceService) =>\n $resource(\n '',\n {},\n {\n query: {\n method: 'GET',\n isArray: false,\n url: APIRoutes.v3_my_courses_path()\n }\n }\n )\n]);\n","import * as angular from 'angular';\n\nexport interface IMyEmailResource {\n send_token: ng.resource.IResourceMethod;\n verify_token: ng.resource.IResourceMethod;\n}\n\nangular.module('cerego.common').factory('V3MyEmailResource', [\n '$resource',\n ($resource: ng.resource.IResourceService) =>\n $resource(\n '',\n {},\n {\n send_token: {\n method: 'POST',\n isArray: false,\n url: APIRoutes.send_confirmation_token_v3_my_email_path(':id'),\n params: {\n id: '@id'\n }\n },\n verify_token: {\n method: 'POST',\n isArray: false,\n url: APIRoutes.verify_confirmation_token_v3_my_email_path(':id'),\n params: {\n id: '@id'\n }\n }\n }\n )\n]);\n","ceregoCommon.factory('V3PartnerCoursesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_course_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n])\n","ceregoCommon.factory('V3PasswordsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_password_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_passwords_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_password_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3SentencesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_sentence_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_item_sentences_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_sentence_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_sentence_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3TransliterationDistractorsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_facet_transliteration_distractors_path(\":facet_id\")\n params:\n facet_id: \"@facet_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_facet_transliteration_distractors_path(\":facet_id\")\n params:\n facet_id: \"@facet_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_transliteration_distractor_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_transliteration_distractor_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3UserMetricsExportsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_user_metrics_export_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_user_metrics_exports_path()\n])\n","ceregoCommon.factory('V3UsersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_users_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_user_path(\":id\")\n params:\n id: \"@id\"\n])\n\n","angular.module('cerego.common').factory('V3VideosResource', [\n '$resource',\n ($resource: ng.resource.IResourceService) =>\n $resource(\n '',\n {},\n {\n transcription: {\n method: 'POST',\n isArray: false,\n url: APIRoutes.transcription_v3_video_path(':id'),\n params: {\n id: '@id'\n }\n }\n }\n )\n]);\n","import * as angular from 'angular';\nimport * as _ from 'lodash';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\n\ninterface ICtrl extends ng.IScope {\n stateUI: {\n showPostStudyCard: boolean;\n };\n postStudyCardHeaderMessage: string;\n postStudyCardDetailMessage: string;\n}\n\nangular.module('cerego.common').directive('cgAfterStudyMessageCard', [\n () => ({\n restrict: 'E',\n scope: {\n context: '=',\n contextId: '='\n },\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path('after_study_message_card'),\n\n controller: [\n '$scope',\n '$routeParams',\n 'DebugHelper',\n 'V3AfterStudyMessagesResource',\n (\n $scope: ICtrl,\n $routeParams: ng.route.IRouteParamsService,\n DebugHelper: IDebugHelper,\n V3AfterStudyMessagesResource\n ) => {\n DebugHelper.register('cgAfterStudyMessageCard', $scope);\n\n $scope.stateUI = {\n showPostStudyCard: false\n };\n\n if (($routeParams.newMemoryCount > 0 || $routeParams.fadingMemoryCount > 0) && $routeParams['setIds[]']) {\n const params = {\n set_ids: _.castArray($routeParams['setIds[]']),\n new_memory_count: $routeParams.newMemoryCount,\n fading_memory_count: $routeParams.fadingMemoryCount\n };\n V3AfterStudyMessagesResource.create(params, success => {\n $scope.stateUI.showPostStudyCard = true;\n $scope.postStudyCardHeaderMessage = success.header;\n $scope.postStudyCardDetailMessage = success.message;\n });\n }\n }\n ]\n })\n]);\n","export interface PartnerUserRoleInfo {\n role: string;\n ability: string;\n role_name: string;\n}\n\nexport function getPartnerUserRoles(isNewNav: boolean): PartnerUserRoleInfo[] {\n return [\n {\n role: 'js.partners.roles.admin',\n ability: 'js.partners.abilities.admin',\n role_name: 'admin'\n },\n {\n role: 'js.partners.roles.course_manager',\n ability: 'js.partners.abilities.course_manager',\n role_name: 'course_manager'\n },\n {\n role: 'js.partners.roles.content_manager',\n ability: 'js.partners.abilities.content_manager',\n role_name: 'content_manager'\n },\n {\n role: 'js.partners.roles.course_viewer',\n ability: 'js.partners.abilities.course_viewer',\n role_name: 'course_viewer'\n },\n {\n role: 'js.partners.roles.editor',\n ability: 'js.partners.abilities.editor',\n role_name: 'editor'\n }\n ].filter((roleInfo: PartnerUserRoleInfo) => {\n if (isNewNav) {\n return roleInfo.role_name != 'editor';\n } else {\n return roleInfo.role_name != 'course_viewer';\n }\n });\n}\n","import defaultAssignmentIcon from 'images/v3/common/assignment-card-icon.svg'\n\nceregoCommon.directive(\"cgGradient\", [ ->\n restrict: 'E'\n scope:\n leftColor: \"=\"\n rightColor: \"=\"\n percent: \"=\"\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"cgGradient\", $scope)\n\n _.assignIn $scope, {\n setGradient: () ->\n if $scope.percent == 100\n $scope.element.css('background', \"\")\n $scope.element.css('background-color', $scope.leftColor)\n else\n color_percent = 110 - $scope.percent\n gradient_values = \"left, \" + $scope.leftColor + \" , \" + $scope.rightColor + \" \" + color_percent + \"%\"\n # see: https://stackoverflow.com/questions/29999097/jquery-adding-multiple-css-properties-with-same-name-doesnt-work\n css = [\n \"background-image: -ms-linear-gradient(\" + gradient_values + \")\",\n \"background-image: -o-linear-gradient(\" + gradient_values + \")\",\n \"background-image: -moz-linear-gradient(\" + gradient_values + \")\",\n \"background-image: -webkit-linear-gradient(\" + gradient_values + \")\",\n \"background-image: linear-gradient(\" + gradient_values + \")\",\n ].join(\";\")\n $scope.element.attr('style', css)\n }\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n\n $scope.$watch \"percent\", ->\n $scope.setGradient() if _.isNumber($scope.percent)\n])\n\nceregoCommon.directive(\"cgAssignmentCard\", [ ->\n restrict: \"E\"\n scope:\n assignment: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"assignment_card\")\n\n controller: ['$window', '$scope', '$location', 'DebugHelper', 'MemoryBankLevelsService', 'setLearnURLService', ($window, $scope, $location, DebugHelper, MemoryBankLevelsService, setLearnURLService) ->\n DebugHelper.register(\"cgAssignmentCard\", $scope)\n\n _.assignIn $scope, {\n assignmentDetailsPath: \"\"\n assignmentLearnPath: \"\"\n Math: $window.Math\n levelValue:\n levelNew: MemoryBankLevelsService.levels[1].intLevel\n levelBuilding: MemoryBankLevelsService.levels[2].intLevel\n levelOne: MemoryBankLevelsService.levels[3].intLevel\n levelTwo: MemoryBankLevelsService.levels[4].intLevel\n levelThree: MemoryBankLevelsService.levels[5].intLevel\n levelFour: MemoryBankLevelsService.levels[6].intLevel\n levelMastery: MemoryBankLevelsService.levels[7].intLevel\n defaultIconImage: defaultAssignmentIcon\n locale: angular.element(\"body\").data(\"locale\") || \"en\"\n uiState: {}\n\n setBackgroundImageGradient: () ->\n score = parseFloat($scope.assignment.meta[\"memory-aggregate\"]?['score'])\n if score > $scope.levelValue.levelNew && score < $scope.levelValue.levelBuilding\n $scope.leftColor = \"#333333\" #gray6\n $scope.rightColor = \"#333333\" #gray6\n else if score >= $scope.levelValue.levelBuilding && score < $scope.levelValue.levelOne\n $scope.leftColor = \"#333333\" #gray6\n $scope.rightColor = \"#2294f2\" #level_1\n else if score >= $scope.levelValue.levelOne && score < $scope.levelValue.levelTwo\n $scope.leftColor = \"#2294f2\" #level_1\n $scope.rightColor = \"#9347BF\" #$purple\n else if score >= $scope.levelValue.levelTwo && score < $scope.levelValue.levelThree\n $scope.leftColor = \"#9347BF\" #$purple\n $scope.rightColor = \"#E7446F\" #$pink\n else if score >= $scope.levelValue.levelThree && score < $scope.levelValue.levelFour\n $scope.leftColor = \"#E7446F\" #$pink\n $scope.rightColor = \"#EEB100\" #$yellow\n else if score >= $scope.levelValue.levelFour && score < $scope.levelValue.levelMastery\n $scope.leftColor = \"#EEB100\" #$yellow\n $scope.rightColor = \"#7AB72D\" #$light-green\n else\n $scope.leftColor = $scope.rightColor = \"#7AB72D\" #$light-green\n\n if (score == Math.floor(score)) || (score <= $scope.levelValue.levelBuilding)\n $scope.percent = 100\n else if score > $scope.levelValue.levelBuilding && score < $scope.levelValue.levelOne\n $scope.percent = ((score - $scope.levelValue.levelBuilding)/ ($scope.levelValue.levelOne - $scope.levelValue.levelBuilding)) * 100\n else\n $scope.percent = ((score - Math.floor(score)) * 100)\n\n setNumberItemsToStudy: () ->\n unstarted = $scope.assignment.meta['memory-aggregate']?['unstarted-items-count'] ? 0\n fading = $scope.assignment.meta['memory-aggregate']?['eligible-items-count'] ? 0\n studyType = CeregoSharedLib.studyTypes.RECOMMENDED\n started = $scope.assignment.meta['memory-aggregate']?['studied-items-count'] ? 0\n percentStarted = started / Math.max(started + unstarted, 1)\n progress = $scope.assignment.meta['memory-aggregate']?['progress'] ? 0\n $scope.sessionSizes = CeregoSharedLib.sessionSizeParts(unstarted, fading, studyType, percentStarted, progress)\n $scope.fading = $scope.sessionSizes.fading\n $scope.unstarted = $scope.sessionSizes.unstarted\n $scope.itemsToLearn = Math.min($scope.assignment.meta[\"memory-aggregate\"]?[\"unstarted-items-count\"] + $scope.assignment.meta[\"memory-aggregate\"]?[\"eligible-items-count\"], 10)\n $scope.fadingItems = Math.min($scope.assignment.meta[\"memory-aggregate\"]?[\"eligible-items-count\"], 15)\n $scope.progress = progress\n if $scope.assignment.meta['due-at']\n $scope.pastDue = (new Date() > new Date($scope.assignment.meta['due-at']))\n\n isGoodForNow: () ->\n $scope.unstarted == 0 && $scope.fading == 0\n }\n\n $scope.$watch \"assignment.meta['memory-aggregate']['score']\", ->\n $scope.setBackgroundImageGradient()\n\n $scope.$watch \"assignment.meta['memory-aggregate']['unstarted-items-count']\", ->\n $scope.setNumberItemsToStudy()\n\n $scope.$watch \"assignment.meta['memory-aggregate']['eligible-items-count']\", ->\n $scope.setNumberItemsToStudy()\n\n $scope.$watch \"assignment\", ->\n assignment = $scope.assignment\n if assignment\n $scope.uiState.isScorm = !!assignment.attributes['scorm-package-id']\n $scope.uiState.isAssessment = assignment.attributes['goal-type'] == 'assessment'\n $scope.uiState.isSurvey = assignment.attributes['goal-type'] == 'survey'\n if assignment.module_type == \"set\" || assignment.type == \"sets\"\n if assignment.attributes['learn-version'] != 4\n $scope.assignmentDetailsPath = Packs.iKnowRoutes.v3_learn_set_path(assignment.id)\n $scope.assignmentLearnPath = Packs.iKnowRoutes.quiz_v2_set_learn_path(assignment.id)\n else\n studyType = if $scope.isGoodForNow() then 'force_review' else 'recommended'\n $scope.assignmentLearnPath = setLearnURLService.getUrl({ id: parseInt(assignment.id), version: 4 }, { studyType: studyType })\n fromPath = setLearnURLService.getReturnUrl($window.location.pathname, { fromEmbed: $scope.fromEmbed })\n learnPath = new URL(\"#{$window.location.origin}#{$scope.assignmentLearnPath}\")\n learnPath.searchParams.append('returnUrl', fromPath)\n $scope.assignmentDetailsPath = learnPath.toString()\n else\n $scope.assignmentDetailsPath = Packs.iKnowRoutes.v3_learn_series_path(assignment.id)\n $scope.assignmentLearnPath = Packs.iKnowRoutes.quiz_v2_series_learn_path(assignment.id)\n $scope.setNumberItemsToStudy()\n ]\n\n link: ($scope, element, attrs) ->\n $scope.uiState.isScorm = !!$scope.assignment.attributes['scorm-package-id']\n])\n","ceregoCommon.component('cgButtonDropdown',\n transclude:\n 'buttonSlot': 'buttonContent'\n 'dropdownMenuSlot': 'menuContent'\n\n bindings:\n dropdownDisabled: '\n DebugHelper.register(\"cgButtonDropdownCtrl\", $scope)\n $ctrl = this\n\n $ctrl.dismissDropdownHandler = (event) ->\n $scope.$apply ->\n $ctrl.dropdown = {}\n\n # attach listener so user can click off dropdown to dismiss\n angular.element(\"body\").click $ctrl.dismissDropdownHandler\n\n # make sure to unbind listener when this element is destroyed\n $scope.$on '$destroy', ->\n angular.element(\"body\").unbind('click', $ctrl.dismissDropdownHandler)\n\n # listen for event broadcast by other dropdowns on the same page\n $scope.$on \"buttonDropdown:dismissDropdown\", (e, flag) ->\n $ctrl.dropdown = {}\n\n _.assignIn $ctrl, {\n dropdown: {}\n\n toggleShowDropdown: ($event) ->\n unless $ctrl.dropdownDisabled\n $event.preventDefault()\n $event.stopPropagation()\n\n # save the old value of the dropdown flag before broadcasting an event to make all button dropdown instances\n # (including this one) clear their dropdown flag\n oldDropdownSetting = $ctrl.dropdown.showDropdown\n $rootScope.$broadcast \"buttonDropdown:dismissDropdown\", true\n $ctrl.dropdown.showDropdown = !oldDropdownSetting\n }\n\n # Warning, controllers must either return themselves or a non-object variable\n $ctrl\n ]\n)\n","ceregoCommon.directive(\"cgCourseCard\", [ ->\n restrict: \"E\"\n scope:\n course: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"course_card\")\n\n controller: ['$analytics', '$window', '$scope', '$location', '$filter', 'DebugHelper', 'toastHelper', 'V3CourseUsersResource', 'UserManager', 'StudyItemsService', 'ModalService', ($analytics, $window, $scope, $location, $filter, DebugHelper, toastHelper, V3CourseUsersResource, UserManager, StudyItemsService, ModalService) ->\n DebugHelper.register(\"cgCourseCard\", $scope)\n\n _.assignIn $scope, {\n\n stateUI:\n loading: false\n\n cardClick: () ->\n if $scope.course.meta['is-enrolled']\n $window.location.href = Packs.iKnowRoutes.v3_learn_course_path($scope.course.id)\n else\n ModalService.showModal('course-info-modal', { course: $scope.course })\n\n unenroll: ($event) ->\n $event.preventDefault()\n $event.stopPropagation()\n V3CourseUsersResource.delete\n course_id: $scope.course.id,\n id: UserManager.currentUser.id\n , (success) ->\n $analytics.eventTrack('self_unenrolled_from_course')\n $scope.course.meta['is-enrolled'] = false\n toastHelper.showToast('simpleToast', message: $filter(\"translate\")(\"js.learn.courses.course_detail.unenroll_toast\", name: $scope.course.attributes.name))\n , (failure) ->\n DebugHelper.logError(failure)\n\n enroll: ($event) ->\n $event.preventDefault()\n $event.stopPropagation()\n $scope.stateUI.loading = true\n V3CourseUsersResource.create { course_id: $scope.course.id, user_id: UserManager.currentUser.id }\n , (success) ->\n $analytics.eventTrack(\"self_enrolled_in_course\")\n StudyItemsService.loadStudyItem('courses', $scope.course.id, 'recommended', $window.location.pathname).then (studyItem) ->\n $scope.course.meta = success.data.meta\n $scope.stateUI.loading = false\n , (failure) ->\n DebugHelper.logError(failure)\n }\n ]\n])\n","ceregoCommon.directive(\"cgDailyPolarGraph\", [ ->\n restrict: \"E\"\n scope:\n data: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"daily-polar-graph\")\n\n controller: ['$window', '$scope', '$filter', '$location', 'DebugHelper', ($window, $scope, $filter, $location, DebugHelper) ->\n DebugHelper.register(\"cgDailyPolarGraph\", $scope)\n\n INNER_RADIUS = 0\n DEFAULT_OUTER_RADIUS = 5\n TRANSITION_DURATION = 2000\n\n _.assignIn $scope, {\n stateUI:\n hourBegin: [0,3,6,9,12,15,18,21]\n classNames: ['twelve-am', 'three-am', 'six-am', 'nine-am', 'twelve-pm', 'three-pm', 'six-pm', 'nine-pm', 'twelve-am']\n loading: true\n tooltipDirection: [\"top\", \"top\", \"bottom\", \"bottom\", \"bottom\", \"bottom\", \"top\", \"top\"]\n arcs: d3.layout.pie()([1,1,1,1,1,1,1,1])\n maxRadius: 100\n maxSliceRadius: 95\n colorIntensity: [0,0,0,0,0,0,0,0]\n tooltips: []\n\n setMostEfficientDay: () ->\n $scope.maxEfficiency = _.max($scope.data.efficiency)\n $scope.mostEfficientIndex =_.indexOf($scope.data.efficiency, $scope.maxEfficiency)\n\n setUpGraph: () ->\n svg = d3.select(\"svg g\")\n\n _.each(svg.selectAll(\"path\")[0], (element, index) ->\n d3.select(element).on(\"mouseover\", () ->\n angular.element(\".v3-polar-tooltip-\"+ index).addClass(\"visible\")\n ).on(\"mouseout\", () ->\n angular.element(\".v3-polar-tooltip-\"+ index).removeClass(\"visible\")\n )\n $scope.tooltips[index] =\n heading: $filter('translate')('js.org_dash.hours.' + $scope.stateUI.hourBegin[index])\n caption: $filter('translate')('js.org_dash.daily_graph.tooltip')\n direction: $scope.tooltipDirection[index]\n classname: \"v3-polar-tooltip-\" + index\n )\n\n updateGraph: () ->\n if $scope.data.popularity\n $scope.setMostEfficientDay()\n $scope.stateUI.loading = false\n svg = d3.select(\"svg g\")\n arc = d3.svg.arc().innerRadius(INNER_RADIUS).outerRadius(DEFAULT_OUTER_RADIUS)\n svg.selectAll(\"path\").data($scope.arcs).attr(\"d\", arc)\n\n _.each(svg.selectAll(\"path\")[0], (element, index) ->\n maxPopularity = _.max($scope.data.popularity)\n if maxPopularity == 0\n radius = 0\n else\n radius = ($scope.data.popularity[index]/maxPopularity) * $scope.maxSliceRadius\n colorClass = \"color-\" + _.ceil($scope.data.efficiency[index] * 10)\n arc = d3.svg.arc().innerRadius(INNER_RADIUS).outerRadius(radius)\n\n unless d3.select(element).classed(colorClass)\n #d3 does not have \"remove all classes\" function yet\n $(element).removeAttr(\"class\")\n d3.select(element).classed(colorClass, true)\n\n d3.select(element).transition().ease('elastic').duration(TRANSITION_DURATION).attr(\"d\", arc)\n )\n }\n\n $scope.setUpGraph()\n $scope.$watch \"data\", (newVal, oldVal) ->\n $scope.updateGraph()\n , true\n ]\n\n])\n","\nceregoCommon.component('cgDropdown',\n\n bindings:\n buttonOptions: \"<\" # options for dropdown\n optionDisplayPath: \"\n DebugHelper.register(\"cgDropdownCtrl\", $scope)\n $ctrl = this\n\n $ctrl.dismissDropdownHandler = (event) ->\n $scope.$apply ->\n $ctrl.dropdown = {}\n\n # attach listener so user can click off dropdown to dismiss\n angular.element(\"body\").click $ctrl.dismissDropdownHandler\n\n # make sure to unbind listener when this element is destroyed\n $scope.$on '$destroy', ->\n angular.element(\"body\").unbind('click', $ctrl.dismissDropdownHandler)\n\n # listen for event broadcast by other dropdowns on the same page\n $scope.$on \"buttonDropdown:dismissDropdown\", (e, flag) ->\n $ctrl.dropdown = {}\n\n _.assignIn $ctrl, {\n dropdown: {}\n\n displayOption: (option) ->\n if $ctrl.optionDisplayPath\n # try to access path in option, if undefined, just return option (relevant when the default option is a string, but all the selectable options are objects)\n _.get(option, $ctrl.optionDisplayPath, option)\n else\n option\n\n selectOption: (option) ->\n $ctrl.currentSelection = option\n if $ctrl.onSelection\n params = {data: $ctrl.currentSelection}\n _.assignIn params, $ctrl.onSelectionArgs if $ctrl.onSelectionArgs\n $ctrl.onSelection(params)\n\n toggleShowDropdown: ($event) ->\n $event.preventDefault()\n $event.stopPropagation()\n\n $ctrl.currentSelection ||= $filter('translate')('js.common.dropdown.default')\n\n # save the old value of the dropdown flag before broadcasting an event to make all button dropdown instances\n # (including this one) clear their dropdown flag\n oldDropdownSetting = $ctrl.dropdown.showDropdown\n $rootScope.$broadcast \"buttonDropdown:dismissDropdown\", true\n $ctrl.dropdown.showDropdown = !oldDropdownSetting\n }\n\n # Warning, controllers must either return themselves or a non-object variable\n $ctrl\n ]\n)\n","ceregoCommon.directive(\"cgItemCard\", [ ->\n restrict: \"E\"\n scope:\n index: '@'\n item: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"item_card\")\n\n controller: ['$scope', '$filter', '$element', '$routeParams', 'V3ContentService', 'V3ItemValidatorService', 'DebugHelper'\n ($scope, $filter, $element, $routeParams, V3ContentService, V3ItemValidatorService, DebugHelper) ->\n\n DebugHelper.register(\"cgItemCard\", $scope)\n\n _.assignIn $scope, {\n stateUI:\n showPostStudyCard: false\n\n V3ContentService: V3ContentService\n V3ItemValidatorService: V3ItemValidatorService\n\n initialize: () ->\n index = parseInt($scope.index)\n if index < 100\n $scope.stateUI.indexFontSize = \"font-small\"\n else if index < 1000\n $scope.stateUI.indexFontSize = \"font-tiny\"\n else\n $scope.stateUI.indexFontSize = \"font-extratiny\"\n\n $scope.item.card = $element[0]\n $scope.item.card.scrollIntoView() if $scope.item.id == parseInt($routeParams.id)\n\n filterText: (text) ->\n text = $filter('stripHTML')(text)\n if text.length > 30\n text.slice(0, 27) + '...'\n else\n text\n\n getFacetQuizzes: (facet) ->\n quizzes = {}\n for quiz in facet.attributes['quiz-settings'].enabled\n # TODO: remove extra check here after we drop MC from Q&A\n if (quiz.match('multiple_choice') && !$scope.item.attributes['template-type'] != \"question_and_answer\")\n quizzes.multiple_choice = (quizzes.multiple_choice || 0) + 1\n else if quiz.match('fill_in_the_blank')\n quizzes.fill_in_the_blank = (quizzes.fill_in_the_blank || 0) + 1\n else if quiz.match('click_in_the_dark')\n quizzes.click_in_the_dark = (quizzes.click_in_the_dark || 0) + 1\n else if quiz.match('application_question_select')\n quizzes.application_question_select = (quizzes.application_question_select || 0) + 1\n else if quiz.match('question_and_answer_select')\n quizzes.multiple_choice = (quizzes.multiple_choice || 0) + 1\n else if quiz.match('sequence_injection')\n quizzes.sequence_injection = (quizzes.sequence_injection || 0) + 1\n quizzes\n\n getFacetNum: () ->\n totalFacets = _.filter($scope.item.relationships.facets?.data || [], (facet) -> facet.relationships.association?.data).length\n $scope.getFacetName(totalFacets,true)\n\n getQuizNum: () ->\n totalQuizzes = _.reduce($scope.item.relationships.facets?.data || [], (sum, facet) ->\n sum + facet.attributes['quiz-settings'].enabled.length\n , 0)\n suffix = if totalQuizzes == 1 then \".one\" else \".other\"\n $filter('translate')(\"js.item_editor.item_cards.quiz\" + suffix, count: totalQuizzes)\n\n getFacetName: (count, with_count) ->\n slug = \"js.item_editor.item_cards.#{$scope.item.attributes['template-type']}.facet_name\"\n if with_count\n slug += \"_with_count\"\n slug += if count == 1 then \".one\" else \".other\"\n $filter(\"translate\")(slug, count: count)\n\n getFacetNameForIndex: (index) ->\n if $scope.item.relationships.facets.data.length == 1\n $scope.getFacetName(1, false)\n else\n \"#{$scope.getFacetName(1, false)} #{index}\"\n\n getTemplateType: () ->\n if $scope.item.attributes['template-type'] == \"instructional_contents\"\n if $scope.item.attributes['ic-subtype']\n $scope.item.attributes['ic-subtype']\n else\n \"instructional_contents_page\"\n else\n $scope.item.attributes['template-type']\n\n getIncompleteName: () ->\n if $scope.item.attributes['template-type']\n $filter('translate')(\"js.item_editor.item_cards.#{$scope.getTemplateType()}.incomplete\")\n else\n $filter('translate')(\"js.item_editor.item_cards.incomplete_item\")\n\n getMissingAssociationName: () ->\n $filter('translate')(\"js.item_editor.item_cards.#{$scope.item.attributes['template-type']}.missing_association\")\n\n getMissingAnchorName: () ->\n $filter('translate')(\"js.item_editor.item_cards.#{$scope.getTemplateType()}.missing_anchor\")\n\n getItemTypeName: () ->\n $filter('translate')(\"js.item_editor.item_cards.#{$scope.getTemplateType()}.new\")\n\n hasAssociation: () ->\n $scope.item.relationships.facets?.data[0]?.relationships.association?.data || ($scope.item.attributes['template-type']== \"instructional_contents\" && $scope.item.relationships.annotations?.data[0])\n\n hasAnchor: () ->\n $scope.item.relationships.facets?.data[0]?.relationships.anchor?.data || $scope.item.attributes['title']\n\n canShowFacets: () ->\n !_.includes(['instructional_contents', 'application_questions', 'question_and_answers', 'patterns'], $scope.item.attributes['template-type'])\n }\n\n $scope.initialize()\n ]\n])\n","import * as angular from 'angular';\n\ninterface ILocalStorageTipCardScope extends ng.IScope {\n key: string;\n respawnMilliseconds: number;\n}\n\nangular.module('cerego.common').directive('localStorageTipCard', [\n 'localStorageService',\n localStorageService => ({\n restrict: 'A',\n\n scope: {\n key: '@localStorageTipCard',\n respawnMilliseconds: '=respawnMilliseconds'\n },\n\n link: ($scope: ILocalStorageTipCardScope, element, attrs) => {\n const localStorageKey = `localStorageTipCard-${$scope.key}-lastShown`;\n const lastShown = localStorageService.get(localStorageKey) || 0;\n const timeSinceLastShown = new Date().getTime() - lastShown;\n if (timeSinceLastShown < $scope.respawnMilliseconds) {\n element.remove();\n }\n\n return element.find('.layout-message-card-close').on('click', () => {\n localStorageService.set(localStorageKey, new Date().getTime());\n element.remove();\n });\n }\n })\n]);\n","import * as angular from 'angular';\nimport { getPartnerUserRoles, PartnerUserRoleInfo } from 'javascripts/util/partner-user-roles-helper';\n\ninterface IControllerScope extends ng.IScope {\n roles: PartnerUserRoleInfo[];\n}\n\nangular.module('cerego.common').directive('cgPartnerUserRolesDescriptionsCard', [\n () => ({\n restrict: 'E',\n scope: {},\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path('partner_user_roles_descriptions_card'),\n\n controller: [\n '$scope',\n 'SiteNavigationService',\n ($scope: IControllerScope, SiteNavigationService: any) => {\n $scope.roles = getPartnerUserRoles(SiteNavigationService.isV4Embed());\n }\n ]\n })\n]);\n","ceregoCommon.directive(\"passwordInput\", [->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"password_input\")\n\n scope:\n ngModel: \"=\"\n placeholder: \"=?\"\n minlength: \"=?\"\n hideIcon: \"=?\"\n\n controller: ['$scope', '$element', ($scope, $element) ->\n\n _.assignIn $scope,\n DEFAULT_PLACEHOLDER: \"********\"\n stateUI:\n passwordHidden: true\n toggleShowPassword: () ->\n $scope.stateUI.passwordHidden = !$scope.stateUI.passwordHidden\n if $scope.stateUI.passwordHidden\n $element.find(\"input\")[0].type = \"password\"\n else\n $element.find(\"input\")[0].type = \"text\"\n onPasswordChanged: () ->\n $scope.$emit(\"passwordChanged\")\n this.$onInit = () ->\n $scope.minlength = $scope.minlength || USER_MIN_PASSWORD_LEN\n $scope.placeholder = $scope.placeholder || $scope.DEFAULT_PLACEHOLDER;\n\n this # otherwise coffeescript will return the onInit function\n ]\n])\n","ceregoCommon.directive('progressIndicatorOrbs', ['$timeout', ($timeout) ->\n scope:\n progressIndicatorOrbs: \"@\"\n orbs: \"=\"\n isActive: \"=\"\n isComplete: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"_progress_indicator_orbs\")\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"progressIndicatorOrbs\", $scope)\n ]\n])\n","ceregoCommon.directive(\"cgSearchableItemsCollection\", [ ->\n restrict: \"E\"\n scope:\n assignment: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"searchable_items_collection\")\n\n controller: ['$window', '$scope', '$location', '$filter', '$analytics', 'DebugHelper', 'V3SetItemsResource', 'V3ModelHelper', ($window, $scope, $location, $filter, $analytics, DebugHelper, V3SetItemsResource, V3ModelHelper) ->\n DebugHelper.register(\"cgSearchableItemsCollection\", $scope)\n\n _.assignIn $scope, {\n routes: Packs.iKnowRoutes\n searchOptions:\n query: \"\"\n\n loadItems: () ->\n V3SetItemsResource.query\n set_id: $scope.assignment.id\n include: \"image,facets.anchor,facets.association,facets.anchor.image,facets.association.image\"\n 'page[size]': 200\n , (success) ->\n $scope.items = V3ModelHelper.parse(success)\n }\n\n $scope.$watch \"assignment\", ->\n if $scope.assignment\n $scope.loadItems()\n ]\n])\n","ceregoCommon.directive(\"cgSmartLearnCard\", [ ->\n restrict: \"E\"\n scope:\n contextType: \"=\"\n contextId: \"=\"\n fromEmbed: \"=?\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"smart_learn_card\")\n\n controller: ['$window', '$scope', '$location', 'DebugHelper', 'UserManager', 'V3ModelHelper', 'V4RecommendedSetsResource', 'setLearnURLService',\n ($window, $scope, $location, DebugHelper, UserManager, V3ModelHelper, V4RecommendedSetsResource, setLearnURLService) ->\n\n DebugHelper.register(\"cgSmartLearnCard\", $scope)\n\n _.assignIn $scope, {\n stateUI:\n loaded: false\n recommendedTab:\n slug: 'recommended'\n valid: false\n loaded: false\n buttonClass: 'v3-button button-large'\n studyItem: {}\n scormPackageId: \"\"\n goodForNowTab:\n slug: 'good_for_now'\n valid: false\n loaded: false\n studyItem: {}\n scormPackageId: \"\"\n fadingTab:\n slug: 'fading'\n valid: false\n loaded: false\n buttonClass: 'v3-secondary-button button-large'\n studyItem: {}\n scormPackageId: \"\"\n\n showRecommendedTab: () ->\n $scope.showTab($scope.recommendedTab)\n\n showFadingTab: () ->\n if $scope.fadingTab.loaded\n $scope.showTab($scope.fadingTab)\n\n # Set tab info to display\n showTab: (tab) ->\n $scope.stateUI.activeTab = tab\n\n loadCard: () ->\n params = { include_scorm: true }\n \n switch $scope.contextType\n when 'sets' then params.set_id = $scope.contextId\n when 'series' then params.series_id = $scope.contextId\n when 'courses' then params.course_id = $scope.contextId\n\n V4RecommendedSetsResource.query params\n , (success) ->\n parsedSuccess = V3ModelHelper.parse(success)\n _.each parsedSuccess, (tab) => \n switch tab.attributes['study-type']\n when 'recommended' then tabScope = 'recommendedTab'\n when 'fading_only' then tabScope = 'fadingTab'\n\n setID = tab.relationships.set.data.id\n setAttrs = tab.relationships.set.data.attributes\n \n Object.assign($scope[tabScope], {\n loaded: true,\n valid: true,\n studyItem: {\n skipModal: true\n scormPackageId: setAttrs['scorm-package-id']\n buttonText: tab.attributes.cta || 'Learn now!'\n learnPath: setLearnURLService.getUrl({id: parseInt(setID), version: setAttrs['learn-version']}, { studyType: tab.attributes['study-type'] })\n bodyTextHtml: tab.attributes.description\n }\n })\n \n if success.data.length == 0\n $scope.recommendedTab.loaded = true\n $scope.goodForNowTab.loaded = true\n $scope.goodForNowTab.valid = true\n Object.assign($scope.goodForNowTab.studyItem, {\n bodyTextHtml: success.meta['overall-description']\n })\n $scope.showTab($scope.goodForNowTab)\n else\n $scope.showTab($scope.recommendedTab)\n }\n\n $scope.loadCard()\n $scope.$on \"scorm:launchAttempt\", () ->\n $scope.loadCard() # reload card and get next module on scorm launch\n\n ]\n])\n","ceregoCommon.directive(\"cgWeeklyBarGraph\", [ ->\n restrict: \"E\"\n scope:\n data: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"weekly-bar-graph\")\n\n controller: ['$window', '$scope', '$filter', '$location', 'DebugHelper', ($window, $scope, $filter, $location, DebugHelper) ->\n DebugHelper.register(\"cgWeeklyBarGraph\", $scope)\n\n ANIMATION_DURATION = 400\n\n _.assignIn $scope, {\n stateUI:\n daySlugs: [\n 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'\n ]\n tooltips: []\n\n getPercentageFromPopularity: () ->\n max = _.max($scope.data.popularity)\n if max == 0\n $scope.data.popularity\n else\n _.map($scope.data.popularity, (value) ->\n _.ceil((value / max) * 100)\n )\n\n setMostEfficientDay: () ->\n $scope.maxEfficiency = _.max($scope.data.efficiency)\n $scope.mostEfficientIndex =_.indexOf($scope.data.efficiency, $scope.maxEfficiency)\n\n updateGraph: () ->\n if $scope.data.popularity\n $scope.setMostEfficientDay()\n percentageArray = $scope.getPercentageFromPopularity()\n elements = angular.element(\".v3-bar-container .v3-bar\").get()\n $scope.data.colorIntensity = [0,0,0,0,0,0,0]\n\n\n _.each(elements, (element, index) ->\n percentage = percentageArray[index]\n $scope.data.colorIntensity[index] = _.ceil($scope.data.efficiency[index] * 10)\n elm = angular.element(element)\n elm.css('height', 0)\n elm.animate({ height: percentage + '%'}, ANIMATION_DURATION)\n $scope.tooltips[index] =\n heading: $filter('translate')('js.org_dash.days.' + $scope.stateUI.daySlugs[index] + '.text')\n caption: $filter('translate')('js.org_dash.weekly_graph.tooltip')\n )\n }\n\n $scope.$watch \"data\", (newVal, oldVal) ->\n $scope.updateGraph()\n , true\n ]\n\n])\n","/**\n * This Cerego Shared Library will be shared across iOS, Android, and web front end.\n * Functions that must live in the front end, but we don't want to duplicate in 3 places should go here.\n * The intrasession scheduler is one thing in the future that should be shared in another self contained js file like this.\n * */\nCeregoSharedLib = {};\n\n(function() {\n var UNSTARTED_ITEM_BURDEN = 2.0;\n var MAX_BURDEN = 25;\n var FADING_COUNT_CUTOFF = 12;\n var NEW_COUNT_CUTOFF = 3;\n var MAX_NEW_ITEMS = Math.floor(MAX_BURDEN / UNSTARTED_ITEM_BURDEN);\n\n CeregoSharedLib.studyTypes = {\n FADING: 'fading_only',\n RECOMMENDED: 'recommended'\n };\n\n /** Given the number of items unstarted, the number of items fading, and the study type for a smart_module,\n * returns the total number of items that v3/my/study_items will recommend be studied in a session.\n * This is used for displaying \"Learn 8\", or \"Review 12\" on an assignment card and having it match up with what\n * will be studied, without the need for actually fetching a study session.\n * studyType can be either recommended or fading\n * */\n CeregoSharedLib.sessionSizeParts = function(unstarted, fading, studyType, percentStarted, progress) {\n studyType = studyType || CeregoSharedLib.studyTypes.RECOMMENDED;\n var new_item_count = 0;\n var fading_item_count = 0;\n\n if (studyType == CeregoSharedLib.studyTypes.RECOMMENDED) {\n if (UNSTARTED_ITEM_BURDEN * unstarted + fading <= MAX_BURDEN) {\n new_item_count = unstarted;\n fading_item_count = fading;\n } else if (percentStarted == progress) {\n new_item_count = Math.min(MAX_NEW_ITEMS, unstarted);\n // NOTE: the math here is a little backwards, but that's because MAX_BURDEN is odd, this prevents us from always\n // padding a random fading item to the end of an all-new session\n fading_item_count = Math.min((MAX_NEW_ITEMS - new_item_count) * UNSTARTED_ITEM_BURDEN, fading);\n } else if (unstarted >= NEW_COUNT_CUTOFF && fading >= FADING_COUNT_CUTOFF) {\n new_item_count = NEW_COUNT_CUTOFF;\n fading_item_count = FADING_COUNT_CUTOFF;\n } else if (unstarted >= NEW_COUNT_CUTOFF && fading < FADING_COUNT_CUTOFF) {\n new_item_count =\n NEW_COUNT_CUTOFF + Math.ceil((MAX_BURDEN - FADING_COUNT_CUTOFF - fading) / UNSTARTED_ITEM_BURDEN);\n fading_item_count = fading;\n } else {\n // implied that unstarted < 3, and fading > 20\n new_item_count = unstarted;\n fading_item_count = FADING_COUNT_CUTOFF + UNSTARTED_ITEM_BURDEN * (NEW_COUNT_CUTOFF - unstarted);\n }\n } else if (studyType == CeregoSharedLib.studyTypes.FADING) {\n new_item_count = 0;\n fading_item_count = Math.min(fading, MAX_BURDEN);\n } else {\n // Will return an empty study session\n }\n\n // The below shouldn't be necessary, but just in case\n new_item_count = Math.min(new_item_count, unstarted);\n fading_item_count = Math.min(fading_item_count, fading);\n\n return { unstarted: new_item_count, fading: fading_item_count };\n };\n\n CeregoSharedLib.sessionSize = function(unstarted, fading, studyType, percentStarted, progress) {\n var parts = CeregoSharedLib.sessionSizeParts(unstarted, fading, studyType, percentStarted, progress);\n\n return parts.fading + parts.unstarted;\n };\n})();\n","import Quill from 'quill';\n\nconst Parchment = Quill.import('parchment');\nconst Inline = Parchment.query('inline');\nconst Link = Quill.import('formats/link');\nconst Keyboard = Quill.import('modules/keyboard');\n\nInline.tagName = 'G';\nQuill.register(Inline, true);\n\nLink.sanitize = url => {\n // add https:// to links without them\n if (!url.match(/^[a-zA-Z]+:\\/\\//)) {\n url = 'https://' + url;\n }\n return url;\n};\n\nexport const createWysiwygQuill = (containerElem, toolbarElem, placeholder) => {\n const options = {\n modules: {\n formula: false,\n toolbar: toolbarElem,\n keyboard: {\n bindings: {\n tab: false\n }\n }\n },\n theme: 'snow',\n placeholder\n };\n return new Quill(containerElem, options);\n};\n\nexport const overrideEnterKey = (quill, handlerFunction) => {\n delete quill.keyboard.bindings[13];\n quill.keyboard.addBinding({\n key: Keyboard.keys.ENTER,\n handler: handlerFunction\n });\n};\n","module.exports = __webpack_public_path__ + \"media/common/assignment-card-icon-661d545f.svg\";","angular.module('cerego.common').factory('PartnerAccountResource', [\n '$resource',\n ($resource: ng.resource.IResourceService) =>\n $resource(\n '',\n {},\n {\n create: {\n method: 'POST',\n isArray: false,\n url: APIRoutes.v3_partner_account_path(':partner_id'),\n params: {\n partner_id: '@partner_id'\n }\n },\n get: {\n method: 'GET',\n isArray: false,\n url: APIRoutes.v3_partner_account_path(':partner_id'),\n params: {\n partner_id: '@partner_id',\n id: '@id'\n }\n },\n delete: {\n method: 'DELETE',\n url: APIRoutes.v3_partner_account_path(':partner_id'),\n params: {\n partner_id: '@partner_id',\n id: '@id'\n }\n }\n }\n )\n]);\n","var map = {\n\t\"./ar\": 15,\n\t\"./ar-dz\": 16,\n\t\"./ar-dz.js\": 16,\n\t\"./ar-kw\": 17,\n\t\"./ar-kw.js\": 17,\n\t\"./ar-ly\": 18,\n\t\"./ar-ly.js\": 18,\n\t\"./ar-ma\": 19,\n\t\"./ar-ma.js\": 19,\n\t\"./ar-sa\": 20,\n\t\"./ar-sa.js\": 20,\n\t\"./ar-tn\": 21,\n\t\"./ar-tn.js\": 21,\n\t\"./ar.js\": 15,\n\t\"./de\": 22,\n\t\"./de-at\": 23,\n\t\"./de-at.js\": 23,\n\t\"./de-ch\": 24,\n\t\"./de-ch.js\": 24,\n\t\"./de.js\": 22,\n\t\"./es\": 25,\n\t\"./es-do\": 26,\n\t\"./es-do.js\": 26,\n\t\"./es-us\": 27,\n\t\"./es-us.js\": 27,\n\t\"./es.js\": 25,\n\t\"./fr\": 28,\n\t\"./fr-ca\": 29,\n\t\"./fr-ca.js\": 29,\n\t\"./fr-ch\": 30,\n\t\"./fr-ch.js\": 30,\n\t\"./fr.js\": 28,\n\t\"./ja\": 31,\n\t\"./ja.js\": 31\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 57;","ceregoCommon.factory('V3InstructionalPresentationsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_my_instructional_presentations_path()\n])\n","ceregoCommon.factory('V3SetsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_sets_path()\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_set_path(\":id\")\n params:\n group_id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_set_path(\":id\")\n params:\n id: \"@id\"\n destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_set_path(\":id\")\n params:\n id: \"@id\"\n\n])\n","ceregoCommon.factory('V3CourseSetsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n save:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_course_sets_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n update:\n method: 'PATCH'\n isArray: false\n url: APIRoutes.v3_course_set_path(\":course_id\", \":id\")\n params:\n course_id: \"@course_id\"\n id: \"@id\"\n remove:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_course_set_path(\":course_id\", \":id\")\n params:\n course_id: \"@course_id\"\n id: \"@id\"\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_course_set_path(\":course_id\", \":id\")\n params:\n course_id: \"@course_id\"\n id: \"@id\"\n])\n","ceregoCommon.factory('V3SeriesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_series_path(\":id\")\n params:\n group_id: \"@id\"\n])\n","ceregoCommon.factory('V3OAuthResource', ['$resource', ($resource) ->\n $resource \"\", {},\n authenticate:\n method: 'POST'\n isArray: false\n url: APIRoutes.authenticate_v3_oauth_index_path()\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_oauth_path(\":provider\")\n params:\n provider: \"@provider\"\n])\n","import { createWysiwygQuill, overrideEnterKey } from 'util/quill-helper'\n\nceregoCommon.directive(\"cgWysiwyg\", ['$window', ($window) ->\n restrict: \"E\"\n scope:\n placeholder: \"@\"\n includeLinks: \"=?\"\n includeLists: \"=?\"\n includeUnderline: '=?'\n model: \"=\"\n onPaste: \"&?\"\n autofocus: \"=?\"\n onChange: \"&?\"\n onFocus: \"&?\"\n hideToolbar: \"=?\"\n autowidth: \"=?\"\n onEnterKey: \"=?\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"wysiwyg\")\n\n controller: ['$scope', '$element', 'DebugHelper',\n ($scope, $element, DebugHelper) ->\n DebugHelper.register(\"cgWysiwyg\", $scope)\n\n _.assignIn $scope, {\n editorChanged: false\n bottomBarHeight: 20\n minHeight: 65\n currentWidth: 0\n\n updateWidth: ->\n return if $scope.autowidth # if true, obey flex sizing of parent instead of manually setting width on element\n\n quillElem = $scope.quill.root\n html = quillElem.innerHTML\n\n quillElem.innerHTML = ''\n quillElem.style.width ='auto'\n quillElem.innerHTML = html\n quillElem.style.width = quillElem.clientWidth + 'px'\n $scope.currentWidth = quillElem.clientWidth\n }\n ]\n\n link: ($scope, element, attrs) ->\n $scope.quill = createWysiwygQuill(element.children(\".quill-editor-container\")[0], element.children(\".quill-toolbar\")[0], $scope.placeholder)\n $scope.updateWidth()\n\n if $scope.model\n $scope.quill.clipboard.dangerouslyPasteHTML($scope.model)\n\n element.on 'focusin', (event) ->\n element.addClass(\"focus\")\n if $scope.onFocus\n $scope.onFocus()\n\n element.on 'focusout', (event) ->\n setTimeout () ->\n if !(element.find(':focus').length)\n element.removeClass(\"focus\")\n\n angular.element($window).bind 'resize', ->\n $scope.updateWidth()\n $scope.$digest() # manual $digest required as resize event is outside of angular\n\n $scope.$watch 'model', (newText, oldText) ->\n if newText != oldText\n if $scope.onChange\n $scope.onChange()\n content = newText\n if $scope.quill && !$scope.editorChanged\n if content\n $scope.quill.clipboard.dangerouslyPasteHTML(content)\n else\n $scope.quill.setText('')\n $scope.editorChanged = false\n\n $scope.quill.on 'text-change', (delta, oldDelta, source) ->\n $scope.onChange() if $scope.onChange\n\n html = if $scope.quill.root.innerText.trim().length > 0\n $scope.quill.root.innerHTML\n else\n ''\n\n $scope.$applyAsync () ->\n $scope.editorChanged = true\n $scope.model = html\n\n if $scope.onPaste\n $scope.quill.root.addEventListener 'paste', () -> $scope.onPaste()\n\n if $scope.onEnterKey\n overrideEnterKey($scope.quill, () -> $scope.onEnterKey(attrs.model))\n\n if $scope.autofocus\n angular.element('.ql-editor', element).focus()\n\n])\n","ceregoCommon.factory('V3SessionResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_sessions_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_sessions_path()\n destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_sessions_path()\n])\n","declare const APIRoutes: v3.service.AppRoutes;\n\nangular.module('cerego.common').factory('V3CourseItemsResource', [\n '$resource',\n ($resource: ng.resource.IResourceService) =>\n $resource(\n '',\n {},\n {\n query: {\n method: 'GET',\n isArray: false,\n url: APIRoutes.v3_course_items_path(':course_id'),\n params: {\n course_id: '@course_id'\n }\n }\n }\n )\n]);\n","ceregoCommon.directive('cgTooltip', ['$window', '$timeout', '$compile', ($window, $timeout, $compile) ->\n restrict: \"A\"\n\n transclude:\n 'textSlot' : '?tooltipText'\n 'tooltipSlot': 'tooltipContent'\n\n templateUrl: Packs?.iKnowRoutes?.common_v3_templates_path(\"_tooltip_content\")\n\n scope:\n direction: \"@direction\"\n toggle: \"@toggle\"\n size: \"@size\"\n\n controller: ['$window', '$scope', '$timeout', 'DebugHelper', ($window, $scope, $timeout, DebugHelper) ->\n DebugHelper.register(\"cgToolTipCtrl\", $scope)\n\n $scope.handleClick = (e) ->\n e.stopPropagation()\n\n $scope.element.toggleClass('visible')\n $scope.toggled = !$scope.toggled\n\n # add listener to body so that when tooltip is toggled, clicking anywhere on body detoggles it\n if $scope.toggled\n $timeout ->\n $(\"body\").click $scope.handleClick\n else\n $(\"body\").unbind('click', $scope.handleClick)\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n $scope.element.addClass(\"v3-tooltip-container\")\n\n if $scope.toggle == 'click'\n $scope.element.click $scope.handleClick\n else\n $scope.element.hover ->\n $(this).toggleClass('visible')\n])\n","ceregoCommon.directive(\"goalTriangle\", [->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"goal_triangle\")\n\n scope:\n levelValue: \"=\"\n goalReached: \"=\"\n size: \"=\"\n\n controller: [ '$scope', ($scope) ->\n _.assignIn $scope, {\n\n getLevelClass: () ->\n \"level-\" + Math.floor(parseFloat($scope.levelValue))\n }\n ]\n])\n","ceregoCommon.directive(\"cgLearnerDashboardCard\", [ ->\n restrict: \"E\"\n scope:\n contextType: \"=\"\n contextId: \"=\"\n contextProgress: \"=\" # Check if this will be passed in or have study item return it\n contextLevel: \"=\"\n nextStudyTime: \"=\"\n firstTimeCompleted: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"learner_dashboard_card\")\n\n controller: ['$window', '$scope', '$location', '$filter', 'DebugHelper', 'UserManager', 'StudyItemsService', 'timeHelper', 'GoalMathHelper', 'MySetsResource', 'ModalService', 'SessionSettings', 'AssignmentDetailsService', 'toastHelper', 'LtiService',\n ($window, $scope, $location, $filter, DebugHelper, UserManager, StudyItemsService, timeHelper, GoalMathHelper, MySetsResource, ModalService, SessionSettings, AssignmentDetailsService, toastHelper, LtiService) ->\n\n DebugHelper.register(\"cgLearnerDashboardCard\", $scope)\n\n _.assignIn $scope, {\n AssignmentDetailsService: AssignmentDetailsService\n LtiService: LtiService\n SessionSettings: SessionSettings\n\n stateUI:\n loaded: false\n currentMode: 0\n\n FIRST_TIME_UNSTARTED: 1\n START_MORE_ITEMS: 2\n GOOD_FOR_NOW: 3\n FADING_ONLY: 4\n PROGRESS_COMPLETED: 5\n ONE_DAY_IN_MS: 24 * 60 * 60 * 1000\n\n launchGoodForNow: () ->\n version = AssignmentDetailsService.assignment.attributes[\"learn-version\"]\n options = { sessionContextType: $scope.contextType, sessionContextId: $scope.contextId, returnUrl: SessionSettings.returnURL, studyItem: { version: version }}\n options.embed = true if SessionSettings.embed\n ModalService.showModal('good-for-now-modal', options)\n\n showGoMobile: () ->\n ModalService.showModal('mobile-app-modal', {modalType: 'transparent' })\n\n startLearning: () ->\n version = AssignmentDetailsService.assignment.attributes[\"learn-version\"]\n if version == 4\n# TODO: pass temp_login_token if in LTI\n $window.location.href = $scope.stateUI.learnPath\n else\n $location.url($scope.stateUI.learnPath)\n\n continueLearning: () ->\n $scope.firstTimeCompleted = false\n $scope.initialize()\n\n toggleSchedule: () ->\n if AssignmentDetailsService.assignment.meta['in-schedule'] then $scope.unSchedule() else $scope.addToSchedule()\n\n confirmUnschedule: () ->\n MySetsResource.removeFromSchedule\n id: $scope.contextId\n , (success) ->\n AssignmentDetailsService.assignment.meta['in-schedule'] = false\n if LtiService.isBBC\n confirm_key = 'js.learn_app_dashboard.progress_completed.bbc_assignment_removed'\n else\n confirm_key = 'js.learn_app_dashboard.progress_completed.assignment_removed'\n toastHelper.showToast('simpleToast', message: $filter(\"translate\")(confirm_key))\n\n unSchedule: () ->\n ModalService.showModal('unschedule-assignment-modal', {modalType: 'transparent', confirmUnschedule: $scope.confirmUnschedule, isBBC: LtiService.isBBC })\n\n addToSchedule: () ->\n MySetsResource.addToSchedule\n id: $scope.contextId\n , (success) ->\n AssignmentDetailsService.assignment.meta['in-schedule'] = true\n if LtiService.isBBC\n confirmation_key = 'js.learn_app_dashboard.progress_completed.bbc_assignment_added'\n else\n confirmation_key = 'js.learn_app_dashboard.progress_completed.assignment_added'\n toastHelper.showToast('simpleToast', message: $filter(\"translate\")(confirmation_key))\n\n setNextRecommendedModule: () ->\n StudyItemsService.loadStudyItem(null, null, \"recommended\", SessionSettings.returnURL).then (studyItem) ->\n $scope.stateUI.nextModule = studyItem.learnPath\n\n initialize: () ->\n # 5 Progress is 100% & completed for the first time\n if $scope.contextProgress == 100 && $scope.firstTimeCompleted\n $scope.stateUI.currentMode = $scope.PROGRESS_COMPLETED\n if LtiService.isBBC\n title_key = 'js.learn_app_dashboard.progress_completed.bbc_title'\n else\n title_key = 'js.learn_app_dashboard.progress_completed.title'\n $scope.stateUI.title = $filter('translate')($filter('randomTranslateStringArray')(title_key))\n $scope.stateUI.loaded = true\n else\n StudyItemsService.loadStudyItem($scope.contextType, $scope.contextId, \"recommended\", SessionSettings.returnURL).then (studyItem) ->\n $scope.stateUI.unstartedCount = studyItem.unstarted\n $scope.stateUI.fadingCount = studyItem.fading\n $scope.stateUI.learnPath = studyItem.learnPath\n $scope.stateUI.durationString = timeHelper.secToString(studyItem.sessionLengthSec)\n\n # 1 First time ever\n # contextProgress is undefined with logged out study\n # studyItem.primaryCollection is undefined for sets with no assignment and it is good for now\n if ($scope.contextProgress == 0 || _.isUndefined($scope.contextProgress)) && studyItem.primaryCollection # undefined with logged out study\n title_key = 'js.learn_app_dashboard.first_time_unstarted.title'\n $scope.stateUI.currentMode = $scope.FIRST_TIME_UNSTARTED\n $scope.stateUI.totalMemoriesCount = studyItem.primaryCollection.attributes[\"studiable-memories-count\"]\n if $scope.contextLevel\n $scope.stateUI.estimatedStudyTimeLower = GoalMathHelper.estimateRangeLower($scope.contextLevel)\n $scope.stateUI.estimatedStudyTimeUpper = GoalMathHelper.levelToDaysConversion($scope.contextLevel)\n # 2 Has anything unstarted\n else if studyItem.unstarted > 0\n $scope.stateUI.currentMode = $scope.START_MORE_ITEMS\n if LtiService.isBBC\n title_key = 'js.learn_app_dashboard.start_more_items.bbc_title'\n else\n title_key = 'js.learn_app_dashboard.start_more_items.title'\n # 3 No fading and no unstarted (good for now)\n else if studyItem.fading == 0 && studyItem.unstarted == 0\n $scope.setNextRecommendedModule()\n $scope.stateUI.currentMode = $scope.GOOD_FOR_NOW\n now = new Date\n # Set to 1 day if next study time is less than 1 day\n duration = Math.max(moment.duration($scope.nextStudyTime - now).asMilliseconds(), $scope.ONE_DAY_IN_MS)\n $scope.stateUI.duration = timeHelper.msecToString(duration)\n if LtiService.isBBC\n title_key = 'js.learn_app_dashboard.good_for_now.bbc_title'\n else\n title_key = 'js.learn_app_dashboard.good_for_now.title'\n # 4 No unstarted and there is fading.\n else if studyItem.fading > 0 && studyItem.unstarted == 0\n $scope.stateUI.currentMode = $scope.FADING_ONLY\n if LtiService.isBBC\n title_key = 'js.learn_app_dashboard.fading_only.bbc_title'\n else\n title_key = 'js.learn_app_dashboard.fading_only.title'\n # Should not be possible\n else\n DebugHelper.logError(\"cgLearnerDashboardCard unexpected value progress: #{progress}, unstarted: #{studyItem.unstarted}, fading: #{studyItem.fading}\")\n\n if title_key\n $scope.stateUI.title = $filter('translate')($filter('randomTranslateStringArray')(title_key))\n\n $scope.stateUI.loaded = true\n }\n\n $scope.initialize()\n ]\n\n])\n","ceregoCommon.directive('miniMemoryBank', [ '$timeout', ($timeout) ->\n restrict : \"E\"\n\n scope:\n showModal: \"=\"\n context: \"=?\"\n course: \"=?\"\n module: \"=?\"\n lastStudyTime: \"=?\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"mini_memory_bank\")\n\n controller: ['$scope', '$q', 'MemoryBankLevelsService', '$window', '$filter', '$routeParams', 'progressVisual', 'MemoryBankAssetHelper', 'MemoryStorage', 'UserManager', 'DebugHelper', (\n $scope, $q, MemoryBankLevelsService, $window, $filter, $routeParams, progressVisual, MemoryBankAssetHelper, MemoryStorage, UserManager, DebugHelper) ->\n DebugHelper.register(\"miniMemoryBankCtrl\", $scope)\n\n\n _.assignIn $scope,\n MODULE_RADIUS: 30\n WELCOME: 1\n WELCOME_BACK: 2\n ENCOURAGING: 3\n levels: _.drop(MemoryBankLevelsService.levels, 1)\n forMobile: angular.element($window).width() < 768\n preloadedOrbs: []\n\n prepareFacet: (facet, radius) ->\n facet.radius = radius\n facet.orb_type = \"facet\"\n facet.level_slug = MemoryBankLevelsService.binContinuousLevel(facet.level, facet.review_interval).slug\n true\n\n prepareModule: (module, radius) ->\n module.radius = radius\n module.orb_type = \"module\"\n module.level_slug = MemoryBankLevelsService.slugLevel(module.score)\n module.image ||= MemoryBankAssetHelper.defaultModuleOrb()\n true\n\n tick: (selection) ->\n # Reset tick counters\n tick = 0\n $scope.force.on \"start\", ->\n tick = 0\n\n selection.each (d) ->\n d.startTick = Math.round(Math.random()*12)\n\n # Actual tick function\n (e) ->\n alpha = e.alpha\n k = .4\n wiggle = .2\n tick += 1\n\n selection.each (node) ->\n # move closer to target with a little wiggle to prevent local minima (aka local gravity)\n if tick > node.startTick && node.weight == 0\n node.x += (node.target.x - node.x)*k*alpha\n node.y += (node.target.y - node.y)*k*alpha\n\n node.y = Math.max($scope.bb.top, Math.min(node.y, $scope.bb.bottom))\n\n # Finally, update the dom\n selection.call($scope.moveToPosition)\n\n radius: (orb_type) ->\n switch orb_type\n when \"module\"\n $scope.MODULE_RADIUS\n else\n 8\n\n updateSVG: (data) ->\n LEFT_BORDER_WIDTH = 0\n RIGHT_BORDER_WIDTH = 0\n HEADER_HEIGHT = 0\n NEEDS_REVIEW_RETENTION = .85\n if angular.element($window).width() > 768\n $scope.totalLevels = MemoryBankLevelsService.totalLevelsExcludeUnstarted\n else if $scope.module\n $scope.totalLevels = _.max([$scope.levels.length, $scope.module.scoring_goal + 2])\n else\n $scope.totalLevels = $scope.levels.length\n\n radius = $scope.radius($scope.orb_type)\n\n lockedLevelSize = if angular.element($window).width() > 768 then 65 else 40\n\n nextLockedLevel = Math.ceil(_.max(_.map(data, (d) -> d.score || d.level)) || 0.3)\n $scope.unlockedLevels = _.filter($scope.levels, (level) -> level.minLevel < nextLockedLevel)\n\n svgDimensions =\n x: angular.element(\".mini-memory-bank\").width() - (($scope.totalLevels - $scope.unlockedLevels.length) * lockedLevelSize)\n y: angular.element(\".mini-memory-bank\").height()\n\n $scope.bb =\n left: LEFT_BORDER_WIDTH + radius\n right: svgDimensions.x - RIGHT_BORDER_WIDTH - radius\n top: HEADER_HEIGHT + radius + 1\n bottom: svgDimensions.y - radius - 1\n\n for orb in data\n if $scope.orb_type == \"module\"\n $scope.prepareModule(orb, radius)\n else\n $scope.prepareFacet(orb, radius)\n\n domain = _.map($scope.unlockedLevels, \"minLevel\").concat(nextLockedLevel)\n range = [$scope.bb.left]\n _.times $scope.unlockedLevels.length, (i) ->\n range.push($scope.bb.left + ($scope.bb.right - $scope.bb.left) * (i + 1) / $scope.unlockedLevels.length)\n\n $scope.xScale = d3.scale.linear().domain(domain).range(range)\n $scope.yScale = d3.scale.linear().domain([1,NEEDS_REVIEW_RETENTION,0]).range([$scope.bb.top, .5 * ($scope.bb.bottom + $scope.bb.top), $scope.bb.bottom])\n\n selection = $scope.svg.selectAll(\".progress-orb\")\n\n keyFn = (d) ->\n if $scope.orb_type == \"facet\"\n $scope.orb_type + \":\" + d.learning_engine_guid\n else\n $scope.orb_type + \":\" + d.id\n selection = selection.data(data, keyFn)\n\n # Create new nodes\n selection.enter().append(\"g\").call($scope.createOrb)\n\n # Set up clipPath we can use to clip module images to a circle\n # N.B. putting this clipPath in the link function (like in the main knowledge bank) was leading to\n # the clipPath not being applied properly during a soft load of the mini knowledge bank\n defs = $scope.svg.append(\"defs\")\n defs.append \"clipPath\"\n .attr\n id: \"miniMbModuleClipPath\"\n .append \"circle\"\n .attr\n cx: 0\n cy: 0\n r: $scope.MODULE_RADIUS - 4\n\n # Rebuild force layout\n if $scope.force\n $scope.force.stop()\n\n $scope.force = d3.layout.force()\n .nodes(_.filter(selection.data(), (d) -> !_.isUndefined(d)))\n .gravity(0)\n .charge(0)\n .friction(.6)\n .charge (d) ->\n if d.weight > 0\n -20 * d.radius\n else\n 0\n .chargeDistance(100)\n .size [svgDimensions.x, svgDimensions.y]\n\n $scope.force.on \"tick\", $scope.tick(selection)\n\n # Calculate theoretical final position\n selection.call($scope.resetAnimation).call($scope.setTargetPosition)\n\n # Perform animating simulation with timers between ticks\n console.log \"STARTING ANIMATION\"\n selection.call($scope.doAnimate)\n\n doAnimate: (selection) ->\n $scope.force.start() # need to use start and not resume in order to rebuild internal link strengths\n selection.classed\n background: false\n selected: (d) -> d.weight > 0\n if $scope.force.links().length > 0\n selection.classed\n background: (d) -> d.weight == 0\n\n calculateFinalPosition: (d) ->\n x: $scope.xScale(d.score || d.level)\n y: $scope.yScale($scope.orbRetention(d))\n\n setTargetPosition: (selection) ->\n selection.each (d) ->\n finalPosition = $scope.calculateFinalPosition(d)\n d.target =\n x: finalPosition.x\n y: finalPosition.y\n\n orbRetention: (d) ->\n if $scope.orb_type == \"facet\" then d.current_retention else d.average_current_retention\n\n # sets the position of the orb at the beginning of the animation\n setSourcePosition: (preload) ->\n (selection) ->\n height = angular.element(\".mini-memory-bank\").height()\n selection.each (d) ->\n sourceOrb = _.find($scope.preloadedOrbs, (orb) -> orb.learning_engine_guid == d.learning_engine_guid)\n if $scope.preload && sourceOrb\n sourcePosition = $scope.calculateFinalPosition(sourceOrb)\n d.x = sourcePosition.x\n d.y = sourcePosition.y\n else\n # otherwise, recent new memories animate from lower left\n d.x = Math.random() * -100\n d.y = height - (Math.random() * height/4)\n\n moveToPosition: (selection) ->\n selection.attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \")\"\n\n resetAnimation: (selection) ->\n $scope.force.links([])\n selection.each (d) ->\n d.px = d.x\n d.py = d.y\n d.fixed = false\n\n # Called for new nodes\n createOrb: (selection) ->\n # Attach level_slug first so we can do it programmatically without doing string append to the class\n selection.attr(\"class\", (d) -> d.level_slug)\n selection.classed\n \"progress-orb\": true\n \"progress-module\": (d) -> d.orb_type == \"module\"\n \"progress-facet\": (d) -> d.orb_type == \"facet\"\n .call($scope.setSourcePosition($scope.preload))\n .call($scope.moveToPosition)\n .attr\n module_id: (d) -> d.id if d.orb_type == \"module\"\n\n selection.append \"circle\"\n .attr\n cx: 0\n cy: 0\n r: (d) -> d.radius\n\n selection.filter (d) ->\n d.orb_type != \"facet\"\n .each (d) ->\n d3.select(this).append \"image\"\n .attr\n \"xlink:href\": (d) ->\n $filter(\"transcode\")(d.image, 52)\n \"clip-path\": (d) ->\n \"url(#miniMbModuleClipPath)\"\n preserveAspectRatio: \"xMidYMid slice\"\n x: -d.radius + 4\n y: -d.radius + 4\n width: (d.radius - 4)*2\n height: (d.radius - 4)*2\n title: (d) -> d.name\n\n loadData: (constraints) ->\n UserManager.loadUser().then (user) ->\n constraints.user_id = user.id\n $scope.memoryBankModalOptions.user = user\n lastConstraints = MemoryStorage.getLastConstraints()\n\n # if current context is the exact same as last, load from cache + dont animate\n if _.isEqual(lastConstraints, constraints)\n $scope.preload = true\n preloadConstraints = constraints\n # if we just studied the same set we loaded previously,\n # draw previous cache then animate the orbs up\n else if _.isEqual(_.omit(lastConstraints, \"lastStudyTime\"), _.omit(constraints, \"lastStudyTime\"))\n $scope.preload = true\n preloadConstraints = lastConstraints\n # if current context is totally different than the last one, redraw from scratch\n else\n $scope.preload = false\n\n if $scope.preload\n # on preload, load the memory data of where the orbs should start\n $scope.loadMemoryStorageData(preloadConstraints).then () ->\n # save initial starting positions\n $scope.preloadedOrbs = $scope.orbs\n # draw the orbs based on final position constraints\n $scope.drawData(constraints)\n else\n # on no preload, load data once + draw\n $scope.drawData(constraints)\n\n\n loadMemoryStorageData: (constraints) ->\n deferred = $q.defer()\n MemoryStorage.load(constraints).then (response) ->\n $scope.memoriesLength = response.memories.length\n $scope.memoryBankModalOptions.showLearnButton = $scope.memoriesLength > 0\n # filter out unstarted orbs\n $scope.orbs = _.cloneDeep(_.filter(response.memories, (m) ->\n m.level > 0))\n\n deferred.resolve()\n , (error) ->\n deferred.reject()\n $scope.error = (error.data && error.data.meta && error.data.meta.message) || $filter('translate')(\"js.memory_bank.could_not_load\")\n\n drawData: (constraints) ->\n $scope.loadMemoryStorageData(constraints).then ->\n # if we changed memories, reset memories after load\n if $scope.preload && $scope.preloadedOrbs != $scope.orbs\n MemoryStorage.reset()\n $timeout ->\n $scope.updateSVG($scope.orbs)\n\n prepareMiniMemoryBank: (constraints) ->\n promise = $scope.loadData(constraints)\n ]\n\n link: ($scope, element) ->\n $scope.svg = d3.select(element[0].querySelector('svg'))\n\n # TODO use directive inputs to set group, module_type, module_id in constraints passed to loadData\n constraints = {}\n $scope.memoryBankModalOptions = {}\n\n # after study, animate orbs. only reanimate if lastStudyTime has changed\n if $scope.lastStudyTime\n constraints.lastStudyTime = $scope.lastStudyTime\n\n if $scope.context == \"course\"\n constraints.group_id = $scope.course.id\n $scope.orb_type = \"module\"\n $scope.memoryBankModalOptions.course = $scope.course\n $scope.memoryBankModalOptions.forceAssignmentContext = false\n else if $scope.context == \"set\"\n constraints.module_id = $scope.module.id\n constraints.module_type = $scope.context\n $scope.orb_type = \"facet\"\n $scope.memoryBankModalOptions.module = $scope.module\n $scope.memoryBankModalOptions.module.module_type = $scope.module.context_type || constraints.module_type # needed to be v2/v3 compatible with knowledge bank\n $scope.memoryBankModalOptions.forceAssignmentContext = true # already starting in assignment scope, don't allow user to zoom out\n else if $scope.context == \"series\"\n constraints.module_id = $scope.module.id\n constraints.module_type = \"seriesGoals\" # for hitting the right API in MemoryStorage\n $scope.orb_type = \"module\"\n $scope.memoryBankModalOptions.module = $scope.module\n $scope.memoryBankModalOptions.module.module_type = $scope.module.context_type # needed to be v2 compatible with knowledge bank\n $scope.memoryBankModalOptions.forceAssignmentContext = true # already starting in assignment scope, don't allow user to zoom out\n else\n $scope.orb_type = \"module\"\n\n $scope.prepareMiniMemoryBank(constraints)\n])\n","// All this does is provide a way to import v3/common via javascript_packs_with_chunks_tag\n// move import of v3/common back into v3 apps once they are all webpacked and delete this file\nimport '../../assets/javascripts/v3/modules/common.js';\n","require('../../../../../lib/assets/javascripts/cerego_sdk/shared_lib')\n\n# replace these with explicit import\nreq = require.context('./common/resources', false)\nreq.keys().forEach(req)\nreq = require.context('./common/directives', false)\nreq.keys().forEach(req)\nreq = require.context('./common/modals', false, /\\.js$/)\nreq.keys().forEach(req)\nreq = require.context('./common/helpers', false, /\\.js$/)\nreq.keys().forEach(req)\nreq = require.context('./common/services', false, /\\.js$/)\nreq.keys().forEach(req)\n\nrequire('./common/filters.js')\nrequire('../../v2/modules/common/filters.js')\nrequire('./common/user-csv-uploader.js')\nrequire('./common/resources/partner-account-resource.ts')\nrequire('../../v2/modules/cerego-toast.js')\nrequire('../../v2/modules/common/time-helper.js')\nrequire('./common/services/react-navigation-service.ts')\n","var map = {\n\t\"./course-items-resource\": 75,\n\t\"./course-items-resource.ts\": 75,\n\t\"./partner-account-resource\": 56,\n\t\"./partner-account-resource.ts\": 56,\n\t\"./partner-domains-resource.js\": 380,\n\t\"./partner-domains-resource.js.coffee\": 380,\n\t\"./partner-library-resource.js\": 381,\n\t\"./partner-library-resource.js.coffee\": 381,\n\t\"./partner-user-tag-resource.js\": 382,\n\t\"./partner-user-tag-resource.js.coffee\": 382,\n\t\"./partner-user-tag-type-resource.js\": 383,\n\t\"./partner-user-tag-type-resource.js.coffee\": 383,\n\t\"./tag-resource.js\": 384,\n\t\"./tag-resource.js.coffee\": 384,\n\t\"./tips-resource.js\": 39,\n\t\"./tips-resource.js.coffee\": 39,\n\t\"./user_metrics_resource.js\": 385,\n\t\"./user_metrics_resource.js.coffee\": 385,\n\t\"./v3-activation-tokens-resource\": 386,\n\t\"./v3-activation-tokens-resource.ts\": 386,\n\t\"./v3-annotations-resource.js\": 387,\n\t\"./v3-annotations-resource.js.coffee\": 387,\n\t\"./v3-attached-items-resource.js\": 388,\n\t\"./v3-attached-items-resource.js.coffee\": 388,\n\t\"./v3-concepts-resource.js\": 389,\n\t\"./v3-concepts-resource.js.coffee\": 389,\n\t\"./v3-course-assignments-resource.js\": 390,\n\t\"./v3-course-assignments-resource.js.coffee\": 390,\n\t\"./v3-course-groups-resource.js\": 391,\n\t\"./v3-course-groups-resource.js.coffee\": 391,\n\t\"./v3-course-sets-resource.js\": 66,\n\t\"./v3-course-sets-resource.js.coffee\": 66,\n\t\"./v3-facets-resource.js\": 392,\n\t\"./v3-facets-resource.js.coffee\": 392,\n\t\"./v3-group-courses-resource.js\": 393,\n\t\"./v3-group-courses-resource.js.coffee\": 393,\n\t\"./v3-group-users-resource.js\": 394,\n\t\"./v3-group-users-resource.js.coffee\": 394,\n\t\"./v3-groups-resource.js\": 395,\n\t\"./v3-groups-resource.js.coffee\": 395,\n\t\"./v3-images-resource.js\": 396,\n\t\"./v3-images-resource.js.coffee\": 396,\n\t\"./v3-instructional-presentations-resource.js\": 64,\n\t\"./v3-instructional-presentations-resource.js.coffee\": 64,\n\t\"./v3-item-facets-ordering-resource.js\": 397,\n\t\"./v3-item-facets-ordering-resource.js.coffee\": 397,\n\t\"./v3-items-resource.js\": 398,\n\t\"./v3-items-resource.js.coffee\": 398,\n\t\"./v3-merge-requests-resource.js\": 399,\n\t\"./v3-merge-requests-resource.js.coffee\": 399,\n\t\"./v3-my-courses-resource\": 400,\n\t\"./v3-my-courses-resource.ts\": 400,\n\t\"./v3-my-email-resource\": 401,\n\t\"./v3-my-email-resource.ts\": 401,\n\t\"./v3-oauth-resource.js\": 68,\n\t\"./v3-oauth-resource.js.coffee\": 68,\n\t\"./v3-partner-courses-resource.js\": 402,\n\t\"./v3-partner-courses-resource.js.coffee\": 402,\n\t\"./v3-passwords-resource.js\": 403,\n\t\"./v3-passwords-resource.js.coffee\": 403,\n\t\"./v3-sentences-resource.js\": 404,\n\t\"./v3-sentences-resource.js.coffee\": 404,\n\t\"./v3-session-resource.js\": 74,\n\t\"./v3-session-resource.js.coffee\": 74,\n\t\"./v3-transliteration-distractors-resource.js\": 405,\n\t\"./v3-transliteration-distractors-resource.js.coffee\": 405,\n\t\"./v3-user-metrics-exports-resource.js\": 406,\n\t\"./v3-user-metrics-exports-resource.js.coffee\": 406,\n\t\"./v3-users-resource.js\": 407,\n\t\"./v3-users-resource.js.coffee\": 407,\n\t\"./v3-videos-resource\": 408,\n\t\"./v3-videos-resource.ts\": 408,\n\t\"./v3_concept_distractors_resource.js\": 85,\n\t\"./v3_concept_distractors_resource.js.coffee\": 85,\n\t\"./v3_series_resource.js\": 67,\n\t\"./v3_series_resource.js.coffee\": 67,\n\t\"./v3_sets_resource.js\": 65,\n\t\"./v3_sets_resource.js.coffee\": 65\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 795;","var map = {\n\t\"./after-study-message-card\": 409,\n\t\"./after-study-message-card.ts\": 409,\n\t\"./assignment-card.js\": 410,\n\t\"./assignment-card.js.coffee\": 410,\n\t\"./button-dropdown.js\": 411,\n\t\"./button-dropdown.js.coffee\": 411,\n\t\"./course-card.js\": 412,\n\t\"./course-card.js.coffee\": 412,\n\t\"./daily-polar-graph.js\": 413,\n\t\"./daily-polar-graph.js.coffee\": 413,\n\t\"./dropdown.js\": 414,\n\t\"./dropdown.js.coffee\": 414,\n\t\"./goal-triangle.js\": 77,\n\t\"./goal-triangle.js.coffee\": 77,\n\t\"./item-card.js\": 415,\n\t\"./item-card.js.coffee\": 415,\n\t\"./learner-dashboard-card.js\": 78,\n\t\"./learner-dashboard-card.js.coffee\": 78,\n\t\"./local-storage-tip-card\": 416,\n\t\"./local-storage-tip-card.ts\": 416,\n\t\"./milestone-service.js\": 81,\n\t\"./milestone-service.js.coffee\": 81,\n\t\"./milestone.js\": 83,\n\t\"./milestone.js.coffee\": 83,\n\t\"./milestones-list.js\": 82,\n\t\"./milestones-list.js.coffee\": 82,\n\t\"./mini-memory-bank.js\": 79,\n\t\"./mini-memory-bank.js.coffee\": 79,\n\t\"./partner-user-roles-descriptions-card\": 417,\n\t\"./partner-user-roles-descriptions-card.ts\": 417,\n\t\"./password-input.js\": 418,\n\t\"./password-input.js.coffee\": 418,\n\t\"./progress-bar.js\": 84,\n\t\"./progress-bar.js.coffee\": 84,\n\t\"./progress-card.js\": 80,\n\t\"./progress-card.js.coffee\": 80,\n\t\"./progress-indicator-orbs.js\": 419,\n\t\"./progress-indicator-orbs.js.coffee\": 419,\n\t\"./searchable-items-collection.js\": 420,\n\t\"./searchable-items-collection.js.coffee\": 420,\n\t\"./smart-learn-card.js\": 421,\n\t\"./smart-learn-card.js.coffee\": 421,\n\t\"./tip-card\": 86,\n\t\"./tip-card.ts\": 86,\n\t\"./tooltip.js\": 76,\n\t\"./tooltip.js.coffee\": 76,\n\t\"./weekly-bar-graph.js\": 422,\n\t\"./weekly-bar-graph.js.coffee\": 422,\n\t\"./wysiwyg.js\": 69,\n\t\"./wysiwyg.js.coffee\": 69\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 796;","var map = {\n\t\"./add-users-modal.js\": 798,\n\t\"./course-info-modal.js\": 799,\n\t\"./edit-quiz-modal.js\": 800,\n\t\"./instructional-item-viewer-modal.js\": 120,\n\t\"./memory-bank-modal.js\": 119\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 797;","ceregoCommon.controller(\"addUsersModal\", ['$analytics','$scope', '$rootScope', '$q', 'DebugHelper', 'V3CourseUsersResource', 'PartnerUsersResource', 'CourseContextService', 'paginatedLearnersService', 'V3ModelHelper', 'myPartnersService', 'toastHelper', '$filter', 'AmplitudeService', (\n $analytics, $scope, $rootScope, $q, DebugHelper, V3CourseUsersResource, PartnerUsersResource, CourseContextService, paginatedLearnersService, V3ModelHelper, myPartnersService, toastHelper, $filter, AmplitudeService) ->\n DebugHelper.register(\"addUsers\", $scope)\n\n _.assignIn $scope,\n step: \"input\"\n options:\n send_email: true\n optionsToAdd:\n addByEmail:\n slug: 'add_by_email'\n name: \"js.partners.add_users_modal.add_options.by_email\"\n addByMemberId:\n slug: 'add_by_member_id'\n name: \"js.partners.add_users_modal.add_options.by_member_id\"\n uiState:\n showSendEmailOption: false # whether to show the option to send an email to invited users or not\n showInviteOptions: false # whether to show the option to add by email or member id\n loading: false\n input:\n invite_list: \"\"\n error_invites: []\n success_list: []\n\n selectAddMethod: (choice) ->\n $scope.addMethod = choice\n $scope.step = 'input'\n $scope.setShowSendEmailOption()\n\n toggleOptions: (option) ->\n $scope.options[option] = !$scope.options[option]\n\n addUsers: (is_instructor) ->\n $scope.uiState.loading = true\n userCreationPromises = _.map $scope.input.invite_list.split(\",\"), (obj) ->\n # is_instructor isn't used by PartnerUsersResource, but we can leave it here because it gets filtered server side\n params = { is_instructor: is_instructor, send_email_invite: is_instructor || $scope.options.send_email, enrolled_via: \"enrolled_via_direct_invite\" }\n\n obj = obj.trim()\n if $scope.addMethod.slug == 'add_by_email'\n params.email = obj\n else\n params.member_id = obj\n params.include = \"user-partner-id\"\n\n $scope.userResourceCreate(params).$promise\n\n objectName = if $scope.addMethod.slug == 'add_by_email' then 'email' else 'member_id'\n\n $rootScope.$broadcast \"searchableList:markDirty\"\n $q.allSettled(userCreationPromises).then (createResponses) ->\n [successResponses, errorResponses] = _.partition createResponses, (response) ->\n response.state == \"fulfilled\"\n $scope.step = \"confirm\"\n $scope.uiState.loading = false\n $scope.input.invite_list = \"\"\n $scope.input.success_list = _.map successResponses, (res) ->\n if $scope.addMethod.slug == 'add_by_email'\n res.value.data.attributes.email\n else\n result = V3ModelHelper.parse(res.value)\n result.relationships['user-partner-id'].data.attributes['member-id']\n # TODO how to know the error was from invalid email? for now assume every error means invalid email\n $scope.input.error_invites = _.map errorResponses, (res) ->\n hash = {}\n hash.correct = false\n hash[objectName] = res.reason.config.data[objectName]\n hash\n $scope.trackAddUsersToCourse(CourseContextService.course.id, $scope.addMethod.slug, $scope.input.success_list.length)\n CourseContextService.markRefreshRequired()\n $rootScope.$broadcast \"searchableList:reloadResources\"\n toastHelper.showToast('simpleToast', message: $filter(\"translate\")(\"js.toast.\" + $scope.modalOptions.user_type + \"_added\", count: successResponses.length))\n\n addSingleUser: (invite, is_instructor) ->\n $scope.uiState.loading = true\n params = { is_instructor: is_instructor, send_email_invite: is_instructor || $scope.options.send_email }\n\n if $scope.addMethod.slug == 'add_by_email' then params.email = invite.email else params.member_id = invite.member_id\n\n $rootScope.$broadcast \"searchableList:markDirty\"\n $scope.userResourceCreate params, (success) ->\n $scope.uiState.loading = false\n invite.correct = true\n $scope.trackAddUsersToCourse(CourseContextService.course.id, $scope.addMethod.slug, $scope.input, 1)\n CourseContextService.markRefreshRequired()\n $rootScope.$broadcast \"searchableList:reloadResources\"\n singular_user_type = $scope.modalOptions.user_type.slice(0, -1)\n toastHelper.showToast('simpleToast', message: $filter(\"translate\")(\"js.toast.\" + singular_user_type + \"_added\"))\n , (failure) ->\n $scope.uiState.loading = false\n\n # Track adding users to a course\n trackAddUsersToCourse: (courseId, addMethod, userCount) ->\n return if $scope.modalOptions.user_type == \"partner_users\"\n eventAction = \"Users Added Method - \" + addMethod\n $analytics.eventTrack(eventAction, { category: \"AddUsersToCourse\", label: courseId, value: userCount })\n AmplitudeService.logEvent('invite_users_to_course', { course_id: courseId })\n\n setShowSendEmailOption: () ->\n if $scope.addMethod.slug != 'add_by_email' || $scope.modalOptions.user_type == 'instructors' || $scope.modalOptions.user_type == \"partner_users\"\n $scope.uiState.showSendEmailOption = false\n else if $scope.modalOptions.user_type == 'learners'\n CourseContextService.initialize().then ->\n if CourseContextService.course?.attributes?.state == \"published\"\n $scope.uiState.showSendEmailOption = true\n if CourseContextService.course?.attributes?.state == \"unpublished\"\n $scope.options.send_email = false\n $scope.uiState.showSendEmailOption = false\n\n initialize: () ->\n $scope.addMethod = $scope.optionsToAdd.addByEmail\n $scope.setShowSendEmailOption()\n\n # PartnerUsersResource.create and V3CourseUsersResource.create have different interfaces, but if we partially apply the\n # first argument (used for building the route), the resulting function has the same interface\n if $scope.modalOptions.user_type == \"partner_users\"\n $scope.userResourceCreate = _.curry(PartnerUsersResource.create, 2)({partner_id: myPartnersService.currentProductPartner.id})\n else # learner and instructor both use course user\n CourseContextService.initialize().then ->\n $scope.userResourceCreate = _.curry(V3CourseUsersResource.create, 2)({course_id: CourseContextService.course.id})\n\n if myPartnersService.currentProductPartner?.attributes[\"partner-settings\"]?[\"member-id-enabled\"] && $scope.modalOptions.user_type != 'partner_users'\n $scope.uiState.showInviteOptions = true\n\n $scope.initialize()\n])\n","ceregoCommon.controller(\"courseInfoModal\", ['$analytics', '$filter', '$q', '$scope' , 'DebugHelper', 'V3ModelHelper', 'InstructorNamesHelper', 'paginatedAssignmentsService', ($analytics, $filter, $q, $scope, DebugHelper, V3ModelHelper, InstructorNamesHelper, paginatedAssignmentsService) ->\n\n DebugHelper.register(\"courseInfoModal\", $scope)\n\n _.assignIn $scope,\n paginatedAssignmentsService: paginatedAssignmentsService\n listTemplatePath: Packs.iKnowRoutes.common_v3_templates_path('_assignment_info_tile')\n loadingTemplatePath: Packs.iKnowRoutes.partners_v3_templates_path('_loading_tab_user_metrics')\n stateUI:\n activeAssignment: {}\n\n styles:\n fullRow: true\n showSearchInsideList: false\n\n tabs: [\n slug: \"default\"\n ]\n\n setCurrentAssignment: (assignment) ->\n $scope.stateUI.activeAssignment = assignment\n $analytics.eventTrack(\"self_enroll_browse_assignment\")\n\n initialize: () ->\n $scope.course = $scope.modalOptions.course\n $scope.serviceOptions = { course_id: $scope.course.id }\n $scope.instructorNames = InstructorNamesHelper.getFormattedInstructorNames($scope.course.attributes[\"instructor-names\"])\n $scope.headingText = $filter('translate')('js.learners.about_course_modal.assignment_num', { assignment_count: $scope.course.attributes[\"assignments-count\"] })\n\n\n $scope.initialize()\n\n])\n","ceregoCommon.directive(\"cgProgressCard\", [ ->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"progress_card\")\n scope:\n context: \"=\"\n\n controller: ['$window', '$scope', '$location', '$filter', 'DebugHelper', 'AssignmentDetailsService', 'CourseContextService', 'GoalMathHelper', ($window, $scope, $location, $filter, DebugHelper, AssignmentDetailsService, CourseContextService, GoalMathHelper) ->\n DebugHelper.register(\"cgProgressCard\", $scope)\n\n _.assignIn $scope, {\n uiState:\n loading: true\n #\n initialize: () ->\n if $scope.context == \"course\"\n CourseContextService.initialize().then (success) ->\n $scope.course = CourseContextService.course\n $scope.percent_progress = $filter('decimalToPercentage')($scope.course.meta.progress)\n $scope.uiState.loading = false\n else if $scope.context == \"assignment\"\n AssignmentDetailsService.initialize().then (success) ->\n $scope.assignment = AssignmentDetailsService.assignment\n if $scope.assignment.type == \"sets\"\n $scope.assignment.context_type = \"set\"\n else\n $scope.assignment.context_type = \"series\"\n $scope.percent_progress = parseInt($scope.assignment.meta?['memory-aggregate'].progress * 100) || 0\n if $scope.assignment.meta?['due-at']\n $scope.pastDue = (new Date() > new Date($scope.assignment.meta['due-at']))\n $scope.score = $filter('levelRoundDown')($scope.assignment.meta?['memory-aggregate'].score) || 0 # Should be rounded to a tenth\n $scope.hasLevelGoal = !_.isUndefined($scope.assignment.meta?['level-goal'])\n if $scope.hasLevelGoal\n $scope.level_goal = $filter('levelRoundDown')($scope.assignment.meta?['level-goal'])\n $scope.days_to_achieve = GoalMathHelper.levelToDaysConversion($scope.level_goal)\n $scope.uiState.loading = false\n }\n\n $scope.initialize()\n ]\n])\n","ceregoCommon.controller(\"editQuizModal\", ['$scope', '$filter', 'V3VocabHighlightingService', 'V3PassageHighlightingService', 'V3SmartAutoSaveService', 'V3TransliterationDistractorsResource', 'QuizNameService', 'V3ModelHelper', 'V3ConceptsResource', 'V3ConceptDistractorsResource', 'V3ContentService', 'V3RegionContentService', 'V3RegionsService', 'CombiningMarksService', 'SentenceConverter', 'DebugHelper', ($scope, $filter, V3VocabHighlightingService, V3PassageHighlightingService, V3SmartAutoSaveService, V3TransliterationDistractorsResource, QuizNameService, V3ModelHelper, V3ConceptsResource, V3ConceptDistractorsResource, V3ContentService, V3RegionContentService, V3RegionsService, CombiningMarksService, SentenceConverter, DebugHelper) ->\n DebugHelper.register(\"editQuizModal\", $scope)\n\n $scope.transliterationDistractors = []\n\n _.assignIn $scope,\n V3ContentService: V3ContentService\n V3SmartAutoSaveService: V3SmartAutoSaveService\n QuizNameService: QuizNameService\n\n answer: ''\n manualDistractors: []\n\n IMAGE_DISTRACTORS_COUNT: 5\n TEXT_DISTRACTORS_COUNT: 4\n SEQUENCE_DISTRACTOR_COUNT: 3\n\n QUESTION_REGION_MAX_HEIGHT: 250\n ANSWER_REGION_MAX_HEIGHT: 200\n\n VOCAB_QUIZ_SPACES: 5\n\n stateUI:\n imageQuiz: false\n autogenDistractorsAllowed: false\n\n templateTypes:\n 'fill_in_the_blank':\n iconClass: 'fill-in-the-blank'\n 'multiple_choice':\n iconClass: 'multiple-choice'\n 'sequence_injection':\n iconClass: 'sequence-injection'\n 'click_in_the_dark':\n iconClass: 'click-in-the-dark'\n\n cardSides:\n 'anchor':\n dataModel: $scope.modalOptions.model.relationships.anchor.data\n distractors: $scope.modalOptions.model.relationships.anchor.data?.relationships?.distractors?.data\n 'association':\n dataModel: $scope.modalOptions.model.relationships.association.data\n distractors: $scope.modalOptions.model.relationships.association.data?.relationships?.distractors?.data\n 'sequence_node':\n dataModel: $scope.modalOptions.model.relationships.association.data\n distractors: $scope.modalOptions.model.relationships.association.data?.relationships?.distractors?.data\n 'transliteration':\n dataModel: $scope.modalOptions.model.relationships.association.data\n distractors: $scope.transliterationDistractors\n 'anchor_cloze':\n dataModel: $scope.modalOptions.model.relationships.anchor.data\n distractors: $scope.modalOptions.model.relationships.anchor.data?.relationships?.distractors?.data\n 'sentence':\n dataModel: $scope.modalOptions.model.relationships.anchor.data\n distractors: $scope.modalOptions.model.relationships.anchor.data?.relationships?.distractors?.data\n 'sentence_audio':\n dataModel: $scope.modalOptions.model.relationships.association.data\n 'anchor_audio':\n dataModel: $scope.modalOptions.model.relationships.association.data\n distractors: $scope.modalOptions.model.relationships.association.data?.relationships?.distractors?.data\n\n toggleNota: () ->\n $scope.setImageQuiz()\n $scope.setAutogenDistractorsAllowed()\n\n setAutogenDistractorsAllowed: ->\n $scope.setImageQuiz()\n if $scope.stateUI.imageQuiz\n distractorsRequired = $scope.IMAGE_DISTRACTORS_COUNT\n else\n distractorsRequired = $scope.TEXT_DISTRACTORS_COUNT\n distractorsRequired -= $scope.manualDistractors.length\n $scope.stateUI.autogenDistractorsAllowed = distractorsRequired <= 0\n unless $scope.stateUI.autogenDistractorsAllowed\n $scope.answerSide?.attributes['allow-random-distractors'] = true\n\n hasNOTA: ->\n $scope.modalOptions.model.attributes['nota-settings'][QuizNameService.quizzes[$scope.modalOptions.template].answer]\n\n questionHasQuestionMark: ->\n !_.includes(['sentence', 'anchor_cloze'], QuizNameService.quizzes[$scope.modalOptions.template].question)\n\n quizQuestion: ->\n if $scope.modalOptions.template == 'reverse_transliteration_multiple_choice_limited'\n $scope.modalOptions.model.attributes['transliteration-html']\n else if QuizNameService.quizzes[$scope.modalOptions.template].question == 'anchor_cloze'\n V3PassageHighlightingService.insertBlankInPassage($scope.questionSide)\n else if QuizNameService.quizzes[$scope.modalOptions.template].question == 'sentence'\n # Find the first sentence that has text & convert the term to underscores\n firstSentence = _.filter(V3ContentService.item.relationships.sentences.data, (sentence) -> sentence.attributes['text-html']?)[0]\n V3VocabHighlightingService.insertBlankInSentence(firstSentence)\n else\n $scope.questionSide.attributes['text-html']\n\n fibContent: ->\n return if !$scope.answer\n\n answer = $filter('stripHTML')($scope.answer)\n answer = CombiningMarksService.stripMarks(answer)\n .replace /(.)/g, (char) ->\n if char.match /[\\s\\#]/\n \"\" + char + \"\"\n else\n \"\"\n answer\n\n killDistractor: (distractor) ->\n _.pull($scope.distractors, distractor)\n _.pull($scope.manualDistractors, distractor)\n $scope.setAutogenDistractorsAllowed()\n $scope.setImageQuiz()\n\n showImageQuiz: ->\n QuizNameService.quizzes[$scope.modalOptions.template].type == 'multiple_choice' &&\n $scope.modalOptions.template != 'region_reverse_multiple_choice' &&\n $scope.answerSide.relationships.image.data\n\n showImageAsQuestion: ->\n V3ContentService.item.attributes['template-type'] == 'regions' &&\n ($scope.modalOptions.template == 'multiple_choice_limited' ||\n $scope.modalOptions.template == 'fill_in_the_blank')\n\n removeDistractor: (distractor) ->\n if QuizNameService.quizzes[$scope.modalOptions.template].distractor == 'transliteration'\n V3TransliterationDistractorsResource.delete\n id: distractor.id\n , (success) ->\n $scope.killDistractor(distractor)\n , (error) ->\n DebugHelper.logError(error, \"V3TransliterationDistractorResource Delete Error, id: \" + distractor.id)\n else\n V3ConceptsResource.delete\n id: distractor.id\n , (success) ->\n $scope.killDistractor(distractor)\n , (error) ->\n DebugHelper.logError(error, \"V3ConceptsResource Delete Error, id: \" + distractor.id)\n\n setSaveForAttributes: (distractor) ->\n # If you add or remove an image the quiz type can change from text to image or vice versa\n $scope.$watch \"manualDistractors\", (newVal, oldVal) ->\n if newVal != oldVal\n $scope.setImageQuiz()\n $scope.setAutogenDistractorsAllowed()\n , true\n V3SmartAutoSaveService.registerSaveItem(distractor, \"attributes['text-html']\")\n V3SmartAutoSaveService.registerSaveItem(distractor, \"relationships.image.data.id\")\n\n sentenceAudio: ->\n _.includes(['sentence_audio', 'anchor_audio'], QuizNameService.quizzes[$scope.modalOptions.template].question)\n\n saveNewDistractor: (distractor) ->\n distractor.attributes['is-manual'] = true\n $scope.setSaveForAttributes(distractor)\n $scope.distractors.splice($scope.manualDistractors.length, 0, distractor)\n $scope.manualDistractors.push(distractor)\n $scope.setAutogenDistractorsAllowed()\n\n addDistractor: (distractors) ->\n if QuizNameService.quizzes[$scope.modalOptions.template].distractor == 'transliteration'\n V3TransliterationDistractorsResource.create\n facet_id: V3ContentService.facets[0].id\n , (success) ->\n $scope.saveNewDistractor(V3ModelHelper.parse(success))\n , (error) ->\n console.error error\n else\n V3ConceptDistractorsResource.create\n concept_id: $scope.answerSide.id\n , (success) ->\n $scope.saveNewDistractor(V3ModelHelper.parse(success))\n , (error) ->\n console.error error\n\n setImageQuiz: ->\n distractorAmount = $scope.TEXT_DISTRACTORS_COUNT # If the 5th distractor is the only image, do we want to display an image quiz? Right now it will not\n if $scope.hasNOTA()\n distractorAmount -= 1\n $scope.stateUI.imageQuiz = _.some($scope.answerSide?.relationships?.distractors?.data.slice(0, distractorAmount), (distractor) -> distractor.relationships?.image.data?) || $scope.answerSide?.relationships?.image.data?\n\n saveDistractors: ->\n for distractor in $scope.manualDistractors\n $scope.setSaveForAttributes(distractor)\n\n initializeSVG: (regionName, regionStyle) ->\n $scope.svg = d3.selectAll(regionName + \" svg\")\n $scope.svg[0] = $scope.svg[0].slice($scope.svg[0].length - 1)\n # A better way to do this would be to loop through all the $scope.svg[0]'s, and find the one that matches the current element\n # However, this way should always work and not break in the case the html is changed in the view\n $scope.updateRegions(regionStyle)\n\n updateRegions: (regionStyle) ->\n polygonData = V3RegionsService.polygons($scope.regionHighlight)\n\n polygons = $scope.svg.selectAll(\".editableRegion\").data(polygonData, (d) -> d.points)\n polygons.enter().append(\"polygon\").attr\n class: \"editableRegion region \" + regionStyle\n points: (d) -> d.points\n .style\n filter: \"url(#blur)\"\n polygons.exit().remove()\n\n initialize: () ->\n\n $scope.cardSides[QuizNameService.quizzes[$scope.modalOptions.template].answer].distractors ||= []\n _.set($scope.cardSides[QuizNameService.quizzes[$scope.modalOptions.template].answer].dataModel,\n 'relationships.distractors.data',\n $scope.cardSides[QuizNameService.quizzes[$scope.modalOptions.template].answer].distractors)\n # If the type of distractor is transliteration then the answer should also be a transliteration, the transliteration can be the first one I find within the list of sentences which should always exist\n $scope.sentences = V3ContentService.item.relationships.sentences\n $scope.questionSide = $scope.cardSides[QuizNameService.quizzes[$scope.modalOptions.template].question]?.dataModel\n $scope.answerSide = $scope.cardSides[QuizNameService.quizzes[$scope.modalOptions.template].answer]?.dataModel\n $scope.distractors = $scope.cardSides[QuizNameService.quizzes[$scope.modalOptions.template].answer].distractors\n $scope.answer = $scope.answerSide?.attributes?['text-html']\n if QuizNameService.quizzes[$scope.modalOptions.template].answer == 'transliteration'\n $scope.answer = V3ContentService.facets[0].attributes['transliteration-html']\n\n if V3ContentService.item.attributes['template-type'] == 'regions'\n $scope.regionHighlight = V3RegionContentService.createRegionHighlight($scope)\n $scope.regionsToShow = [$scope.modalOptions.model]\n\n if QuizNameService.quizzes[$scope.modalOptions.template].distractor == 'transliteration'\n V3TransliterationDistractorsResource.query { facet_id: V3ContentService.facets[0].id }\n , (success) ->\n $scope.transliterationDistractors = success.data\n $scope.manualDistractors = _.filter($scope.transliterationDistractors, (t) -> t.attributes['is-manual'])\n $scope.saveDistractors()\n $scope.distractors = $scope.manualDistractors.concat(V3ContentService.facets[0].relationships.association.data.relationships.distractors?.data)\n $scope.setImageQuiz()\n $scope.setAutogenDistractorsAllowed()\n , (error) ->\n DebugHelper.logError(error, \"TransliterationGetError\")\n # xSide is going to be either the association or the anchor depending on the template type\n\n if QuizNameService.quizzes[$scope.modalOptions.template].answer == 'anchor' || QuizNameService.quizzes[$scope.modalOptions.template].answer == 'association'\n $scope.manualDistractors = _.filter($scope.answerSide?.relationships.distractors?.data, (obj) ->\n obj.attributes['is-manual']\n )\n else if QuizNameService.quizzes[$scope.modalOptions.template].distractor != 'transliteration'\n $scope.manualDistractors = $scope.transliterationDistractors\n $scope.saveDistractors()\n\n answerSideSlug = QuizNameService.quizzes[$scope.modalOptions.template].answer\n V3SmartAutoSaveService.registerSaveItem($scope.modalOptions.model, \"attributes['nota-settings']['\" + answerSideSlug + \"']\")\n V3SmartAutoSaveService.registerSaveItem($scope.answerSide, \"attributes['allow-random-distractors']\") if $scope.answerSide\n V3SmartAutoSaveService.registerSaveItem($scope.modalOptions.model, \"attributes['anchor-question-html']\")\n V3SmartAutoSaveService.registerSaveItem($scope.modalOptions.model, \"attributes['association-question-html']\")\n\n $scope.setImageQuiz()\n $scope.setAutogenDistractorsAllowed()\n\n $scope.initialize()\n])\n","var map = {\n\t\"./instructor-names-helper.js\": 802,\n\t\"./smart-group-rule-helper.js\": 803\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 801;","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md\n */\nceregoCommon.service(\"InstructorNamesHelper\", ['$rootScope', '$filter', 'DebugHelper', function($rootScope, $filter, DebugHelper) {\n const $scope = $rootScope.$new();\n DebugHelper.register(\"InstructorNamesHelper\", $scope);\n\n _.assignIn($scope, {\n getFormattedInstructorNames(instructor_names) {\n if (instructor_names.length === 1) {\n return instructor_names[0];\n } else if (instructor_names.length === 2) {\n return $filter('translate')(\"js.learn.courses.course_detail.two_instructors_string\", {instructor_one: instructor_names[0], instructor_two: instructor_names[1]});\n } else if (instructor_names.length === 3) {\n return $filter('translate')(\"js.learn.courses.course_detail.three_instructors_string\", {instructor_one: instructor_names[0], instructor_two: instructor_names[1], instructor_three: instructor_names[2]});\n } else if (instructor_names.length >= 4) {\n const extra_instructors_count = instructor_names.length - 3;\n return $filter('translate')(\"js.learn.courses.course_detail.many_instructors_string\", {instructor_one: instructor_names[0], instructor_two: instructor_names[1], instructor_three: instructor_names[2], extra_instructors_count});\n } else {\n return $filter('translate')(\"js.learn.courses.course_detail.no_instructors_string\");\n }\n }\n }\n );\n\n return $scope;\n}\n]);\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md\n */\nceregoCommon.service(\"SmartGroupRuleHelper\", ['$rootScope', '$filter', 'DebugHelper', function($rootScope, $filter, DebugHelper) {\n const $scope = $rootScope.$new();\n DebugHelper.register(\"SmartGroupRuleHelper\", $scope);\n\n _.assignIn($scope, {\n COMPARATORS: {\n EQUALS: \"=\",\n NOT_EQUALS: \"!=\"\n },\n\n // Given a smart group, generates a descriptive string of the rules e.g. \"Manager is George Michael, Contractor is Y\"\n generateRuleString(group) {\n if (!group.attributes[\"rules-json\"]) {\n return \"\";\n }\n\n const rules_json = JSON.parse(group.attributes[\"rules-json\"]);\n const rule_strings = _.map(rules_json.AND, function(rule_json) {\n const comparator_symbol = _.keys(rule_json)[0];\n const translate_params = {\n label: rule_json[comparator_symbol].tag_type_label,\n value: rule_json[comparator_symbol].value\n };\n if (comparator_symbol === $scope.COMPARATORS.EQUALS) {\n return $filter(\"translate\")(\"js.courses.add_group_modal.is\", translate_params);\n } else if (comparator_symbol === $scope.COMPARATORS.NOT_EQUALS) {\n return $filter(\"translate\")(\"js.courses.add_group_modal.is_not\", translate_params);\n } else {\n // If this happens we are out of sync with backend\n return DebugHelper.logError(comparator_symbol, \"unknown comparator\");\n }\n });\n\n return _.join(rule_strings, \", \");\n },\n\n\n // Given a rules_json object, converts it into rules objects suitable for use with the cgSmartGroupRuleSelector component\n parseRulesJson(rules_json) {\n return _.map(rules_json.AND, function(rule_json) {\n const comparator_symbol = _.keys(rule_json)[0];\n const comparator_text = comparator_symbol === $scope.COMPARATORS.EQUALS ?\n $filter(\"translate\")(\"js.partners.groups.rules.comparators.is\")\n : comparator_symbol === $scope.COMPARATORS.NOT_EQUALS ?\n $filter(\"translate\")(\"js.partners.groups.rules.comparators.is_not\")\n :\n // If this happens we are out of sync with backend\n DebugHelper.logError(comparator_symbol, \"unknown comparator\");\n\n return {\n comparator : comparator_text,\n tag_type_id : rule_json[comparator_symbol].tag_type_id,\n tag_type_label : rule_json[comparator_symbol].tag_type_label,\n value : rule_json[comparator_symbol].value\n };\n });\n }\n });\n\n return $scope;\n}\n]);\n","var map = {\n\t\"./assignment-details-service.js\": 116,\n\t\"./group-context-service.js\": 805,\n\t\"./paginated-instructional-items-service.js\": 118,\n\t\"./smart-group-rule-editor-service.js\": 806,\n\t\"./v3-passage-highlighting-service.js\": 807,\n\t\"./v3-vocab-highlighting-service.js\": 808\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 804;","ceregoCommon.service('GroupContextService', ['$rootScope', '$routeParams', '$q', 'DebugHelper', 'SiteNavigationService', 'V3GroupsResource', 'V3ModelHelper', (\n $rootScope, $routeParams, $q, DebugHelper, SiteNavigationService, V3GroupsResource, V3ModelHelper) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"GroupContextService\", $scope)\n\n _.assignIn $scope,\n group: null\n deferred: null\n\n getGroupId: ->\n return $routeParams.group_id || $routeParams.id || -1\n\n initialize: (checkForRefresh) ->\n # if we already had a group loaded from before but then we're switching to another one\n if $scope.group && $scope.group.id != $scope.getGroupId()\n $scope.resetGroup()\n\n # if some other page marked the service dirty because it modified assignments/users counts\n if checkForRefresh && $scope.refreshRequired\n $scope.resetGroup()\n\n $scope.fetchGroup().then ->\n SiteNavigationService.setContext($scope.group, 'group')\n\n resetGroup: ->\n $scope.group = null\n $scope.deferred = null\n\n # call this function after modifying something that could affect\n # the counts attached to a group object (i.e. users)\n markRefreshRequired: ->\n $scope.refreshRequired = true\n $scope.childRefreshRequired = true\n\n removeChildRefreshRequired: ->\n $scope.childRefreshRequired = false\n\n fetchGroup: ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n $scope.refreshRequired = false\n\n V3GroupsResource.get\n id: $scope.getGroupId()\n , (success) ->\n $scope.group = V3ModelHelper.parse(success)\n $scope.deferred.resolve($scope.group)\n , (error) ->\n DebugHelper.logError(error, \"groupFetchError\")\n $scope.deferred.reject(error)\n $scope.deferred.promise\n\n $scope\n])\n","# This service manages some shared logic for the CreateSmartGroupModal and EditSmartGroupModal. It is separate from SmartGroupRuleHelper\n# because it manages some state that is accessed by both CreateSmartGroupModal and EditSmartGroupModal,\n# whereas SmartGroupRuleHelper only has pure functions and could be used on other pages than the 2 smart group modals\nceregoCommon.service(\"SmartGroupRuleEditorService\", ['$rootScope', '$filter', '$routeParams', 'DebugHelper', 'V3GroupsResource', 'V3ModelHelper', (\n $rootScope, $filter, $routeParams, DebugHelper, V3GroupsResource, V3ModelHelper) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"SmartGroupRuleEditorService\", $scope)\n\n _.assignIn $scope,\n uiState: {}\n\n comparators: [\n $filter(\"translate\")(\"js.partners.groups.rules.comparators.is\"),\n $filter(\"translate\")(\"js.partners.groups.rules.comparators.is_not\")\n ]\n rules: [{}]\n\n initialize: (rules) ->\n $scope.uiState.validRules = false # flag used to prevent saving group if rules are invalid\n $scope.uiState.beforePreview = true # true until preview has been called once\n $scope.uiState.pendingPreview = false # flag used to show spinner over preview card while preview is being generated\n $scope.uiState.previewMembersHeaderString = \"\" # string with count of previewed users\n $scope.uiState.previewMembersString = \"\" # concatenated list of previewable users\n if rules\n $scope.rules = rules\n else\n $scope.rules = [{}]\n\n validateAllRules: ->\n $scope.uiState.validRules = if $scope.rules.length == 0\n false\n else\n _.every($scope.rules, (rule) ->\n _.has(rule, \"tag_type_label\") && !_.isEmpty(rule.tag_type_label)\n )\n\n addRule: ->\n $scope.rules.push({})\n $scope.uiState.validRules = false # new rule is always invalid\n\n deleteRule: (index) ->\n $scope.rules.splice(index, 1)\n $scope.validateAllRules()\n $scope.debouncedPreviewGroupMembers()\n\n ruleAsJson: (rule) ->\n comparatorSymbol = if _.isEqual(rule.comparator, $filter(\"translate\")(\"js.partners.groups.rules.comparators.is\")) then \"=\" else \"!=\"\n json = {}\n json[comparatorSymbol] =\n tag_type_id: rule.tag_type_id\n tag_type_label: rule.tag_type_label # doesn't actually get used by backend. for debugging purposes\n value: rule.value\n json\n\n previewGroupMembers: ->\n $scope.validateAllRules()\n $scope.uiState.beforePreview = false\n $scope.uiState.pendingPreview = true\n rules_json = JSON.stringify({ \"AND\": _.map($scope.rules, (rule) -> $scope.ruleAsJson(rule)) }) # hardcode AND until we support other rules\n V3GroupsResource.smart_group_preview { partner_id: $routeParams.partner_id },\n rules_json: rules_json,\n include: \"user_partner_id\"\n , (success) ->\n previewMembersCount = success.data.length\n if previewMembersCount >= 5\n $scope.uiState.previewMembersHeaderString = $filter(\"translate\")(\"js.partners.groups.create_smart_modal.preview.at_least\", count: previewMembersCount)\n else\n $scope.uiState.previewMembersHeaderString = $filter(\"translate\")(\"js.partners.groups.create_smart_modal.preview.exact\", count: previewMembersCount)\n users = V3ModelHelper.parse(success)\n # TODO stretch goal - add link to user profile here once that page exists\n userStrings = _.map(success.data, (user) ->\n user.attributes.email || user.relationships[\"user-partner-id\"].data.attributes[\"member-id\"]\n )\n $scope.uiState.previewMembersString = _.join(userStrings, \", \")\n $scope.uiState.pendingPreview = false\n\n buildRulesJson: ->\n JSON.stringify({ \"AND\": _.map($scope.rules, (rule) -> $scope.ruleAsJson(rule)) }) # hardcode AND until we support other rules\n\n $scope.debouncedPreviewGroupMembers = _.debounce($scope.previewGroupMembers, 1000, { trailing: true })\n $scope\n])\n","ceregoCommon.service(\"V3PassageHighlightingService\", [->\n service =\n insertBlankInPassage: (cloze) ->\n passageText = cloze.attributes['passage-text']\n clozeOffset = cloze.attributes.offset\n clozeLength = cloze.attributes.length\n\n beforeCloze = passageText.slice(0, clozeOffset)\n blanks = \"______\"\n afterCloze = passageText.slice(clozeOffset + clozeLength, passageText.length)\n\n beforeCloze + blanks + afterCloze\n\n service\n])\n","ceregoCommon.service(\"V3VocabHighlightingService\", [ 'SentenceConverter', (SentenceConverter)->\n service =\n insertBlankInSentence: (sentence) ->\n firstSentenceText = SentenceConverter.html2markup(sentence.attributes['text-html'])\n filterStars = /\\*.*\\*/\n blanks = \"______\"\n firstSentenceText.replace(filterStars, blanks)\n\n service\n])\n","import assignmentPlaceholderImage from 'images/v3/assignment_placeholder_60.png'\n\nceregoCommon.filter('defaultImage', [->\n (image, type) ->\n image.data?.attributes?.url || assignmentPlaceholderImage\n])\n\nceregoCommon.filter('V3filterItemsText', ['$filter', ($filter) ->\n (input, text) ->\n check = (field) ->\n !_.isEmpty(field) && $filter('filter')([field.toLowerCase()], text.toLowerCase()).length > 0\n\n if _.isEmpty(text)\n input\n else\n _.filter(input, (item) ->\n check(item.attributes?.title) ||\n _.some(item.relationships?.facets?.data, (facet_data) ->\n check(facet_data.attributes['association-label']) || check(facet_data.relationships?.anchor?.data?.attributes?['text-html']) ||\n check(facet_data.relationships?.association?.data?.attributes?['text-html'])\n )\n )\n])\n\nceregoCommon.filter('dateInTimezone', ['$filter', ($filter) ->\n (date) ->\n $filter('date')(new Date(date))\n])\n","ceregoCommon.service('milestoneService', ['$rootScope', '$q', 'DebugHelper', 'iFrameMessageService', 'V3MyMilestonesResource', 'V3ModelHelper', ($rootScope, $q, DebugHelper, iFrameMessageService, V3MyMilestonesResource, V3ModelHelper) ->\n\n $scope = $rootScope.$new()\n DebugHelper.register(\"milestoneService\", $scope)\n\n _.assignIn $scope,\n previousMilestones: []\n currentModule: {}\n\n checkNewBadgeUnlocked: () ->\n if $scope.previousMilestones.length > 0\n _.each $scope.milestones, (milestone, index) ->\n milestone.attributes[\"first-time-unlocked\"] = (milestone.attributes[\"reporting-type\"] == \"boolean\" &&\n milestone.attributes.value &&\n !$scope.previousMilestones[index].attributes.value) ||\n (milestone.attributes[\"reporting-type\"] == \"percentage\" &&\n milestone.attributes.value == 1 &&\n $scope.previousMilestones[index].attributes.value < 1)\n if milestone.attributes[\"first-time-unlocked\"]\n iFrameMessageService.postMessage({\n messageType: \"milestone-unlocked\",\n context: {type: $scope.currentModule.type, name: $scope.currentModule.name || $scope.currentModule.attributes.name, id: $scope.currentModule.id},\n data: { milestoneType: milestone.type, value: milestone.attributes.value }\n })\n\n loadMilestones: (module) ->\n if $scope.currentModule.id != module.id || $scope.currentModule.type != module.type\n $scope.currentModule = module\n $scope.previousMilestones = []\n\n params = {}\n switch module.type\n when \"sets\"\n params['set_id'] = module.id\n when \"series\"\n params['series_id'] = module.id\n when \"courses\"\n params['course_id'] = module.id\n\n unless $scope.deferred\n $scope.deferred = $q.defer()\n\n V3MyMilestonesResource.query params\n , (success) ->\n $scope.milestones = V3ModelHelper.parse(success)\n $scope.checkNewBadgeUnlocked()\n $scope.previousMilestones = $scope.milestones\n\n $scope.deferred.resolve($scope.milestones)\n , (error) ->\n $scope.deferred.reject(error)\n $scope.deferred.promise\n\n $scope\n])\n","ceregoCommon.service(\"UserCsvUploader\", ['DebugHelper', '$rootScope', '$q', '$timeout', 'UserCsvUploadsResource', (DebugHelper, $rootScope, $q, $timeout, UserCsvUploadsResource) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"UserCsvUploader\", $scope)\n\n _.assignIn $scope,\n parse: (user_csv_upload_id, params) ->\n if params.dry_run\n finished_state = \"parse_completed\"\n else\n finished_state = \"persist_completed\"\n\n deferred = $q.defer()\n\n onSuccess = (success) ->\n csvUpload = success.data\n if csvUpload.attributes.state == finished_state\n deferred.resolve(csvUpload)\n else if csvUpload.attributes.state == \"error\"\n deferred.reject()\n else\n deferred.notify(csvUpload)\n $timeout ->\n UserCsvUploadsResource.get\n id: user_csv_upload_id\n , onSuccess\n , deferred.reject\n , 2000\n\n UserCsvUploadsResource.parse_background { user_csv_upload_id: user_csv_upload_id },\n params\n , onSuccess\n , deferred.reject\n\n deferred.promise\n])\n","angular.module('cerego.common').component(\"cgMilestonesList\", {\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"milestones_list\"),\n bindings: {\n context: '<' # this can be optional later in the case of dashboard\n # Add a thing for previous stuff\n },\n\n controllerAs: '$milestonesListCtrl',\n\n controller: ['$filter', '$scope', '$q', 'DebugHelper', 'milestoneService', 'LtiService', ($filter, $scope, $q, DebugHelper, milestoneService, LtiService) ->\n DebugHelper.register(\"milestonesListCtrl\", $scope)\n\n this.isBBC = LtiService.isBBC\n this.$onInit = () ->\n that = this\n this.assignmentProgress = Math.floor(this.context.meta['memory-aggregate'].progress * 100) || null\n this.assignmentLevel = $filter('levelRoundDown')(this.context.meta[\"memory-aggregate\"][\"level\"])\n\n milestoneService.deferred = null\n milestoneService.loadMilestones(this.context).then (milestones) ->\n if _.isNull(that.assignmentProgress)\n milestones = _.reject milestones, (milestone) -> milestone.type == \"milestone-set-goal-reacheds\"\n\n that.milestones = milestones\n\n this # otherwise coffeescript will return the onInit function\n ]\n})\n","angular.module('cerego.common').component(\"cgMilestone\", {\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"milestone\"),\n bindings: {\n data: '<'\n },\n\n controllerAs: '$milestoneCtrl',\n\n controller: ['$filter', '$scope', 'DebugHelper', 'LtiService', ($filter, $scope, DebugHelper, LtiService) ->\n DebugHelper.register(\"milestoneCtrl\", $scope)\n\n this.setMilestoneNameAndType = () ->\n this.isBBC = LtiService.isBBC\n if this.isBBC\n slug = \"bbc_\" + this.data.attributes.slug\n else\n slug = this.data.attributes.slug\n this.name = $filter('translate')(\"js.milestones.names.\" + slug) # snake case fix\n this.milestoneType = this.data.attributes.slug.replace('_', '-')\n\n this.setProgress = () ->\n this.showProgressBar = this.data.attributes['reporting-type'] == 'percentage'\n if this.showProgressBar\n this.percentProgress = $filter('decimalToPercentage')(this.data.attributes['value']) # number for % reporting types\n this.completed = this.percentProgress == '100'\n else\n this.completed = this.data.attributes['value'] # true / false for boolean reporting types\n\n this.firstunlocked = this.data.attributes[\"first-time-unlocked\"]\n\n\n this.$onInit = () ->\n this.setMilestoneNameAndType()\n this.setProgress()\n\n this # otherwise coffeescript will return the onInit function\n ]\n})\n","angular.module('cerego.common').component('cgProgressBar', {\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"progress_bar\"),\n bindings: {\n faded: '=?',\n percentProgress: '=',\n styleType:'='\n },\n controllerAs: '$progressBarCtrl',\n controller: ['$scope', 'DebugHelper', '$interval', ($scope, DebugHelper, $interval) ->\n DebugHelper.register('progressBarCtrl', $scope)\n\n $ctrl = this\n\n _.assignIn $ctrl, {\n\n countProgress: () ->\n if $ctrl.stateUI.progress < $ctrl.percentProgress\n $ctrl.stateUI.progress = $ctrl.stateUI.progress + 1\n else\n $interval.cancel($ctrl.progressCounter)\n\n $onInit: () ->\n $ctrl.stateUI = {}\n $ctrl.stateUI.progress = 0\n $ctrl.progressCounter = $interval $ctrl.countProgress, 30\n }\n\n $ctrl\n ]\n})\n","ceregoCommon.factory('V3ConceptDistractorsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_concept_distractors_path(\":concept_id\")\n params:\n concept_id: \"@concept_id\"\n delete:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v3_concept_path(\":id\")\n params:\n id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_concept_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_concept_distractors_path(\":concept_id\")\n params:\n concept_id: \"@concept_id\"\n\n])\n","import * as angular from 'angular';\nimport 'es6-promise/auto'; // Move this to a cerego common if we start using Promise objects elsewhere\nimport * as _ from 'lodash';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\n\ninterface ITip {\n id: string;\n attributes: {\n slug: string;\n };\n meta: object;\n}\n\ninterface ITipJsonApiDocument {\n data: ITip[];\n}\n\ninterface ITipServiceScope extends ng.IScope {\n tipPromises: { [category: string]: Promise };\n tips: { [category: string]: ITip[] };\n load: (object) => Promise;\n dismiss: (tipId: string, category: string) => void;\n}\n\nangular.module('cerego.common').service('tipService', [\n 'TipsResource',\n '$q',\n '$rootScope',\n 'DebugHelper',\n (TipsResource, $q: ng.IQService, $rootScope: ng.IRootScopeService, DebugHelper: IDebugHelper) => {\n const $scope = $rootScope.$new() as ITipServiceScope;\n DebugHelper.register('tipService', $scope);\n\n return _.assignIn($scope, {\n tipPromises: {},\n tips: {},\n\n load: async (options: object): Promise => {\n const category: string = options['filter[category]'];\n if (!$scope.tipPromises[category]) {\n $scope.tipPromises[category] = TipsResource.index(options).$promise;\n }\n const tipsResponse = await $scope.tipPromises[category];\n $scope.tips[category] = tipsResponse.data;\n return tipsResponse.data;\n },\n\n dismiss: async (tipId: string, category: string) => {\n const dismissStatus = await TipsResource.update({ tip_id: tipId }, { status: 'dismissed' }).$promise;\n _.remove($scope.tips[category], { id: tipId });\n }\n });\n }\n]);\n\ninterface ITipCardScope extends ng.IScope {\n tipSlug: string;\n tipCategory: string;\n tip: { id: string; meta: object }; // Make this more specific to the shape of meta\n}\n\nangular.module('cerego.common').directive('tipCard', [\n 'tipService',\n (tipService: ITipServiceScope) => ({\n restrict: 'A',\n\n scope: {\n tipSlug: '@tipCard',\n tipCategory: '@tipCategory'\n },\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) => DebugHelper.register('tipCard', $scope)],\n\n // Temporarily give element the 'any' type, because it believes element is JQLite when it's really jQuery\n link: ($scope: ITipCardScope, element: any, attrs) => {\n element.hide();\n const options = {\n 'filter[category]': $scope.tipCategory\n };\n tipService.load(options).then(tips => {\n $scope.tip = _.find(tips, tip => tip.attributes.slug === $scope.tipSlug);\n if ($scope.tip && !$scope.tip.meta['is-dismissed']) {\n element.show();\n }\n });\n\n return angular.element('.layout-message-card-close').on('click', () => {\n element.remove();\n tipService.dismiss($scope.tip.id, $scope.tipCategory);\n });\n }\n })\n]);\n"],"sourceRoot":""}