{"version":3,"sources":["webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/helpers/goal-math-helper.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/react-navigation-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/amplitude-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/v2/modules/core/user-cookie-helper.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/ar.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/d3.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/de.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/en.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/es.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/fr.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/ja.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/zh-CN.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate/zh-TW.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/api_users_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/categories_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/email_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/flickr_resource.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/groups_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/groups_series_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/groups_sets_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/images_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/item_upload_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/items_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/languages_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/library_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/my-groups-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/my_mailers_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/my_series_resource.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/my_sets_resource.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/oauth2_clients_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/partner_user_roles_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/partner_users_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/scorm_packages_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/series_collaborators_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/series_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/sessions_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/set_collaborators_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/set_exports_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/sets_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/subscriptions_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/tag-type-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/timezones_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/transliteration_distractors_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/user_csv_uploads_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/user_series_collaborators_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/users_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v3-course-users-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v3-courses-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v3-my-milestones-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v3-my-study-items-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v3-series-items-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v3_set_clones_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v3_set_items_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources/v4-recommended-sets-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/tips-resource.js.coffee","webpack://Packs.[name]/./app/assets/images/v2/logos/stripe.png","webpack://Packs.[name]/./vendor/assets/javascripts/soundmanager2/script/berniecode-animator.js","webpack://Packs.[name]/./app/assets/javascripts/util/quill-helper.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/core/conversion-analytics-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/core/debug-helper.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/core/filters.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/core/modal-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/core/v3-model-helper.ts","webpack://Packs.[name]/./vendor/assets/javascripts/v2/angular-hotkeys.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate sync nonrecursive ^\\.\\/.*$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/resources sync nonrecursive ^\\.\\/.*$","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/set-learn-url-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/page-tracking-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/services/free-trial-modal-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/cerego-timeout.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/combining-marks-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/currency-symbol-map.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/dynamic_attributes.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/external-link-helper.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/file_reader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/image-uploader-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/instructional-content-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/item-uploader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/lti-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/lti-redirect-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/module-context-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/new-set-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/nps-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/pagination-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/passage-highlighting-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/user-password-change-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/quiz_name_service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/region_highlighting_service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/sentence-converter.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/sortable-indexing-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/sound-uploader-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/video-uploader-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/partner-account-resource.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/stripe_service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/study-items-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/token-exchange-session-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/uploader-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/v2-group-context-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/v3-image-box.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/v3-sound-box.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/v3-video-box.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/v3-toggle.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/window_helper.js.coffee","webpack://Packs.[name]/./node_modules/moment/locale sync ar|de|es|fr|ja","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/media-processor-service.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/click-to-edit.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/crg_sound_player.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/sound_manager.js","webpack://Packs.[name]/./vendor/assets/javascripts/soundmanager2/script/360player.cerego.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/datepicker.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/flexible-image.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/flickr_search.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/image_uploader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/input-focus.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/input_enter.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/layout-heading-tabs.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/learn_button.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/media_uploader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/module_tiles.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/more_button.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/note-viewer.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/paginate_tiles.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/payportal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/pdf_uploader.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/privacy_type_selector.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/scorm_uploader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/search_text.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/searchable-list.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/sound_uploader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/stats_countdown.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/transcoded_background.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/v3-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/video_uploader.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/directives/stripe-launcher.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/modals sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/modals/add-to-series-modal.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/modals/confirm-email-modal.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/modals/create-scorm-modal.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/modals/good-for-now-modal.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/modals/share-link-modal.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/common/modals/timeout-warning-modal.js","webpack://Packs.[name]/./app/assets/javascripts/transcoder.js","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/v2/modules/core.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/translate.ts"],"names":["angular","service","$rootScope","$filter","DebugHelper","$scope","$new","register","CONST1","CONST2","CONST3","levelToDaysConversion","levelValue","Math","max","round","exp","Number","estimateRangeLower","ceil","daysToLevelConversion","daysValue","log","isValidLevel","isValidDays","$window","$routeParams","setLearnURLService","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","logEvent","eventName","data","_","amplitude","getInstance","identify","identity","_a","setUserId","id","regenerateDeviceId","ceregoCommon","filter","text","replace","$sce","trustAsHtml","toString","$","html","object","attr","trustAsUrl","trustAsResourceUrl","input","encodeURIComponent","batchSize","filtered","push","element","reject","el","image","defaultImage","cost","toFixed","bool","number","floor","decimal","maxLength","length","substring","isString","facets","sortBy","facet","anchor","sequence_node","position","isEmpty","dateText","locale","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","roundTo","n","k","$cookies","key","rawCookie","JSON","parse","this","session_expires_at","sessionExpiresAt","UserCookie","setCookie","stringify","value","sameSite","secure","Cookies","set","constant","ar","fr","thousands","grouping","currency","dateTime","date","time","periods","shortDays","shortMonths","ja","en","es","de","zhCN","zhTW","factory","$resource","query","method","isArray","APIRoutes","v4_partner_api_users_path","params","partner_id","save","delete","v4_api_user_path","v2_categories_path","create","v2_my_emails_path","v2_my_email_path","make_primary","make_primary_v2_my_email_path","confirm_email","v2_my_email_confirmations_path","send_confirmation","send_confirmation_v2_my_emails_path","api_key","format","sort","extras","license","jsoncallback","v2_partner_groups_path","v2_partner_group_path","update","get_for_partner","v2_group_series_path","group_id","v2_group_sets_path","remove","v2_images_path","v2_item_upload_path","v2_item_path","v2_set_items_path","set_id","v2_set_item_path","item_id","v2_languages_path","v2_my_smart_modules_path","nextUp","next_up_v2_my_smart_modules_path","v2_my_groups_path","v2_my_group_path","sendMobileLoginInfo","mobile_login_info_v2_my_mailers_path","v2_my_series_index_path","v2_series_index_path","addSet","add_set_v2_my_series_path","removeSet","remove_set_v2_my_series_path","addToSchedule","add_to_memory_bank_v2_my_series_path","removeFromSchedule","remove_from_memory_bank_v2_my_series_path","addToLibrary","add_to_library_v2_my_series_path","removeFromLibrary","remove_from_library_v2_my_series_path","v2_my_sets_path","add_to_memory_bank_v2_my_set_path","remove_from_memory_bank_v2_my_set_path","add_to_library_v2_my_set_path","remove_from_library_v2_my_set_path","v3_partner_oauth2_clients_path","v3_oauth2_client_path","add","v3_partner_partner_user_roles_path","roles","v3_partner_user_role_path","remove_role","index","v3_partner_users_path","v3_partner_user_path","check_import_job","v3_scorm_package_import_status_path","get_launch_link","v3_scorm_package_launch_link_path","v3_series_contributors_path","series_id","v3_series_contributor_path","v2_series_path","sets","v2_series_sets_path","v2_sessions_path","v2_set_collaborators_path","v2_collaborator_path","user_id","v2_collaborators_path","v2_set_export_path","v2_set_exports_path","v2_set_path","series","series_v2_set_path","v2_sets_path","insert_at","insert_at_v2_series_set_path","itemUploads","v2_set_item_uploads_path","v2_subscriptions_path","v3_partner_tag_types_path","v2_timezones_path","v2_facet_transliteration_distractors_path","facet_id","v2_transliteration_distractor_path","v3_user_csv_upload_path","parse_background","v3_user_csv_upload_parse_background_path","user_csv_upload_id","v3_partner_user_csv_uploads_path","v3_user_goal_list_contributors_path","v2_users_path","v2_user_path","v3_course_users_path","course_id","v3_course_user_path","bulk_destroy_instructors","instructors_v3_course_users_path","bulk_destroy_students","students_v3_course_users_path","clone","clone_v3_course_path","v3_course_path","v3_courses_path","bulk_destroy","v3_partner_courses_path","bulk_update","v3_my_milestones_path","v3_my_study_items_path","v3_series_items_path","v3_set_set_clones_path","v3_set_clone_path","v3_set_items_path","v3_item_path","v4_recommended_sets_path","v3_my_tips_path","v3_my_tip_path","tip_id","exports","Animator","setOptions","_this","timerDelegate","onTimerEvent","subjects","subjectScopes","target","state","lastTime","NumericalStyleSubject","els","property","from","to","units","makeArray","ActiveXObject","camelize","parseFloat","ColorStyleSubject","expandColor","origFrom","origTo","DiscreteStyleSubject","threshold","CSSStyleSubject","style1","style2","toStyle","fromStyle","prop","match","parseStyle","getStyle","fromProp","String","toProp","parseColor","numericalRe","exec","reResult","discreteRe","DEBUG","alert","prototype","applyDefaults","interval","onComplete","onStep","transition","tx","easeInOut","seekTo","seekFromTo","min","getTime","intervalId","setInterval","jumpTo","propagate","toggle","addSubject","subject","scope","clearSubjects","i","setState","apply","now","timePassed","movement","abs","call","clearInterval","play","reverse","inspect","str","prefs","result","undefined","o","string","oStringList","camelizedString","indexOf","charAt","toUpperCase","len","s","style","Array","makeEaseIn","a","pow","makeEaseOut","makeElastic","bounces","cos","PI","makeADSR","attackEnd","decayEnd","sustainEnd","sustainLevel","makeBounce","fn","pos","linear","x","easeIn","easeOut","strongEaseIn","strongEaseOut","elastic","veryElastic","bouncy","veryBouncy","j","e","color","hexColor","parseInt","getValueForState","toColorPart","rgbRe","part","hexRe","digits","rtn","styles","parts","ruleRe","oldClass","className","cssProperties","document","defaultView","getComputedStyle","getPropertyValue","currentStyle","Inline","Quill","Link","Keyboard","tagName","sanitize","createWysiwygQuill","containerElem","toolbarElem","placeholder","modules","formula","toolbar","keyboard","bindings","tab","theme","overrideEnterKey","quill","handlerFunction","addBinding","ENTER","handler","trackConversion","ceregoTrackConversion","counter","$id","$on","registerController","$ctrl","unregister","logError","error","headers","Authorization","size","getTranscodedURL","translateEn","$analytics","$compile","hotkeys","showModal","eventTrack","category","modalOptions","indexToDisplay","modal","createElement","body","append","modalActive","pause","cleanupModal","unpause","parseIncluded","success","included","of","_i","resource","relationships","Object","_c","relationship","humanizeV3Error","response","errors","source","join","parseArray","parseObject","includeMeta","parseDataArray","resources","_b","_d","parsed","provider","$injector","includeCheatSheet","useNgRoute","has","templateTitle","templateHeader","templateFooter","cheatSheetHotkey","cheatSheetDescription","$get","$rootElement","$document","mouseTrapEnabled","symbolize","combo","map","command","shift","left","right","up","down","backspace","navigator","platform","Hotkey","description","callback","action","allowIn","persistent","_formated","Mousetrap","stopCallback","event","contentEditable","sequence","helpVisible","header","footer","toggleCheatSheet","boundScopes","route","purgeHotkeys","forEach","hotkey","_add","helpMenu","documentElement","_del","previousEsc","_get","_callback","preventIn","Function","isUndefined","splice","shouldExecute","srcElement","nodeName","wrapApply","arguments","bind","unbind","retStatus","boundScope","scopeIndex","funcString","$eval","$apply","publicApi","del","bindTo","pop","args","directive","restrict","link","attrs","func","hotkeyAllowIn","hotkeyDescription","hotkeyAction","run","webpackContext","req","webpackContextResolve","__webpack_require__","Error","code","resolve","SiteNavigationService","isV4Embed","getUrl","Module","version","preview","v3_react_learn_set_path","studyType","v3_react_user_journey_path","quiz_v2_set_learn_path","AmplitudeService","trackedVisitItemEditor","trackedVisitPartnerDashboard","trackPage","pageName","visited_url","ModalService","isPartnerExpired","partner","expiresAt","attributes","shouldDisplayFreeTrialExpiredModal","allPartnersExpired","currentProduct","currentPartner","isLearn","displayFreeTrialExpiredModal","noCloseButton","excludeController","pageTrack","IdleProvider","KeepaliveProvider","TitleProvider","idle","SESSION_REFRESH_LENGTH","timeout","enabled","$timeout","Idle","Keepalive","V3SessionResource","running","watch","cookie","delayMsec","interrupt","ping","marks","splitIntoCombinedLetters","letters","reSymbolWithCombiningMarks","RegExp","$0","symbol","combiningMarks","stripMarks","re","currencyToSymbolMap","ngAttrName","attrName","pair","priority","$observe","$set","CREATE_INCOMPLETE_GUIDE","CREATE_TRANSFER_GUIDE","CREATE_V3_GUIDE","HELP_CENTER","REFERRAL_LINK_A","REFERRAL_LINK_B","getGuideSection","section","subtype","$q","read","file","deferred","defer","reader","FileReader","onload","onerror","onabort","onprogress","notify","promise","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","V3MediaUploader","V3ImagesResource","STEPS","UPLOAD","EDIT","ALTER","activeModel","stateUI","currentStep","form","blockingObject","block","insertImage","assign","model","saveFunction","updatedImageId","imageForm","$dirty","closeModal","setCurrentStep","showAlterView","$event","preventDefault","iconTheme","imageEditor","querySelector","includeUI","loadImage","menu","usageStatistics","ui","shape","stroke","fill","strokeWidth","saveAlteredImage","dataURL","toDataURL","substr","content_type","alt_tag","license_id","orig_url","orig_owner","then","cloneDeep","$watch","newVal","oldVal","ItemsResource","V3SetItemsResource","V3SeriesItemsResource","V3ModelHelper","instructionalContent","showItem","currentItem","getInstructionalContent","$broadcast","setContext","context","addInstructionalContentItem","module_type","include","hasInstructionalContent","showInstructionalContent","exitInstructionalContent","SetsResource","ItemUploadResource","upload","items","items_count","itemUpload","onSuccess","status","$location","V3CoursesResource","ltiOutcomeHash","lti_outcome_hash","console","ltiClientId","lti_client_id","ltiClientName","lti_client_name","ltiGroupId","isBBC","isLtiOutcomeRequest","lis_outcome_service_url","lis_result_sourcedid","loadGroup","ltiGroup","paymentRequired","meta","failure","current","previous","TokenExchangeSessionService","exchangeTokenAndRedirect","tempLogintoken","temp_login_token","redirectUrl_1","redirect_url","redirectSearch_1","exchangeTokenForOAuth","SeriesResource","initialize","hasOwnProperty","fetchModule","include_unstudiable","reset","V3PartnersResource","UserManager","myPartnersService","routes","uiState","edit_v4_edit_set_path","edit_v3_create_set_path","createNewSet","setType","isTour","learnVersion","href","new_v2_set_path","trackSegment","assignment_type","queryParameters","tour","initializePartner","loadUser","user","parentId","$promise","currentProductPartner","v3_signin_path","displayNPS","segmentation","getSegmentation","delighted","survey","email","createdAt","initialDelay","properties","stage","is_paid","segment","vertical","is_mooc","is_courseware","learn_version","role","getRole","getClassAndPage","currentPage","totalPages","pages","class","times","unshift","passageWithHighlightedNode","node","offset","cloze_text","passageWithBlankNode","passage_text","passageWithHighlights","nodes","V3UsersResource","user_min_password_len","fields","password","password_confirmation","hidden","inputType","passwordConfirm","updatePassword","toggleShowPassword","quizzes","application_question_select","question_and_answer_select","multiple_choice_limited","question","distractor","answer","ask","region_multiple_choice_limited","reverse_multiple_choice_limited","region_reverse_multiple_choice","region_reverse_click_in_the_dark","cloze_multiple_choice_limited","cloze_fill_in_the_blank","listening_multiple_choice_limited","region_fill_in_the_blank","fill_in_the_blank","reverse_fill_in_the_blank","dictation_fill_in_the_blank","sentence_multiple_choice_limited","transliteration_multiple_choice_limited","reverse_transliteration_multiple_choice_limited","sentence_fill_in_the_blank","transliteration_fill_in_the_blank","reverse_transliteration_fill_in_the_blank","sequence_injection","dimensions","ratio","width","height","regions","marker_rectangle","points","image_map_node","region_polygon","point","y","polygon","p","RegionHighlightingService","dash","allowTooltip","disableclick","onLoad","regions_v2_templates_path","tooltipVisible","selectRegion","region","offsetX","offsets","offsetY","originalEvent","pageOffset","layerX","layerY","top","scaledOffsets","toggleRegionTooltip","$emit","rightMostPoint","topMostPoint","bottomMostPoint","selectedRegion","tooltip","calculateSize","$el","hide","parent","scaleFactor","region_facets","concat","newHeight","newWidth","x1","x2","y1","y2","text2html","word","manual_word","safe_word","exact_match","contains_match","replacement","html2markup","getSortablePosition","sortables","startIndex","targetIndex","otherSortables","sortable","processing","populated","uploadStatus","complete","total","percentage","active","triggerUpload","insertSound","showProgress","uploaderStatus","insertVideo","v3_partner_account_path","token","checkoutOptions","StripeCheckout","getScript","configureHandler","amount","panelLabel","checkout","configure","allowRememberMe","V3MyStudyItemsResource","LtiService","loadStudyItem","sessionContextType","sessionContextId","fromPath","studyItem","collections","obj","collectionNames","setIds","collection","seriesIds","collectionIds","uniq","unstarted","fading","showFading","primaryCollection","bodyTextHtml","buttonText","valid","studySessionId","sessionLengthSec","scormPackage","loaded","learnPathId","collectionType","learnPath","getLearnPath","getRouteType","hasSingleCollection","routeType","v2_learn_path","quiz_v2_series_learn_path","contextId","contextType","v3StudyType","returnURL","skipSessionSelect","getAssignmentLearnPath","assignmentType","assignmentId","tempLoginToken","oauthAccessToken","oauthToken","CeregoAPI","scormUploader","GroupsResource","GroupsSetsResource","GroupsSeriesResource","MyGroupsResource","groups","fetchModules","group","setsLoaded","seriesLoaded","fetchGroups","with_partner_info","groupIds","includes","managedGroups","g","permissions","editable","myGroups","difference","is_admin","find","groupId","dynamicHeight","forcedHeightClass","allowFormula","hideTrashcan","noteId","common_v3_templates_path","launchModal","resetModel","stopPropagation","opt","disabled","updateFn","inIframe","self","stream","recorder","playerElem","constraints","initRecording","media","player","audio","video","mediaDevices","getUserMedia","muted","srcObject","beginRecording","endRecording","stopRecording","displayRecording","getTracks","track","stop","isVideo","mimeType","recorderType","RecordRTC","MediaStreamRecorder","StereoAudioRecorder","timeSlice","setRecordingDuration","onRecordingStopped","startRecording","streamFailed","err","blob","getBlob","toURL","File","lastModified","setCallback","cbk","compatibleBrowser","ua","userAgent","isIE","isEdge","test","isSafari","placeholderText","bindAsHtml","editorHelpTemplate","startEditingFunction","finishEditingFunction","ellipsisLength","$element","editorEnabled","startEditing","children","focus","finishEditing","updatedValue","setDisplayText","displayText","on","localStorageService","crgSoundPlayer","addClass","settings","effectVolume","threeSixtyPlayer","debouncedInit","require","isSoundPlaying","jQuery","playSoundId","soundManager","playVisibleSoundInPlayer","finished","soundNode","protocol","click","playSound","mySound","createSound","volume","currentVolume","onfinish","stopSounds","oSound","each","sounds","sound","stopSound","fanIn","unload","pauseSound","resumeSound","resume","loadSound","loadedCallback","loadSounds","urls","completedCallback","loadedURLs","loadCompleted","setVolume","ready","setup","flashVersion","ThreeSixtyPlayer","pl","sm","uA","isOpera","isChrome","isTouchDevice","hasRealCanvas","G_vmlCanvasManager","getContext","fullCircle","excludeClass","links","soundsById","indexByURL","lastSound","lastTouchedSound","soundCount","oUITemplate","oUIImageMap","vuMeter","callbackCount","peakDataHistory","playNext","autoPlay","allowMultiple","loadRingColor","playRingColor","backgroundRingColor","segmentRingColor","segmentRingColorAlt","loadRingColorMetadata","playRingColorMetadata","circleDiameter","circleRadius","animDuration","animTransition","showHMSTime","scaleFont","useWaveformData","waveformDataColor","waveformDataDownsample","waveformDataOutside","waveformDataConstrain","waveformDataLineRatio","useEQData","eqDataColor","eqDataDownsample","eqDataOutside","eqDataLineRatio","usePeakData","peakDataColor","peakDataOutside","peakDataLineRatio","useAmplifier","fontSizeMax","scaleArcWidth","useFavIcon","css","sDefault","sBuffering","sPlaying","sPaused","addEventHandler","addEventListener","evtName","evtHandler","attachEvent","removeEventHandler","removeEventListener","detachEvent","hasClass","cStr","removeClass","getElementsByClassName","tagNames","oParent","doc","matches","getElementsByTagName","all","getParentByNodeName","oChild","sParentNodeName","parentNode","getParentByClassName","sParentClassName","getSoundById","isChildOfNode","sNodeName","isChildOfClass","oClass","findParent","nodeType","sProp","findXY","curleft","curtop","offsetLeft","offsetTop","offsetParent","getMouseXY","touches","pageX","pageY","clientX","clientY","getScrollLeft","getScrollTop","scrollLeft","scrollTop","events","_360data","oUIBox","fanOut","finish","nextLink","didFinish","oLink","handleClick","trigger","whileloading","paused","updatePlaying","whileplaying","fps","bufferchange","isBuffering","stopEvent","returnValue","getTheDamnLink","button","canvasElements","sURL","soundURL","thisSound","oContainer","has_vis","diameter","getAttribute","canPlayLink","_writeDebug","soundId","parentElement","soundid","pauseAll","togglePause","crgClass","classList","onplay","onstop","onpause","onresume","onbufferchange","offsetWidth","oUI360","oCanvas","oButton","oTiming","oCover","pauseCount","radius","fontSize","amplifier","radiusMax","widthMax","lastValues","bytesLoaded","bytesTotal","durationEstimate","animating","oAnim","oAnimProgress","nProgress","opacity","playState","Metadata","metadata","refreshCoords","setTimeout","resetLastValues","canvasXY","canvasMid","canvasMidXY","buttonClick","nextSibling","buttonMouseDown","mouseDown","onmousemove","oData","evt","mmh","mouseUp","onmouseup","mouseUP","coords","deltaX","deltaY","angle","rad2deg","atan2","setPosition","drawSolidArc","radians","startAngle","noClear","ctx","innerRadius","doesntLikeZero","endPoint","canvas","clearCanvas","fillStyle","beginPath","isNaN","arc","getArcEndpointCoords","lineTo","closePath","sin","deg2rad","nDeg","nRad","nMSec","bAsString","nSec","offsetHeight","clearRect","timeNow","ringScaleFactor","innerHTML","instanceOptions","updateWaveform","updateVU","features","waveformData","eqData","peakData","direction","downSample","sampleCount","endAngle","waveData","perItemAngle","eqSamples","playedAngle","nPeak","offY","scale","getUIHTML","uiTest","sClass","oFakeUI","oFakeUIBox","oTemp","fakeDiameter","uiHTML","oTemplate","appendChild","cloneNode","removeChild","init","defaultOptions","oCanvasCTX","uiData","uiDataVis","oUI","oBtn","o2","oID","oItems","oLinks","is_vis","foundItems","backgroundImage","oUITemplateVis","insertBefore","initElement","getElementById","translate","rotate","VUMeter","me","_head","isFirefox","vuMeterData","vuDataCanvas","setPageIcon","sDataURL","rel","resetPageIcon","createVUData","vuGrad","createLinearGradient","bgGrad","addColorStop","setAttribute","fillRect","testCanvas","c","_wD","oDuration","oBox","lastWPExec","refreshInterval","totalTime","d","fullDuration","isAlt","endTimeMS","startTimeMS","refresh","mainTitle","strToTime","sTime","segments","givenDuration","startTime","startSeconds","durationMS","oNote","useHTML5Audio","html5PollingInterval","debugMode","consoleOnly","useHighPerformance","useFlashBlock","isHome","debounce","onready","future","past","defaultDate","minDate","maxDate","setToEndOfDay","setToStartOfDay","yearRange","datepicker","changeMonth","changeYear","dateFormat","onSelect","selectedDate","endOfDayTime","setHours","startOfDayTime","isDate","toISOString","noZoom","v2_template_path","enableZoom","zoom","disableZoom","toggleClass","FlickrResource","cgFlickrSearch","paginationService","page","perPage","doSearch","dirty","per_page","numPages","photos","photo","paddedRange","range","totalCount","goToPage","num","close","pickPhoto","ownername","isNull","$parent","$orig_owner","$url","url_m","$license_id","onInput","val","MediaUploader","onDrop","mode","imageWidth","imageHeight","customTitle","uploadOnly","UploaderService","imageUploader","imageUploaders","dragover","imageUpload","setTabs","tabs","slug","generateFormulaImage","elementId","svg","img","Image","image_src","getDataUriForSVG","src","insertAdjacentElement","resizeCanvas","drawImage","png_base_64_data","uploadImageFromBase64","xml","XMLSerializer","serializeToString","btoa","maxSize","svg_rect","aspect_ratio","getBoundingClientRect","getMathJaxFormula","MathJax","Hub","Queue","onImageDrop","dataTransfer","getData","onImageUploadProgress","progress","toggleImageMode","setImageTab","data_uri","uploadImage","uploadImageFromFile","$file","uploadImageFromUrl","V3ImageUpload","V2ImageUpload","json","deleteImage","handleDragLeave","handleDragOver","types","closest","which","cgEnter","activeTab","setActiveTab","buttonClassPreset","preloadRoute","scormPackageId","analyticsEventName","embed","goalType","studiableItems","$route","ContextService","StudyItemsService","ScormPackagesResource","states","in_progress","learn","review","good_for_now","shouldDisplay","requestNumber","getLaunchLink","getStudySessionRoute","closuredRequestNumber","pathname","resetLearnPath","updateButton","launchStudySession","shouldLaunchGoodForNowModal","pick","launchLearnApp","force_reload","reload","URL","searchParams","setStudyText","studyText","setButtonClass","buttonClass","skipModal","isAssessment","isSurvey","ensureValidStudyItem","setStudyItemState","isAssignmentContext","canShortCircuitStudyItemsLoad","updateScormPackageId","files","cgMediaChange","$http","media_type","progressHandler","v3_images_path","v3_documents_path","v3_scorm_packages_path","v3_videos_path","v3_sounds_path","transformRequest","headersGetter","fd","FormData","v","cache","uploadEventHandlers","eventHandlers","fileName","v2_sounds_path","ajax","dataType","xhr","myXhr","ajaxSettings","contentType","processData","defaultGoalImage","defaultUserImage","isCreateProduct","isCreate","modulePath","v2_create_set_path","v2_create_series_path","v3_learn_set_path","v3_learn_series_path","parsedDescription","description_html","isCurrentSet","currentSet","selectSet","creatorPath","precomputeData","timer","clearTimeout","currentQuiz","isFullEmbed","annotationImageUrl","annotationSoundUrl","annotationVideoUrl","setAnnotationsByColumn","annotationsByColumn","groupBy","note_type","quiz_type","setUiState","numColumns","column","columns","pdfAnnotation","isFullBleed","embedTargetUrl","limit","modulesCount","count","lastPage","pageArray","currentMinShown","currentMaxShown","decrementPage","notifyPageChanged","incrementPage","prepPageArray","totalPage","course","successCallback","StripeService","V3CourseUsersResource","stripeHandler","stripeOptions","$onInit","paymentAmount","_element","pdfUploaders","pdfUpload","onPdfUploadProgress","uploadPdfFromFile","uploadPdf","uploadPdfFromUrl","V3PDFUpload","V2PDFUpload","_result","_error","deletePdf","_$event","displayExistingPdf","_attrs","setPrivacy","privacy","requireCaptcha","privacy_type_id","privacy_type","shouldShowCantGoPublicMessage","memories_count","public_toggleable","cantGoPublic","studiable_memories_count","onCaptchaSuccess","canSetGroup","importJobStatus","SUCCESS","IN_PROGRESS","ERROR","getFileName","extension_index","lastIndexOf","onScormUploadProgress","uploadPercentage","uploadScorm","uploadError","uploadInProgress","checkImportJobUntilComplete","scorm_package_id","package_id","uploadCompleted","hideError","sets_v2_templates_path","transclude","searchText","callCallBack","serviceOptions","searchHeading","cardHeading","tabShortcuts","hideSearch","editableTileFunctions","selectable","allowSelectEverything","selectEverythingTranslateSlug","isLti","resourceTemplate","tileTemplate","allowTileListSwitcher","resourceAction","emptyTemplate","loadingTemplate","forbiddenTemplate","customOrderings","resourceActions","resourceUrl","CourseContextService","reactNavigationService","sortableOptions","cursor","forcePlaceholderSize","axis","handleDropEvent","sortStates","searchOptions","defaultResourceImage","loading","showResourceDropdown","forbidden","orderings","desc","asc","default_direction","dropindex","position_delta","updateResources","toggleSelected","everythingSelected","selected","allSelected","every","anySelected","toggleAllSelected","toggleEverythingSelected","toggleResourceDropdown","resourceId","newState","clearSelections","oldTabSlug","useSavedSortStates","applyCustomOrderings","resetSort","populateMissingOptions","getPageForTab","getPaginatedResults","skippedItems","firstIndex","lastIndex","empty","setOrderingAndSearch","order","setOrdering","searchResources","draggable","toggleSortDirection","toggleMenu","tabsToSearch","initializing","tabPromises","allSettled","responses","searchQuery","customOrdering","only_for_tab","hideResourceDropdown","hideLtiCtas","noLti","cta","styling","dropDownResourceAction","setCurrentViewMode","viewMode","currentViewMode","ordering","resetSortAndSearchResources","goToUserProfile","courseRowClick","v3_learn_course_path","debouncedSearchResources","pageSize","assignmentTileable","courseTileable","off","showSearchInsideList","MediaProcessorService","soundUploaders","recording","showTab","onUploadProgress","attachMedia","fileURL","createObjectURL","uploadMedia","V3SoundUpload","V2SoundUpload","deleteSound","toggleRecording","$control","showRecording","seeNext","$interval","ContentMemoryManager","MemoryStorage","hiddenStaticString","countdownTimerDelay","tick","seeNextAt","intSeconds","intMinutes","intHours","intDays","staticStringCoundown","counterLessThanDay","load","memoryAggregate","memories","see_next_at","cancel","image_url","cgDefaultImage","modalName","modalTypes","closeCallback","$destroy","focusedElementBeforeOpen","isDefault","modalType","isTransparent","focusableElementList","handleBackwardTab","tabableElements","activeElement","first","last","handleForwardTab","handleTabbing","shiftKey","modalTemplatePath","snakeCase","flag","preventDismissModal","allowRouteChangeFromModal","globalListener","dialogDescription","camelCase","modalClass","keydown","keyCode","videoUploaders","control","$player","controls","deleteVideo","imageUrl","planId","PartnerAccountResource","plan_id","MySeriesResource","PartnersResource","seriesName","fetchMySeries","myseries","chooseSeries","setAlreadyInSeries","EmailsResource","manageEmails","confirmEmail","confirmingEmail","__guard__","transform","toastHelper","V3SetsResource","V3CourseSetsResource","setIsValid","createSet","icon_image_id","partnerId","edit_details_v2_create_set_path","updateLink","selectedSize","learnAppLink","v2_series_learn_path","v2_set_learn_path","iframeLink","iframeSizes","label","countDown","startTimeOut","signOutUser","SECONDS_TO_COUNTDOWN","destroy","lti_inactivity_logout_v3_static_path","continueSession","smallUrl","small_url","mediumUrl","medium_url","largeUrl","large_url","v3_my_instructional_presentations_path","v3_sets_path","v3_set_path","v3_course_sets_path","v3_course_set_path","v3_series_path","authenticate","authenticate_v3_oauth_index_path","v3_oauth_path","includeLinks","includeLists","includeUnderline","onPaste","autofocus","onChange","onFocus","hideToolbar","autowidth","onEnterKey","editorChanged","bottomBarHeight","minHeight","currentWidth","updateWidth","quillElem","root","clientWidth","clipboard","dangerouslyPasteHTML","$digest","newText","oldText","content","setText","delta","oldDelta","innerText","trim","$applyAsync","$analyticsProvider","$locationProvider","$provide","$httpProvider","html5Mode","requireBase","ga","additionalAccountNames","request","when","interceptors","xsrfCookieName","xsrfHeaderName","$log","translationId","$uses","$translateProvider","translateD3","translateFr","translateAr","translateJa","translateDe","translateEs","translateZhCN","translateZhTW","browserLanguage","language","desiredLanguage","preferredLanguage","startsWith","translations","useMissingTranslationHandler","d3Formatter","d3","timeFormat","numberFormat"],"mappings":"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","file":"js/application-584eb49f0568c3722439.chunk.js","sourcesContent":["import * as angular from 'angular';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\nimport { IFilterCore } from 'v2/modules/core/filters';\n\nexport interface IGoalMathHelper extends ng.IScope {\n levelToDaysConversion: (levelValue: number) => number;\n daysToLevelConversion: (daysvalue: number) => number;\n estimateRangeLower: (levelValue: number) => number;\n isValidLevel: (levelValue: number) => boolean;\n isValidDays: (daysValue: number) => boolean;\n}\n\ninterface IFilter extends IFilterCore {\n (name: 'levelRoundDown'): (level: number) => number;\n}\n\nangular.module('cerego.common').service('GoalMathHelper', [\n '$rootScope',\n '$filter',\n 'DebugHelper',\n ($rootScope: ng.IRootScopeService, $filter: IFilter, DebugHelper: IDebugHelper) => {\n const $scope = $rootScope.$new() as IGoalMathHelper;\n DebugHelper.register('GoalMathHelper', $scope);\n\n const MIN_LEVEL = 0;\n const MAX_LEVEL = 4.0;\n const DVALUE = 2; // Commence magical numbers from Iain\n const EVALUE = 1.2;\n const CONST1 = 0.1234;\n const CONST2 = 0.7526;\n const CONST3 = 1.7414;\n\n $scope.levelToDaysConversion = levelValue => {\n return Math.max(Math.round(EVALUE * (Math.exp((Number(levelValue) - CONST1) / CONST2) - CONST3) + DVALUE), 2);\n }; // edge case at very low level values\n\n $scope.estimateRangeLower = levelValue => {\n return Math.ceil(0.8 * ($scope.levelToDaysConversion(levelValue) - 2));\n };\n\n $scope.daysToLevelConversion = daysValue => {\n return Number($filter('levelRoundDown')(CONST1 + CONST2 * Math.log((daysValue - DVALUE) / EVALUE + CONST3)));\n };\n\n $scope.isValidLevel = levelValue => {\n return (\n levelValue >= MIN_LEVEL &&\n levelValue <= MAX_LEVEL &&\n levelValue === Number($filter('levelRoundDown')(levelValue))\n );\n };\n\n $scope.isValidDays = daysValue => {\n return daysValue === Number(daysValue) && $scope.isValidLevel($scope.daysToLevelConversion(daysValue));\n };\n\n return $scope;\n }\n]);\n","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","import * as angular from 'angular';\nimport * as _ from 'lodash';\nimport { IDebugHelper } from '../../../../v2/modules/core/debug-helper';\n\nexport interface IAmplitudeService extends ng.IScope {\n trackPage: (pageName: string) => void;\n logEvent: (eventName: string, data: any) => void;\n identify: (identity: any) => void;\n setUserId: (id: number) => void;\n regenerateDeviceId: () => void;\n}\n\nangular.module('cerego.common').service('AmplitudeService', [\n '$rootScope',\n 'DebugHelper',\n ($rootScope: ng.IRootScopeService, DebugHelper: IDebugHelper) => {\n const $scope = $rootScope.$new() as IAmplitudeService;\n\n DebugHelper.register('AmplitudeService', $scope);\n\n $scope.logEvent = (eventName, data) => {\n // don't track url loading in development so we don't spam amplitude each time the file is saved\n if (!_.includes(process.env.RAILS_ENV, 'govcloud')) {\n amplitude.getInstance().logEvent(eventName, data);\n }\n };\n\n $scope.identify = identity => {\n if (!_.includes(process.env.RAILS_ENV, 'govcloud')) {\n amplitude.getInstance()?.identify(identity);\n }\n };\n\n $scope.setUserId = id => {\n if (!_.includes(process.env.RAILS_ENV, 'govcloud')) {\n amplitude.getInstance().setUserId(id);\n }\n };\n\n $scope.regenerateDeviceId = () => {\n if (!_.includes(process.env.RAILS_ENV, 'govcloud')) {\n amplitude.getInstance().regenerateDeviceId();\n }\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","import Cookies from 'js-cookie';\n\nexport default class UserCookie {\n public locale?: string = null;\n public sessionExpiresAt: Date;\n private $cookies: ng.cookies.ICookiesService;\n private key = '_cerego_user';\n\n constructor($cookies) {\n const rawCookie = JSON.parse($cookies.get(this.key) || '{}');\n\n this.$cookies = $cookies;\n if (rawCookie.locale) {\n this.locale = rawCookie.locale;\n }\n if (rawCookie.session_expires_at) {\n this.sessionExpiresAt = new Date(rawCookie.session_expires_at);\n }\n }\n\n public setLocale(locale: string): UserCookie {\n this.locale = locale;\n return this;\n }\n\n public write() {\n return setCookie(\n this.key,\n JSON.stringify({\n locale: this.locale,\n session_expires_at: this.sessionExpiresAt\n })\n );\n }\n}\n\nexport function setCookie(key, value) {\n const options = process.env.RAILS_ENV === 'development' ? {} : { sameSite: 'None', secure: true };\n\n return Cookies.set(key, value, options);\n}\n","import * as ar from '../../../../../../config/locales/js/ar.json';\nangular.module('cerego.translate').constant('translateAr', ar);\n","angular.module(\"cerego.translate\").constant \"translateD3\",\n fr:\n decimal: \",\"\n thousands: \".\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%a %b %e %X %Y\"\n date: \"%d/%m/%Y\"\n time: \"%H:%M:%S\"\n periods: [ \"mat.\", \"ap.m.\" ]\n days: [ \"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\" ]\n shortDays: [ \"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\" ]\n months: [ \"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\" ]\n shortMonths: [ \"janv\", \"févr\", \"mars\", \"avr\", \"mai\", \"juin\", \"juil\", \"août\", \"sept\", \"oct\", \"nov\", \"déc\" ]\n ar:\n decimal: \".\"\n thousands: \",\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%a %b %e %X %Y\"\n date: \"%d/%m/%Y\"\n time: \"%H:%M:%S\"\n periods: [ \"فجرا\", \"ظهرًا\" ]\n days: [ \"الأحد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\" ]\n shortDays: [ \"الأحد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\" ]\n months: [ \"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\" ]\n shortMonths: [ \"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\" ]\n ja:\n decimal: \".\"\n thousands: \",\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%a %b %e %X %Y\"\n date: \"%Y/%m/%d\"\n time: \"%H:%M:%S\"\n periods: [ \"午前\", \"午後\" ]\n days: [ \"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\" ]\n shortDays: [ \"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\" ]\n months: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\" ]\n shortMonths: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\" ]\n en:\n decimal: \".\"\n thousands: \",\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%a %b %e %X %Y\"\n date: \"%m/%d/%Y\"\n time: \"%H:%M:%S\"\n periods: [ \"AM\", \"PM\" ]\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ]\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ]\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ]\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n es:\n decimal: \".\"\n thousands: \",\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%x, %X\",\n date: \"%d/%m/%Y\",\n time: \"%-I:%M:%S %p\"\n periods: [\"AM\", \"PM\"]\n days: [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"]\n shortDays: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"]\n months: [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"]\n shortMonths: [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\", \"jul\", \"ago\", \"sep\", \"oct\", \"nov\", \"dic\"]\n de:\n decimal: \",\"\n thousands: \".\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%a %b %e %X %Y\"\n date: \"%d/%m/%Y\"\n time: \"%H:%M:%S\"\n periods: [ \"AM\", \"PM\" ]\n days: [ \"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\" ]\n shortDays: [ \"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\" ]\n months: [ \"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\" ]\n shortMonths: [ \"Jan\", \"Feb\", \"März\", \"Apr\", \"Mai\", \"Juni\", \"Juli\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dez\" ]\n 'zh-CN': # TODO: Update this as appropriate\n decimal: \".\"\n thousands: \",\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%a %b %e %X %Y\"\n date: \"%m/%d/%Y\"\n time: \"%H:%M:%S\"\n periods: [ \"AM\", \"PM\" ]\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ]\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ]\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ]\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n 'zh-TW': # TODO: Update this as appropriate\n decimal: \".\"\n thousands: \",\"\n grouping: [ 3 ]\n currency: [ \"$\", \"\" ]\n dateTime: \"%a %b %e %X %Y\"\n date: \"%m/%d/%Y\"\n time: \"%H:%M:%S\"\n periods: [ \"AM\", \"PM\" ]\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ]\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ]\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ]\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n","import * as de from '../../../../../../config/locales/js/de.json';\nangular.module('cerego.translate').constant('translateDe', de);\n","// Convert to ts after https://github.com/Microsoft/TypeScript/pull/24959 is released and we update\n// https://github.com/TypeStrong/ts-loader/issues/793\n// https://github.com/Microsoft/TypeScript/issues/12976#issuecomment-393890391\n\n//declare const ceregoTranslate: ng.IModule; // move to a common types declaration later\n\nimport * as en from '../../../../../../config/locales/js/en.json';\nangular.module('cerego.translate').constant('translateEn', en);\n","import * as es from '../../../../../../config/locales/js/es.json';\nangular.module('cerego.translate').constant('translateEs', es);\n","import * as fr from '../../../../../../config/locales/js/fr.json';\nangular.module('cerego.translate').constant('translateFr', fr);\n","import * as ja from '../../../../../../config/locales/js/ja.json';\nangular.module('cerego.translate').constant('translateJa', ja);\n","import * as zhCN from '../../../../../../config/locales/js/zh-CN.json';\nangular.module('cerego.translate').constant('translateZhCN', zhCN);\n","import * as zhTW from '../../../../../../config/locales/js/zh-TW.json';\nangular.module('cerego.translate').constant('translateZhTW', zhTW);\n","ceregoCommon.factory('APIUsersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v4_partner_api_users_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n save:\n method: 'POST'\n isArray: false\n url: APIRoutes.v4_partner_api_users_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v4_api_user_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('CategoriesResource', ['$resource', ($resource) ->\n $resource \"\",{},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_categories_path()\n])\n","ceregoCommon.factory('EmailsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_my_emails_path()\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_my_email_path(\":id\")\n params:\n id: \"@id\"\n make_primary:\n method: 'PUT'\n isArray: false\n url: APIRoutes.make_primary_v2_my_email_path(\":id\")\n params:\n id: \"@id\"\n confirm_email:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_my_email_confirmations_path()\n send_confirmation:\n method: 'POST'\n isArray: false\n url: APIRoutes.send_confirmation_v2_my_emails_path()\n])\n","ceregoCommon.factory('FlickrResource', ['$resource', ($resource) ->\n $resource \"\",\n api_key: \"2762233cd33035b0c687f0bee06b92b0\"\n format: \"json\"\n ,\n search:\n method: 'JSONP'\n isArray: false\n url: \"https://api.flickr.com/services/rest/\"\n params:\n method: \"flickr.photos.search\"\n sort: \"relevance\"\n extras: \"owner_name,url_m,url_q,license\"\n license: \"1,2,3,4,5,6,7,8\"\n jsoncallback: \"JSON_CALLBACK\"\n])\n","ceregoCommon.factory('GroupsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_partner_groups_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n save:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_partner_groups_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_partner_group_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.v2_partner_group_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n get_for_partner:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_partner_group_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n])\n","ceregoCommon.factory('GroupsSeriesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_group_series_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n])\n","ceregoCommon.factory('GroupsSetsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n save:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_group_sets_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_group_sets_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n remove:\n method: 'DELETE'\n isArray: true\n url: APIRoutes.v2_group_sets_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_group_sets_path(\":group_id\")\n params:\n group_id: \"@group_id\"\n])\n","ceregoCommon.factory('ImagesResource', ['$resource', ($resource) ->\n $resource \"\",{},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_images_path()\n])\n","ceregoCommon.factory('ItemUploadResource', ['$resource', ($resource) ->\n $resource \"\",{},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_item_upload_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('ItemsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_item_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_set_items_path(\":set_id\")\n params:\n set_id: \"@set_id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_item_path(\":id\")\n params:\n id: \"@id\"\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_set_items_path(\":set_id\")\n params:\n set_id: \"@set_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_set_item_path(\":set_id\", \":item_id\")\n params:\n set_id: \"@set_id\"\n item_id: \"@item_id\"\n])\n","ceregoCommon.factory('LanguagesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_languages_path()\n])\n","ceregoCommon.factory('LibraryResource', ['$resource', ($resource) ->\n $resource APIRoutes.v2_my_smart_modules_path(), {},\n nextUp:\n method: 'GET',\n isArray: false,\n url: APIRoutes.next_up_v2_my_smart_modules_path()\n])\n","ceregoCommon.factory('MyGroupsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_my_groups_path()\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_my_group_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('MyMailersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n sendMobileLoginInfo:\n method: 'POST'\n isArray: false\n url: APIRoutes.mobile_login_info_v2_my_mailers_path()\n])\n","ceregoCommon.factory('MySeriesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_my_series_index_path()\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_series_index_path()\n addSet:\n method: 'POST'\n isArray: false\n url: APIRoutes.add_set_v2_my_series_path(\":id\")\n params:\n id: \"@id\"\n removeSet:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.remove_set_v2_my_series_path(\":id\")\n params:\n id: \"@id\"\n addToSchedule:\n method: 'POST'\n isArray: false\n url: APIRoutes.add_to_memory_bank_v2_my_series_path(\":id\")\n params:\n id: \"@id\"\n removeFromSchedule:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.remove_from_memory_bank_v2_my_series_path(\":id\")\n params:\n id: \"@id\"\n addToLibrary:\n method: 'POST'\n isArray: false\n url: APIRoutes.add_to_library_v2_my_series_path(\":id\")\n params:\n id: \"@id\"\n removeFromLibrary:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.remove_from_library_v2_my_series_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('MySetsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_my_sets_path()\n addToSchedule:\n method: 'POST'\n isArray: false\n url: APIRoutes.add_to_memory_bank_v2_my_set_path(\":id\")\n params:\n id: \"@id\"\n removeFromSchedule:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.remove_from_memory_bank_v2_my_set_path(\":id\")\n params:\n id: \"@id\"\n addToLibrary:\n method: 'POST'\n isArray: false\n url: APIRoutes.add_to_library_v2_my_set_path(\":id\")\n params:\n id: \"@id\"\n removeFromLibrary:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.remove_from_library_v2_my_set_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('Oauth2ClientsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_oauth2_clients_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n save:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_oauth2_clients_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_oauth2_client_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('PartnerUserRolesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n add:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_partner_user_roles_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n roles:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_partner_user_roles_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n update:\n method: 'PUT'\n url: APIRoutes.v3_partner_user_role_path(\":id\")\n params:\n id: \"@id\"\n remove_role:\n method: 'DELETE'\n url: APIRoutes.v3_partner_user_role_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('PartnerUsersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n index:\n method: 'GET'\n url: APIRoutes.v3_partner_users_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partner_users_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_user_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n update:\n method: 'PUT'\n url: APIRoutes.v3_partner_user_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n delete:\n method: 'DELETE'\n url: APIRoutes.v3_partner_user_path(\":partner_id\", \":id\")\n params:\n partner_id: \"@partner_id\"\n id: \"@id\"\n])\n","ceregoCommon.factory('ScormPackagesResource', ['$resource', ($resource) ->\n $resource \"\",{},\n check_import_job:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_scorm_package_import_status_path(\":id\")\n params:\n id: \"@id\"\n get_launch_link:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_scorm_package_launch_link_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('SeriesCollaboratorsResource', ['$resource', ($resource) ->\n $resource \"\",{},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_series_contributors_path(\":series_id\")\n params:\n series_id: \"@series_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_series_contributor_path(\":series_id\",\":id\")\n params:\n series_id: \"@series_id\"\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_series_contributors_path(\":series_id\")\n params:\n series_id: \"@series_id\"\n])\n","ceregoCommon.factory('SeriesResource', ['$resource', ($resource) ->\n $resource \"\",{},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_series_path(\":id\")\n params:\n id: \"@id\"\n sets:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_series_sets_path(\":id\")\n params:\n id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_series_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_series_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('SessionsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: Packs.iKnowRoutes.v2_sessions_path()\n])\n","ceregoCommon.factory('SetCollaboratorsResource', ['$resource', ($resource) ->\n $resource \"\",{},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_set_collaborators_path(\":set_id\")\n params:\n set_id: \"@set_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_collaborator_path(\":user_id\")\n params:\n user_id: \"@user_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_collaborators_path()\n])\n","ceregoCommon.factory('SetExportsResource', ['$resource', ($resource) ->\n $resource \"\",{},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_set_export_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_set_exports_path()\n])\n","ceregoCommon.factory('SetsResource', ['$resource', ($resource) ->\n $resource \"\",{},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_set_path(\":id\")\n params:\n id: \"@id\"\n series:\n method: 'GET'\n isArray: false\n url: APIRoutes.series_v2_set_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_sets_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_set_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_set_path(\":id\")\n params:\n id: \"@id\"\n insert_at:\n method: 'PUT'\n isArray: false\n url: APIRoutes.insert_at_v2_series_set_path(\":series_id\", \":set_id\")\n params:\n series_id: \"@series_id\"\n set_id: \"@set_id\"\n itemUploads:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_set_item_uploads_path(\":set_id\")\n params:\n set_id: \"@set_id\"\n])\n","ceregoCommon.factory('SubscriptionsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_subscriptions_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_subscriptions_path()\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_subscriptions_path()\n])\n","ceregoCommon.factory('TagTypeResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_tag_types_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n\n])\n","ceregoCommon.factory('TimezonesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_timezones_path()\n])\n","ceregoCommon.factory('TransliterationDistractorsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_facet_transliteration_distractors_path(\":facet_id\")\n params:\n facet_id: \"@facet_id\"\n save:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_transliteration_distractor_path(\":id\")\n params:\n id: \"@id\"\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_facet_transliteration_distractors_path(\":facet_id\")\n params:\n facet_id: \"@facet_id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_transliteration_distractor_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('UserCsvUploadsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n url: APIRoutes.v3_user_csv_upload_path(\":id\")\n params:\n id: \"@id\"\n parse_background:\n method: 'POST'\n url: APIRoutes.v3_user_csv_upload_parse_background_path(\":user_csv_upload_id\")\n params:\n user_csv_upload_id: \"@user_csv_upload_id\"\n index:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_user_csv_uploads_path(':partner_id')\n])\n","ceregoCommon.factory('UserSeriesCollaboratorsResource', ['$resource', ($resource) ->\n $resource \"\",{},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_user_goal_list_contributors_path(\":user_id\")\n params:\n series_id: \"@user_id\"\n])\n","ceregoCommon.factory('UsersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_users_path()\n save:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_user_path(\":id\")\n params:\n id: \"@id\"\n])\n","ceregoCommon.factory('V3CourseUsersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_course_users_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_course_users_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n show:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_course_user_path(\":course_id\", \":id\")\n params:\n course_id: \"@course_id\"\n id: \"@id\"\n update:\n method: 'PATCH'\n isArray: false\n url: APIRoutes.v3_course_user_path(\":course_id\", \":id\")\n params:\n course_id: \"@course_id\"\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_course_user_path(\":course_id\", \":id\")\n params:\n course_id: \"@course_id\"\n id: \"@id\"\n bulk_destroy_instructors:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.instructors_v3_course_users_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n bulk_destroy_students:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.students_v3_course_users_path(\":course_id\")\n params:\n course_id: \"@course_id\"\n])\n","ceregoCommon.factory('V3CoursesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n clone:\n method: 'POST'\n isArray: false\n url: APIRoutes.clone_v3_course_path(\":id\")\n params:\n id: \"@id\"\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_course_path(\":id\")\n params:\n id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_course_path(\":id\")\n params:\n id: \"@id\"\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_courses_path()\n save:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_courses_path()\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_course_path(\":id\")\n params:\n id: \"@id\"\n bulk_destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_partner_courses_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n bulk_update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_partner_courses_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n])\n","ceregoCommon.factory('V3MyMilestonesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_my_milestones_path()\n])\n","ceregoCommon.factory('V3MyStudyItemsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_my_study_items_path()\n])\n","ceregoCommon.factory('V3SeriesItemsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_series_items_path(\":series_id\")\n params:\n series_id: \"@series_id\"\n])\n","ceregoCommon.factory('V3SetClonesResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_set_set_clones_path(\":set_id\")\n params:\n set_id: \"@set_id\"\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_set_clone_path(\":id\")\n params:\n id: \"@id\"\n\n])\n","ceregoCommon.factory('V3SetItemsResource', ['$resource', ($resource) ->\n $resource \"\", {},\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 delete:\n method: 'DELETE'\n isArray: true\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])\n","ceregoCommon.factory('V4RecommendedSetsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v4_recommended_sets_path()\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","module.exports = __webpack_public_path__ + \"media/logos/stripe-06925bce.png\";","/** @license\n\tAnimator.js 1.1.9\n\t\n\tThis library is released under the BSD license:\n\n\tCopyright (c) 2006, Bernard Sumption. All rights reserved.\n\t\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\t\n\tRedistributions of source code must retain the above copyright notice, this\n\tlist of conditions and the following disclaimer. Redistributions in binary\n\tform must reproduce the above copyright notice, this list of conditions and\n\tthe following disclaimer in the documentation and/or other materials\n\tprovided with the distribution. Neither the name BernieCode nor\n\tthe names of its contributors may be used to endorse or promote products\n\tderived from this software without specific prior written permission. \n\t\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR\n\tANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n\tDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n\tSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n\tCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n\tLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n\tOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n\tDAMAGE.\n\n*/\n\n// http://www.berniecode.com/writing/animator.html\n\n// Applies a sequence of numbers between 0 and 1 to a number of subjects\n// construct - see setOptions for parameters\nfunction Animator(options) {\n\tthis.setOptions(options);\n\tvar _this = this;\n\tthis.timerDelegate = function(){_this.onTimerEvent()};\n\tthis.subjects = [];\n\tthis.subjectScopes = [];\n\tthis.target = 0;\n\tthis.state = 0;\n\tthis.lastTime = null;\n};\nAnimator.prototype = {\n\t// apply defaults\n\tsetOptions: function(options) {\n\t\tthis.options = Animator.applyDefaults({\n\t\t\tinterval: 20, // time between animation frames\n\t\t\tduration: 400, // length of animation\n\t\t\tonComplete: function(){},\n\t\t\tonStep: function(){},\n\t\t\ttransition: Animator.tx.easeInOut\n\t\t}, options);\n\t},\n\t// animate from the current state to provided value\n\tseekTo: function(to) {\n\t\tthis.seekFromTo(this.state, to);\n\t},\n\t// animate from the current state to provided value\n\tseekFromTo: function(from, to) {\n\t\tthis.target = Math.max(0, Math.min(1, to));\n\t\tthis.state = Math.max(0, Math.min(1, from));\n\t\tthis.lastTime = new Date().getTime();\n\t\tif (!this.intervalId) {\n\t\t\tthis.intervalId = window.setInterval(this.timerDelegate, this.options.interval);\n\t\t}\n\t},\n\t// animate from the current state to provided value\n\tjumpTo: function(to) {\n\t\tthis.target = this.state = Math.max(0, Math.min(1, to));\n\t\tthis.propagate();\n\t},\n\t// seek to the opposite of the current target\n\ttoggle: function() {\n\t\tthis.seekTo(1 - this.target);\n\t},\n\t// add a function or an object with a method setState(state) that will be called with a number\n\t// between 0 and 1 on each frame of the animation\n\taddSubject: function(subject,scope) {\n\t\tthis.subjects[this.subjects.length] = subject;\n\t\tthis.subjectScopes[this.subjectScopes.length] = scope;\n\t\treturn this;\n\t},\n\t// remove all subjects\n\tclearSubjects: function() {\n\t\tthis.subjects = [];\n\t\tthis.subjectScopes = [];\n\t},\n\t// forward the current state to the animation subjects\n\tpropagate: function() {\n\t\tvar value = this.options.transition(this.state);\n\t\tfor (var i=0; i= Math.abs(this.state - this.target)) {\n\t\t\tthis.state = this.target;\n\t\t} else {\n\t\t\tthis.state += movement;\n\t\t}\n\t\t\n\t\ttry {\n\t\t\tthis.propagate();\n\t\t} finally {\n\t\t\tthis.options.onStep.call(this);\n\t\t\tif (this.target == this.state) {\n\t\t\t\twindow.clearInterval(this.intervalId);\n\t\t\t\tthis.intervalId = null;\n\t\t\t\tthis.options.onComplete.call(this);\n\t\t\t}\n\t\t}\n\t},\n\t// shortcuts\n\tplay: function() {this.seekFromTo(0, 1)},\n\treverse: function() {this.seekFromTo(1, 0)},\n\t// return a string describing this Animator, for debugging\n\tinspect: function() {\n\t\tvar str = \"#\";\n\t\treturn str;\n\t}\n}\n// merge the properties of two objects\nAnimator.applyDefaults = function(defaults, prefs) {\n\tprefs = prefs || {};\n\tvar prop, result = {};\n\tfor (prop in defaults) result[prop] = prefs[prop] !== undefined ? prefs[prop] : defaults[prop];\n\treturn result;\n}\n// make an array from any object\nAnimator.makeArray = function(o) {\n\tif (o == null) return [];\n\tif (!o.length) return [o];\n\tvar result = [];\n\tfor (var i=0; i 20) return;\n\t\t}\n\t},\n\tgetStyle: function(state) {\n\t\tstate = this.from + ((this.to - this.from) * state);\n\t\tif (this.property == 'filter') return \"alpha(opacity=\" + Math.round(state*100) + \")\";\n\t\tif (this.property == 'opacity') return state;\n\t\treturn Math.round(state) + this.units;\n\t},\n\tinspect: function() {\n\t\treturn \"\\t\" + this.property + \"(\" + this.from + this.units + \" to \" + this.to + this.units + \")\\n\";\n\t}\n}\n\n// animates a colour based style property between two hex values\nfunction ColorStyleSubject(els, property, from, to) {\n\tthis.els = Animator.makeArray(els);\n\tthis.property = Animator.camelize(property);\n\tthis.to = this.expandColor(to);\n\tthis.from = this.expandColor(from);\n\tthis.origFrom = from;\n\tthis.origTo = to;\n}\n\nColorStyleSubject.prototype = {\n\t// parse \"#FFFF00\" to [256, 256, 0]\n\texpandColor: function(color) {\n\t\tvar hexColor, red, green, blue;\n\t\thexColor = ColorStyleSubject.parseColor(color);\n\t\tif (hexColor) {\n\t\t\tred = parseInt(hexColor.slice(1, 3), 16);\n\t\t\tgreen = parseInt(hexColor.slice(3, 5), 16);\n\t\t\tblue = parseInt(hexColor.slice(5, 7), 16);\n\t\t\treturn [red,green,blue]\n\t\t}\n\t\tif (window.DEBUG) {\n\t\t\talert(\"Invalid colour: '\" + color + \"'\");\n\t\t}\n\t},\n\tgetValueForState: function(color, state) {\n\t\treturn Math.round(this.from[color] + ((this.to[color] - this.from[color]) * state));\n\t},\n\tsetState: function(state) {\n\t\tvar color = '#'\n\t\t\t\t+ ColorStyleSubject.toColorPart(this.getValueForState(0, state))\n\t\t\t\t+ ColorStyleSubject.toColorPart(this.getValueForState(1, state))\n\t\t\t\t+ ColorStyleSubject.toColorPart(this.getValueForState(2, state));\n\t\tfor (var i=0; i 255) number = 255;\n\tvar digits = number.toString(16);\n\tif (number < 16) return '0' + digits;\n\treturn digits;\n}\nColorStyleSubject.parseColor.rgbRe = /^rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i;\nColorStyleSubject.parseColor.hexRe = /^\\#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\n\n// Animates discrete styles, i.e. ones that do not scale but have discrete values\n// that can't be interpolated\nfunction DiscreteStyleSubject(els, property, from, to, threshold) {\n\tthis.els = Animator.makeArray(els);\n\tthis.property = Animator.camelize(property);\n\tthis.from = from;\n\tthis.to = to;\n\tthis.threshold = threshold || 0.5;\n}\n\nDiscreteStyleSubject.prototype = {\n\tsetState: function(state) {\n\t\tvar j=0;\n\t\tfor (var i=0; i section ? 1 : 0);\n\t\t}\n\t\tif (this.options.rememberance) {\n\t\t\tdocument.location.hash = this.rememberanceTexts[section];\n\t\t}\n\t}\n}\n\n// Everything below added by Cerego\nexport { Animator }\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","import * as angular from 'angular';\n\nexport interface IConversionAnalyticsService {\n trackConversion: (name: string) => void;\n}\n\ninterface IConversionAnalyticsWindow extends ng.IWindowService {\n ceregoTrackConversion?: (name: string) => void;\n}\n\nangular.module('cerego.core').service('ConversionAnalyticsService', [\n '$window',\n ($window: IConversionAnalyticsWindow) => {\n const service: IConversionAnalyticsService = {\n trackConversion(name) {\n if ($window.ceregoTrackConversion) {\n $window.ceregoTrackConversion(name);\n }\n }\n };\n\n return service;\n }\n]);\n","import * as angular from 'angular';\n\nexport interface IDebugHelper {\n register: (name: string, scope: ng.IScope) => void;\n registerController: (name: string, $ctrl: ng.IController) => string;\n unregister: (id: string) => void;\n logError: (error: IAPIError, message?: string) => void;\n}\n\ninterface IDebugWindow extends ng.IWindowService {\n debug: {\n counter: number;\n };\n}\n\ninterface IAPIError extends Error {\n config: {\n headers: {\n Authorization: string;\n };\n };\n}\n\nangular.module('cerego.core').service('DebugHelper', [\n '$window',\n ($window: IDebugWindow) => {\n $window.debug = $window.debug || {\n counter: 1,\n };\n\n const service: IDebugHelper = {\n register(name, $scope) {\n const id = name + $scope.$id;\n $window.debug[id] = $scope;\n $scope.$on('$destroy', () => delete $window.debug[id]);\n },\n\n // returns id the controller was registered with. Must pass id into unregister on destroy\n registerController(name, $ctrl) {\n const id = name + $window.debug.counter;\n $window.debug.counter += 1;\n $window.debug[id] = $ctrl;\n return id;\n },\n\n unregister(id) {\n delete $window.debug[id];\n },\n\n logError(error, message) {\n if (message == null) {\n message = '';\n }\n if (error && error.config && error.config.headers && error.config.headers.Authorization) {\n delete error.config.headers.Authorization;\n }\n },\n };\n\n return service;\n },\n]);\n","import * as angular from 'angular';\nimport * as _ from 'lodash';\n\nexport interface IFilterCore extends ng.IFilterService {\n (name: 'transcode'): (url: string, size: string) => string;\n (name: 'randomTranslateStringArray'): (key: string) => string;\n}\n\nangular.module('cerego.core').filter('transcode', [\n '$window',\n ($window: ng.IWindowService) => (image, size) => {\n return $window.getTranscodedURL(image, size);\n }\n]);\n\nangular\n .module('cerego.core')\n .filter('randomTranslateStringArray', [\n 'translateEn',\n translateEn => key => key + '.' + _.random(0, _.get(translateEn.default.en, key).length - 1)\n ]);\n\nangular.module('cerego.core').filter('jsonStringify', [() => object => JSON.stringify(object)]);\n","import * as angular from 'angular';\nimport * as angulartics from 'angulartics';\n\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\n\nexport interface IModalService extends ng.IScope {\n modalActive: boolean;\n modalOptions: object[];\n showModal: (name: string, options: object) => boolean;\n cleanupModal: () => void;\n}\n\nangular.module('cerego.core').service('ModalService', [\n '$rootScope',\n '$analytics',\n '$compile',\n 'DebugHelper',\n 'hotkeys',\n (\n $rootScope: ng.IRootScopeService,\n $analytics: angulartics.IAnalyticsService,\n $compile: ng.ICompileService,\n DebugHelper: IDebugHelper,\n hotkeys\n ) => {\n const $scope = $rootScope.$new() as IModalService;\n DebugHelper.register('ModalService', $scope);\n\n $scope.showModal = (name, options) => {\n $analytics.eventTrack(name, { category: 'modal_shown' });\n // ModalService is a singleton, but it needs to be able to handle multiple modals without overwriting the attributes for previous modals\n if (!$scope.modalOptions) {\n $scope.modalOptions = [];\n }\n $scope.modalOptions.push(options);\n const indexToDisplay = $scope.modalOptions.length - 1;\n const modal = angular\n .element(document.createElement('v3-modal'))\n .attr('modal-name', name)\n .attr('modal-options', `modalOptions[${indexToDisplay}]`);\n const el = $compile(modal)($scope);\n angular.element(document.body).append(el);\n $scope.modalActive = true;\n hotkeys.pause();\n return false;\n };\n\n $scope.cleanupModal = () => {\n $scope.modalActive = false;\n hotkeys.unpause();\n };\n\n return $scope;\n }\n]);\n","import * as angular from 'angular';\nimport * as _ from 'lodash';\n\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\n\nexport interface IV3ModelHelper extends ng.IScope {\n parseArray: (success: v3.api.IResponse) => v3.api.IResponseArray;\n parseObject: (success: v3.api.IResponse) => v3.api.IResponseObject;\n humanizeV3Error: (response: v3.api.IResponse) => string;\n}\n\ninterface IV3ModelHelperPrivate extends IV3ModelHelper {\n parseIncluded: (success: v3.api.IResponse) => v3.api.IResponse;\n parse: (success: v3.api.IResponse, options?: any) => any;\n}\n\nangular.module('cerego.core').service('V3ModelHelper', [\n 'DebugHelper',\n '$rootScope',\n (DebugHelper: IDebugHelper, $rootScope: ng.IRootScopeService) => {\n const $scope = $rootScope.$new() as IV3ModelHelperPrivate;\n\n DebugHelper.register('V3ModelHelper', $scope);\n\n // feeling lazy and just want my damn concepts, TODO come back and actually do this recursively, needs to support arbitrary nesting\n $scope.parseIncluded = success => {\n const included = Array.isArray(success.included) ? success.included : Array.of(success.included);\n for (const resource of included) {\n if (resource !== null && typeof resource !== 'undefined' && resource && resource.relationships) {\n for (const key of Object.keys(resource.relationships || {})) {\n const value = resource.relationships[key];\n const data = Array.isArray(value.data) ? value.data : Array.of(value.data);\n for (const relationship of data as v3.resource.IBase[]) {\n if (relationship !== null && typeof relationship !== 'undefined') {\n _.assignIn(\n relationship,\n _.find(success.included, { id: relationship.id, type: relationship.type } as any) || {}\n );\n relationship.id = parseInt(relationship.id.toString(), 10);\n }\n }\n }\n }\n }\n\n return success;\n };\n\n $scope.humanizeV3Error = response => {\n return _.map(response.errors, e => _.capitalize(e.source) + ' ' + e.title).join(', ');\n };\n\n // Legacy - don't use going forward, but keep for backwards compatibility\n $scope.parse = (success, options) => {\n if (options == null) {\n options = {};\n }\n\n let result;\n\n if (Array.isArray(success.data)) {\n result = $scope.parseArray(success);\n } else {\n result = $scope.parseObject(success);\n }\n\n if (options.includeMeta) {\n return result;\n } else {\n return result.data;\n }\n };\n\n const parseDataArray = (resources, included) => {\n for (const resource of resources as v3.resource.IBase[]) {\n const relationships = resource !== null && typeof resource !== 'undefined' ? resource.relationships : null;\n for (const key of Object.keys(relationships || {})) {\n const value = (resource !== null && typeof resource !== 'undefined' ? resource.relationships : null)[\n key\n ] as v3.resource.IRelationship;\n const data = Array.isArray(value.data) ? value.data : Array.of(value.data);\n for (const relationship of data) {\n if (relationship != null && typeof relationship !== 'undefined' && relationship.id) {\n _.assignIn(relationship, _.find(included, { id: relationship.id, type: relationship.type }) || {});\n relationship.id = parseInt(relationship.id.toString(), 10);\n }\n }\n }\n resource.id = parseInt(resource.id.toString(), 10);\n }\n\n return resources;\n };\n\n $scope.parseArray = (success) => {\n const parsed = $scope.parseIncluded(success);\n\n parseDataArray(success.data, parsed.included);\n return success as v3.api.IResponseArray;\n };\n\n $scope.parseObject = (success) => {\n success.data.id = parseInt(success.data.id.toString(), 10);\n\n const parsed = $scope.parseIncluded(success);\n parseDataArray(Array.of(success.data), parsed.included);\n return success as v3.api.IResponseObject;\n };\n\n return $scope;\n }\n]);\n","/*\n * angular-hotkeys\n *\n * Automatic keyboard shortcuts for your angular apps\n *\n * (c) 2016 Wes Cruver\n * License: MIT\n */\n\n// EDITED BY CEREGO\n\n(function() {\n\n 'use strict';\n\n angular.module('cfp.hotkeys', []).provider('hotkeys', ['$injector', function($injector) {\n\n /**\n * Configurable setting to disable the cheatsheet entirely\n * @type {Boolean}\n */\n this.includeCheatSheet = true;\n\n /**\n * Configurable setting to disable ngRoute hooks\n * @type {Boolean}\n */\n this.useNgRoute = $injector.has('ngViewDirective');\n\n /**\n * Configurable setting for the cheat sheet title\n * @type {String}\n */\n\n this.templateTitle = 'Keyboard Shortcuts:';\n\n /**\n * Configurable settings for the cheat sheet header and footer. Both are HTML, and the header\n * overrides the normal title if specified.\n * @type {String}\n */\n this.templateHeader = null;\n this.templateFooter = null;\n\n /**\n * Cheat sheet template in the event you want to totally customize it.\n * @type {String}\n */\n this.template = '
' +\n '

{{ title }}

' +\n '
' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
' +\n '{{ key }}' +\n '{{ hotkey.description }}
' +\n '
' +\n '
×
' +\n '
';\n\n /**\n * Configurable setting for the cheat sheet hotkey\n * @type {String}\n */\n this.cheatSheetHotkey = '?';\n\n /**\n * Configurable setting for the cheat sheet description\n * @type {String}\n */\n this.cheatSheetDescription = 'Show / hide this help menu';\n\n // Edited by Cerego to update dependency injection\n this.$get = ['$rootElement', '$rootScope', '$compile', '$window', '$document', function($rootElement, $rootScope, $compile, $window, $document) {\n\n var mouseTrapEnabled = true;\n\n function pause() {\n mouseTrapEnabled = false;\n }\n\n function unpause() {\n mouseTrapEnabled = true;\n }\n\n // monkeypatch Mousetrap's stopCallback() function\n // this version doesn't return true when the element is an INPUT, SELECT, or TEXTAREA\n // (instead we will perform this check per-key in the _add() method)\n Mousetrap.prototype.stopCallback = function(event, element) {\n if (!mouseTrapEnabled) {\n return true;\n }\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n return (element.contentEditable && element.contentEditable == 'true');\n };\n\n /**\n * Convert strings like cmd into symbols like ⌘\n * @param {String} combo Key combination, e.g. 'mod+f'\n * @return {String} The key combination with symbols\n */\n function symbolize (combo) {\n var map = {\n command : '\\u2318', // ⌘\n shift : '\\u21E7', // ⇧\n left : '\\u2190', // ←\n right : '\\u2192', // →\n up : '\\u2191', // ↑\n down : '\\u2193', // ↓\n 'return' : '\\u23CE', // ⏎\n backspace : '\\u232B' // ⌫\n };\n combo = combo.split('+');\n\n for (var i = 0; i < combo.length; i++) {\n // try to resolve command / ctrl based on OS:\n if (combo[i] === 'mod') {\n if ($window.navigator && $window.navigator.platform.indexOf('Mac') >=0 ) {\n combo[i] = 'command';\n } else {\n combo[i] = 'ctrl';\n }\n }\n\n combo[i] = map[combo[i]] || combo[i];\n }\n\n return combo.join(' + ');\n }\n\n /**\n * Hotkey object used internally for consistency\n *\n * @param {array} combo The keycombo. it's an array to support multiple combos\n * @param {String} description Description for the keycombo\n * @param {Function} callback function to execute when keycombo pressed\n * @param {string} action the type of event to listen for (for mousetrap)\n * @param {array} allowIn an array of tag names to allow this combo in ('INPUT', 'SELECT', and/or 'TEXTAREA')\n * @param {Boolean} persistent Whether the hotkey persists navigation events\n */\n function Hotkey (combo, description, callback, action, allowIn, persistent) {\n // TODO: Check that the values are sane because we could\n // be trying to instantiate a new Hotkey with outside dev's\n // supplied values\n\n this.combo = combo instanceof Array ? combo : [combo];\n this.description = description;\n this.callback = callback;\n this.action = action;\n this.allowIn = allowIn;\n this.persistent = persistent;\n this._formated = null;\n }\n\n /**\n * Helper method to format (symbolize) the key combo for display\n *\n * @return {[Array]} An array of the key combination sequence\n * for example: \"command+g c i\" becomes [\"⌘ + g\", \"c\", \"i\"]\n *\n */\n Hotkey.prototype.format = function() {\n if (this._formated === null) {\n // Don't show all the possible key combos, just the first one. Not sure\n // of usecase here, so open a ticket if my assumptions are wrong\n var combo = this.combo[0];\n\n var sequence = combo.split(/[\\s]/);\n for (var i = 0; i < sequence.length; i++) {\n sequence[i] = symbolize(sequence[i]);\n }\n this._formated = sequence;\n }\n\n return this._formated;\n };\n\n /**\n * A new scope used internally for the cheatsheet\n * @type {$rootScope.Scope}\n */\n var scope = $rootScope.$new();\n\n // Added by Cerego\n window.debug = window.debug || {};\n window.debug[\"hotkeys\"] = scope;\n\n /**\n * Holds an array of Hotkey objects currently bound\n * @type {Array}\n */\n scope.hotkeys = [];\n\n /**\n * Contains the state of the help's visibility\n * @type {Boolean}\n */\n scope.helpVisible = false;\n\n /**\n * Holds the title string for the help menu\n * @type {String}\n */\n scope.title = this.templateTitle;\n\n /**\n * Holds the header HTML for the help menu\n * @type {String}\n */\n scope.header = this.templateHeader;\n\n /**\n * Holds the footer HTML for the help menu\n * @type {String}\n */\n scope.footer = this.templateFooter;\n\n /**\n * Expose toggleCheatSheet to hotkeys scope so we can call it using\n * ng-click from the template\n * @type {function}\n */\n scope.toggleCheatSheet = toggleCheatSheet;\n\n\n /**\n * Holds references to the different scopes that have bound hotkeys\n * attached. This is useful to catch when the scopes are `$destroy`d and\n * then automatically unbind the hotkey.\n *\n * @type {Object}\n */\n var boundScopes = {};\n\n if (this.useNgRoute) {\n $rootScope.$on('$routeChangeSuccess', function (event, route) {\n purgeHotkeys();\n\n if (route && route.hotkeys) {\n angular.forEach(route.hotkeys, function (hotkey) {\n // a string was given, which implies this is a function that is to be\n // $eval()'d within that controller's scope\n // TODO: hotkey here is super confusing. sometimes a function (that gets turned into an array), sometimes a string\n var callback = hotkey[2];\n if (typeof(callback) === 'string' || callback instanceof String) {\n hotkey[2] = [callback, route];\n }\n\n // todo: perform check to make sure not already defined:\n // this came from a route, so it's likely not meant to be persistent\n hotkey[5] = false;\n _add.apply(this, hotkey);\n });\n }\n });\n }\n\n\n\n // Auto-create a help menu:\n if (this.includeCheatSheet) {\n var document = $document[0];\n var element = $rootElement[0];\n var helpMenu = angular.element(this.template);\n _add(this.cheatSheetHotkey, this.cheatSheetDescription, toggleCheatSheet);\n\n // If $rootElement is document or documentElement, then body must be used\n if (element === document || element === document.documentElement) {\n element = document.body;\n }\n\n angular.element(element).append($compile(helpMenu)(scope));\n }\n\n\n /**\n * Purges all non-persistent hotkeys (such as those defined in routes)\n *\n * Without this, the same hotkey would get recreated everytime\n * the route is accessed.\n */\n function purgeHotkeys() {\n var i = scope.hotkeys.length;\n while (i--) {\n var hotkey = scope.hotkeys[i];\n if (hotkey && !hotkey.persistent) {\n _del(hotkey);\n }\n }\n }\n\n /**\n * Toggles the help menu element's visiblity\n */\n var previousEsc = false;\n\n function toggleCheatSheet() {\n scope.helpVisible = !scope.helpVisible;\n\n // Bind to esc to remove the cheat sheet. Ideally, this would be done\n // as a directive in the template, but that would create a nasty\n // circular dependency issue that I don't feel like sorting out.\n if (scope.helpVisible) {\n previousEsc = _get('esc');\n _del('esc');\n\n // Here's an odd way to do this: we're going to use the original\n // description of the hotkey on the cheat sheet so that it shows up.\n // without it, no entry for esc will ever show up (#22)\n _add('esc', previousEsc.description, toggleCheatSheet, null, ['INPUT', 'SELECT', 'TEXTAREA']);\n } else {\n _del('esc');\n\n // restore the previously bound ESC key\n if (previousEsc !== false) {\n _add(previousEsc);\n }\n }\n }\n\n /**\n * Creates a new Hotkey and creates the Mousetrap binding\n *\n * @param {string} combo mousetrap key binding\n * @param {string} description description for the help menu\n * @param {Function} callback method to call when key is pressed\n * @param {string} action the type of event to listen for (for mousetrap)\n * @param {array} allowIn an array of tag names to allow this combo in ('INPUT', 'SELECT', and/or 'TEXTAREA')\n * @param {boolean} persistent if true, the binding is preserved upon route changes\n */\n function _add (combo, description, callback, action, allowIn, persistent) {\n\n // used to save original callback for \"allowIn\" wrapping:\n var _callback;\n\n // these elements are prevented by the default Mousetrap.stopCallback():\n var preventIn = ['INPUT', 'SELECT', 'TEXTAREA'];\n\n // Determine if object format was given:\n var objType = Object.prototype.toString.call(combo);\n\n if (objType === '[object Object]') {\n description = combo.description;\n callback = combo.callback;\n action = combo.action;\n persistent = combo.persistent;\n allowIn = combo.allowIn;\n combo = combo.combo;\n }\n\n // no duplicates please\n _del(combo);\n\n // description is optional:\n if (description instanceof Function) {\n action = callback;\n callback = description;\n description = '$$undefined$$';\n } else if (angular.isUndefined(description)) {\n description = '$$undefined$$';\n }\n\n // any items added through the public API are for controllers\n // that persist through navigation, and thus undefined should mean\n // true in this case.\n if (persistent === undefined) {\n persistent = true;\n }\n // if callback is defined, then wrap it in a function\n // that checks if the event originated from a form element.\n // the function blocks the callback from executing unless the element is specified\n // in allowIn (emulates Mousetrap.stopCallback() on a per-key level)\n if (typeof callback === 'function') {\n\n // save the original callback\n _callback = callback;\n\n // make sure allowIn is an array\n if (!(allowIn instanceof Array)) {\n allowIn = [];\n }\n\n // remove anything from preventIn that's present in allowIn\n var index;\n for (var i=0; i < allowIn.length; i++) {\n allowIn[i] = allowIn[i].toUpperCase();\n index = preventIn.indexOf(allowIn[i]);\n if (index !== -1) {\n preventIn.splice(index, 1);\n }\n }\n\n // create the new wrapper callback\n callback = function(event) {\n var shouldExecute = true;\n\n // if the callback is executed directly `hotkey.get('w').callback()`\n // there will be no event, so just execute the callback.\n if (event) {\n var target = event.target || event.srcElement; // srcElement is IE only\n var nodeName = target.nodeName.toUpperCase();\n\n // check if the input has a mousetrap class, and skip checking preventIn if so\n if ((' ' + target.className + ' ').indexOf(' mousetrap ') > -1) {\n shouldExecute = true;\n } else {\n // don't execute callback if the event was fired from inside an element listed in preventIn\n for (var i=0; i -1) {\n // if the combo has other combos bound, don't unbind the whole thing, just the one combo:\n if (scope.hotkeys[index].combo.length > 1) {\n scope.hotkeys[index].combo.splice(scope.hotkeys[index].combo.indexOf(combo), 1);\n } else {\n\n // remove hotkey from bound scopes\n angular.forEach(boundScopes, function (boundScope) {\n var scopeIndex = boundScope.indexOf(scope.hotkeys[index]);\n if (scopeIndex !== -1) {\n boundScope.splice(scopeIndex, 1);\n }\n });\n\n scope.hotkeys.splice(index, 1);\n }\n return true;\n }\n }\n\n return false;\n\n }\n\n /**\n * Get a Hotkey object by key binding\n *\n * @param {[string]} [combo] the key the Hotkey is bound to. Returns all key bindings if no key is passed\n * @return {Hotkey} The Hotkey object\n */\n function _get (combo) {\n\n if (!combo) {\n return scope.hotkeys;\n }\n\n var hotkey;\n\n for (var i = 0; i < scope.hotkeys.length; i++) {\n hotkey = scope.hotkeys[i];\n\n if (hotkey.combo.indexOf(combo) > -1) {\n return hotkey;\n }\n }\n\n return false;\n }\n\n /**\n * Binds the hotkey to a particular scope. Useful if the scope is\n * destroyed, we can automatically destroy the hotkey binding.\n *\n * @param {Object} scope The scope to bind to\n */\n function bindTo (scope) {\n // Only initialize once to allow multiple calls for same scope.\n if (!(scope.$id in boundScopes)) {\n\n // Add the scope to the list of bound scopes\n boundScopes[scope.$id] = [];\n\n scope.$on('$destroy', function () {\n var i = boundScopes[scope.$id].length;\n while (i--) {\n _del(boundScopes[scope.$id].pop());\n }\n });\n }\n // return an object with an add function so we can keep track of the\n // hotkeys and their scope that we added via this chaining method\n return {\n add: function (args) {\n var hotkey;\n\n if (arguments.length > 1) {\n hotkey = _add.apply(this, arguments);\n } else {\n hotkey = _add(args);\n }\n\n boundScopes[scope.$id].push(hotkey);\n return this;\n }\n };\n }\n\n /**\n * All callbacks sent to Mousetrap are wrapped using this function\n * so that we can force a $scope.$apply()\n *\n * @param {Function} callback [description]\n * @return {[type]} [description]\n */\n function wrapApply (callback) {\n // return mousetrap a function to call\n return function (event, combo) {\n\n // if this is an array, it means we provided a route object\n // because the scope wasn't available yet, so rewrap the callback\n // now that the scope is available:\n if (callback instanceof Array) {\n var funcString = callback[0];\n var route = callback[1];\n callback = function (event) {\n route.scope.$eval(funcString);\n };\n }\n\n // this takes place outside angular, so we'll have to call\n // $apply() to make sure angular's digest happens\n $rootScope.$apply(function() {\n // call the original hotkey callback with the keyboard event\n callback(event, _get(combo));\n });\n };\n }\n\n var publicApi = {\n add : _add,\n del : _del,\n get : _get,\n bindTo : bindTo,\n template : this.template,\n toggleCheatSheet : toggleCheatSheet,\n includeCheatSheet : this.includeCheatSheet,\n cheatSheetHotkey : this.cheatSheetHotkey,\n cheatSheetDescription : this.cheatSheetDescription,\n useNgRoute : this.useNgRoute,\n purgeHotkeys : purgeHotkeys,\n templateTitle : this.templateTitle,\n pause : pause,\n unpause : unpause\n };\n\n return publicApi;\n\n }];\n\n\n }])\n\n // Edited by Cerego to update dependency injection\n .directive('hotkey', ['hotkeys', function (hotkeys) {\n return {\n restrict: 'A',\n link: function (scope, el, attrs) {\n var keys = [],\n allowIn;\n\n angular.forEach(scope.$eval(attrs.hotkey), function (func, hotkey) {\n // split and trim the hotkeys string into array\n allowIn = typeof attrs.hotkeyAllowIn === \"string\" ? attrs.hotkeyAllowIn.split(/[\\s,]+/) : [];\n\n keys.push(hotkey);\n\n hotkeys.add({\n combo: hotkey,\n description: attrs.hotkeyDescription,\n callback: func,\n action: attrs.hotkeyAction,\n allowIn: allowIn,\n persistent: false // Added by Cerego, this should be default\n });\n });\n\n // Removed by Cerego since $destroy is called after new scope initialized, prevent unbinding newly assigned keys\n // remove the hotkey if the directive is destroyed:\n // el.bind('$destroy', function() {\n // angular.forEach(keys, hotkeys.del);\n // });\n }\n };\n }])\n\n // Edited by Cerego to update dependency injection\n .run(['hotkeys', function(hotkeys) {\n // force hotkeys to run by injecting it. Without this, hotkeys only runs\n // when a controller or something else asks for it via DI.\n }]);\n\n})();\n","var map = {\n\t\"./ar\": 160,\n\t\"./ar.js\": 160,\n\t\"./d3.js\": 161,\n\t\"./d3.js.coffee\": 161,\n\t\"./de\": 162,\n\t\"./de.js\": 162,\n\t\"./en\": 163,\n\t\"./en.js\": 163,\n\t\"./es\": 164,\n\t\"./es.js\": 164,\n\t\"./fr\": 165,\n\t\"./fr.js\": 165,\n\t\"./ja\": 166,\n\t\"./ja.js\": 166,\n\t\"./zh-CN\": 167,\n\t\"./zh-CN.js\": 167,\n\t\"./zh-TW\": 168,\n\t\"./zh-TW.js\": 168\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 = 519;","window.ceregoCommon = angular.module(\"cerego.common\", [\n \"cerego.core\"\n \"cerego.translate\"\n \"cerego.toast\"\n \"cerego.timeout\"\n])\n\n# replace this with explicit import\nreq = require.context('./common/resources', false)\nreq.keys().forEach(req)\n\nrequire('../../v3/modules/common/resources/partner-account-resource')\nrequire('../../v3/modules/common/resources/v3-instructional-presentations-resource.js')\nrequire('../../v3/modules/common/resources/v3_sets_resource.js')\nrequire('../../v3/modules/common/resources/v3-course-sets-resource.js')\nrequire('../../v3/modules/common/resources/v3_series_resource.js')\nrequire('../../v3/modules/common/resources/tips-resource.js')\nrequire('../../v3/modules/common/resources/v3-oauth-resource.js')\nrequire('../../v3/modules/common/directives/wysiwyg.js')\nrequire('../../v3/modules/common/helpers/goal-math-helper.ts')\nrequire('../../v3/modules/common/services/set-learn-url-service.ts')\nrequire('../../v3/modules/common/services/react-navigation-service.ts')\nrequire('../../v3/modules/common/services/page-tracking-service.ts')\nrequire('../../v3/modules/common/services/free-trial-modal-service.ts')\nrequire('../../v3/modules/common/services/amplitude-service.ts')\n\nrequire('./common/filters.js')\n\nrequire('tui-image-editor/dist/tui-image-editor.css')\nrequire('./cerego-toast.js')\nrequire('./cerego-timeout.ts')\n\nrequire('./common/combining-marks-service.js')\nrequire('./common/currency-symbol-map.js')\nrequire('./common/dynamic_attributes.js')\nrequire('./common/external-link-helper.js')\nrequire('./common/file_reader.js')\nrequire('./common/image-uploader-modal.js')\nrequire('./common/instructional-content-service.js')\nrequire('./common/item-uploader.js')\nrequire('./common/lti-service.js')\nrequire('./common/lti-redirect-service.ts')\nrequire('./common/module-context-service.js')\nrequire('./common/new-set-service.js.coffee')\nrequire('./common/nps-service.js')\nrequire('./common/pagination-service.js')\nrequire('./common/passage-highlighting-service.js')\nrequire('./common/user-password-change-modal.js')\nrequire('./common/quiz_name_service.js')\nrequire('./common/region_highlighting_service.js')\nrequire('./common/sentence-converter.js')\nrequire('./common/sortable-indexing-service.js')\nrequire('./common/sound-uploader-modal.js')\nrequire('./common/video-uploader-modal.js')\nrequire('./common/stripe_service.js')\nrequire('./common/study-items-service.js')\nrequire('./common/time-helper.js')\nrequire('./common/token-exchange-session-service.ts')\nrequire('./common/uploader-service.js')\nrequire('./common/v2-group-context-service.js')\nrequire('./common/v3-image-box.js')\nrequire('./common/v3-sound-box.js')\nrequire('./common/v3-video-box.js')\nrequire('./common/v3-toggle.js')\nrequire('./common/window_helper.js')\nrequire('./common/media-processor-service.ts')\n\n# replace these with explicit import\n\nreq = require.context('./common/directives', false, /\\.js$/)\nreq.keys().forEach(req)\nrequire('./common/directives/stripe-launcher.ts')\n\nreq = require.context('./common/modals', false, /\\.js$/)\nreq.keys().forEach(req)\n","var map = {\n\t\"./api_users_resource.js\": 169,\n\t\"./api_users_resource.js.coffee\": 169,\n\t\"./categories_resource.js\": 170,\n\t\"./categories_resource.js.coffee\": 170,\n\t\"./email_resource.js\": 171,\n\t\"./email_resource.js.coffee\": 171,\n\t\"./flickr_resource\": 172,\n\t\"./flickr_resource.coffee\": 172,\n\t\"./groups_resource.js\": 173,\n\t\"./groups_resource.js.coffee\": 173,\n\t\"./groups_series_resource.js\": 174,\n\t\"./groups_series_resource.js.coffee\": 174,\n\t\"./groups_sets_resource.js\": 175,\n\t\"./groups_sets_resource.js.coffee\": 175,\n\t\"./images_resource.js\": 176,\n\t\"./images_resource.js.coffee\": 176,\n\t\"./item_upload_resource.js\": 177,\n\t\"./item_upload_resource.js.coffee\": 177,\n\t\"./items_resource.js\": 178,\n\t\"./items_resource.js.coffee\": 178,\n\t\"./languages_resource.js\": 179,\n\t\"./languages_resource.js.coffee\": 179,\n\t\"./library_resource.js\": 180,\n\t\"./library_resource.js.coffee\": 180,\n\t\"./my-groups-resource.js\": 181,\n\t\"./my-groups-resource.js.coffee\": 181,\n\t\"./my_mailers_resource.js\": 182,\n\t\"./my_mailers_resource.js.coffee\": 182,\n\t\"./my_series_resource\": 183,\n\t\"./my_series_resource.coffee\": 183,\n\t\"./my_sets_resource\": 184,\n\t\"./my_sets_resource.coffee\": 184,\n\t\"./oauth2_clients_resource.js\": 185,\n\t\"./oauth2_clients_resource.js.coffee\": 185,\n\t\"./partner_user_roles_resource.js\": 186,\n\t\"./partner_user_roles_resource.js.coffee\": 186,\n\t\"./partner_users_resource.js\": 187,\n\t\"./partner_users_resource.js.coffee\": 187,\n\t\"./scorm_packages_resource.js\": 188,\n\t\"./scorm_packages_resource.js.coffee\": 188,\n\t\"./series_collaborators_resource.js\": 189,\n\t\"./series_collaborators_resource.js.coffee\": 189,\n\t\"./series_resource.js\": 190,\n\t\"./series_resource.js.coffee\": 190,\n\t\"./sessions_resource.js\": 191,\n\t\"./sessions_resource.js.coffee\": 191,\n\t\"./set_collaborators_resource.js\": 192,\n\t\"./set_collaborators_resource.js.coffee\": 192,\n\t\"./set_exports_resource.js\": 193,\n\t\"./set_exports_resource.js.coffee\": 193,\n\t\"./sets_resource.js\": 194,\n\t\"./sets_resource.js.coffee\": 194,\n\t\"./subscriptions_resource.js\": 195,\n\t\"./subscriptions_resource.js.coffee\": 195,\n\t\"./tag-type-resource.js\": 196,\n\t\"./tag-type-resource.js.coffee\": 196,\n\t\"./timezones_resource.js\": 197,\n\t\"./timezones_resource.js.coffee\": 197,\n\t\"./transliteration_distractors_resource.js\": 198,\n\t\"./transliteration_distractors_resource.js.coffee\": 198,\n\t\"./user_csv_uploads_resource.js\": 199,\n\t\"./user_csv_uploads_resource.js.coffee\": 199,\n\t\"./user_series_collaborators_resource.js\": 200,\n\t\"./user_series_collaborators_resource.js.coffee\": 200,\n\t\"./users_resource.js\": 201,\n\t\"./users_resource.js.coffee\": 201,\n\t\"./v3-course-users-resource.js\": 202,\n\t\"./v3-course-users-resource.js.coffee\": 202,\n\t\"./v3-courses-resource.js\": 203,\n\t\"./v3-courses-resource.js.coffee\": 203,\n\t\"./v3-my-milestones-resource.js\": 204,\n\t\"./v3-my-milestones-resource.js.coffee\": 204,\n\t\"./v3-my-study-items-resource.js\": 205,\n\t\"./v3-my-study-items-resource.js.coffee\": 205,\n\t\"./v3-series-items-resource.js\": 206,\n\t\"./v3-series-items-resource.js.coffee\": 206,\n\t\"./v3_set_clones_resource.js\": 207,\n\t\"./v3_set_clones_resource.js.coffee\": 207,\n\t\"./v3_set_items_resource.js\": 208,\n\t\"./v3_set_items_resource.js.coffee\": 208,\n\t\"./v4-recommended-sets-resource.js\": 209,\n\t\"./v4-recommended-sets-resource.js.coffee\": 209\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 = 521;","import * as angular from 'angular';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\n\ninterface IModule {\n id: number;\n version: number;\n}\n\nexport interface ISetLearnURLService extends ng.IScope {\n getReturnUrl: (path: string, params) => string;\n getUrl: (Module, params) => string;\n}\n\nexport interface IStudyPathParams {\n studyType: 'force_review' | 'recommended' | 'fading_only' | 'fading';\n preview?: boolean;\n debug?: boolean;\n returnURL?: string;\n}\n\nangular.module('cerego.common').service('setLearnURLService', [\n '$rootScope',\n 'DebugHelper',\n 'SiteNavigationService',\n ($rootScope: ng.IRootScopeService, DebugHelper: IDebugHelper, SiteNavigationService) => {\n const $scope = $rootScope.$new() as ISetLearnURLService;\n\n DebugHelper.register('setLearnURLService', $scope);\n\n $scope.getReturnUrl = (path, options) => {\n let returnUrl = path;\n if (options.fromEmbed) {\n returnUrl += '?embed=true';\n }\n if (SiteNavigationService.isV4Embed()) {\n returnUrl = `/app/nav${returnUrl}`;\n }\n return returnUrl;\n };\n\n $scope.getUrl = (Module: IModule, params: IStudyPathParams) => {\n if (Module.version === 4) {\n if (params.preview) {\n return Packs.iKnowRoutes.v3_react_learn_set_path(Module.id, params);\n } else {\n delete params.studyType;\n return Packs.iKnowRoutes.v3_react_user_journey_path(Module.id, params);\n }\n } else {\n return Packs.iKnowRoutes.quiz_v2_set_learn_path(Module.id, params);\n }\n };\n\n return $scope;\n }\n]);\n","import * as angular from 'angular';\nimport { IDebugHelper } from '../../../../v2/modules/core/debug-helper';\nimport { IAmplitudeService } from './amplitude-service';\n\nexport interface IPageTrackingService extends ng.IScope {\n trackPage: (pageName: string) => void;\n trackedVisitItemEditor: boolean;\n trackedVisitPartnerDashboard: boolean;\n}\n\nangular.module('cerego.common').service('PageTrackingService', [\n '$rootScope',\n 'DebugHelper',\n 'AmplitudeService',\n ($rootScope: ng.IRootScopeService, DebugHelper: IDebugHelper, AmplitudeService: IAmplitudeService) => {\n const $scope = $rootScope.$new() as IPageTrackingService;\n\n DebugHelper.register('PageTrackingService', $scope);\n\n $scope.trackedVisitItemEditor = false;\n $scope.trackedVisitPartnerDashboard = false;\n\n $scope.trackPage = pageName => {\n // don't track url loading in development so we don't spam amplitude each time the file is saved\n if (process.env.RAILS_ENV !== 'development') {\n AmplitudeService.logEvent('visit_url', { visited_url: pageName });\n }\n };\n\n return $scope;\n }\n]);\n","import * as angular from 'angular';\n\nexport interface IFreeTrialModalService {\n isPartnerExpired: (partner: v3.resource.IPartner) => boolean;\n shouldDisplayFreeTrialExpiredModal: (\n allPartnersExpired: boolean,\n currentProduct: string,\n currentPartner?: v3.resource.IPartner\n ) => boolean;\n displayFreeTrialExpiredModal: () => void;\n}\n\nangular.module('cerego.common').service('FreeTrialModalService', [\n '$analytics',\n 'ModalService',\n ($analytics, ModalService) => {\n const service: IFreeTrialModalService = {\n isPartnerExpired: partner => {\n const expiresAt = partner.attributes['expires-at'];\n return expiresAt != null && new Date(expiresAt) < new Date();\n },\n shouldDisplayFreeTrialExpiredModal: (allPartnersExpired, currentProduct, currentPartner) => {\n const isLearn = currentProduct === 'learn';\n const currentPartnerIsExpired = currentPartner != null && service.isPartnerExpired(currentPartner);\n\n return currentPartnerIsExpired && (allPartnersExpired || !isLearn);\n },\n displayFreeTrialExpiredModal: () => {\n ModalService.showModal('free-trial-expired-modal', { noCloseButton: true, excludeController: true });\n $analytics.pageTrack('/freeTrialExpiredModal');\n }\n };\n\n return service;\n }\n]);\n","import * as angular from 'angular';\nimport UserCookie from 'javascripts/v2/modules/core/user-cookie-helper';\nimport * as _ from 'lodash';\nimport 'ng-idle';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\nimport { IModalService } from 'v2/modules/core/modal-service';\n\nconst SESSION_REFRESH_LENGTH = 30 * 60; // 30 minutes - make sure this matches SESSION_REFRESH_LENGTH in the backend\nconst IDLE_START = SESSION_REFRESH_LENGTH / 2; // Start tracking when within 15 minutes of expiry\nconst KEEPALIVE_INTERVAL = 10 * 60; // As long as user is active, refresh session every 10 minutes\nconst IDLE_WARN = 60; // Show modal when within 1 minute of expiry - make sure this matches SECONDS_TO_COUNTDOWN in the modal\n\n/*\n * The flow for these events is a bit confusing, but looks something like this:\n * wait until within 30 minutes of expiry -> watch() -> wait 15 minutes (Idle.idle) -> IdleStart ->\n * if active -> Keepalive & start over by calling watch()\n * if inactive -> wait 14 minutes (Idle.timeout) -> IdleTimeout -> showModal\n * if modal is dismissed -> Keepalive & start over by calling watch()\n * if modal is ignored -> logout since session has expired\n */\n\nangular\n .module('cerego.timeout', ['cerego.core', 'ngIdle'])\n .config([\n 'IdleProvider',\n 'KeepaliveProvider',\n 'TitleProvider',\n (\n IdleProvider: ng.idle.IIdleProvider,\n KeepaliveProvider: ng.idle.IKeepAliveProvider,\n TitleProvider: ng.idle.ITitleProvider\n ) => {\n // in seconds, send Keepalive if user is active, otherwise IdleStart event\n IdleProvider.idle(IDLE_START);\n // in seconds, send IdleTimout if still inactive after this long\n IdleProvider.timeout(SESSION_REFRESH_LENGTH - IDLE_START - IDLE_WARN);\n // in seconds, how frequently to trigger Keepalive while idling if activity present\n KeepaliveProvider.interval(KEEPALIVE_INTERVAL);\n // Disable the tab title from idle provider\n TitleProvider.enabled(false);\n }\n ])\n .run([\n '$cookies',\n '$timeout',\n '$rootScope',\n 'DebugHelper',\n 'Idle',\n 'Keepalive',\n 'ModalService',\n 'V3SessionResource',\n (\n $cookies: ng.cookies.ICookiesService,\n $timeout: ng.ITimeoutService,\n $rootScope: ng.IRootScopeService,\n DebugHelper: IDebugHelper,\n Idle: ng.idle.IIdleService,\n Keepalive: ng.idle.IKeepAliveService,\n ModalService: IModalService,\n V3SessionResource: v3.api.IResource\n ) => {\n $rootScope.$on('IdleTimeout', () => {\n ModalService.showModal('timeout-warning-modal', { noCloseButton: true });\n });\n\n $rootScope.$on('Keepalive', () => {\n V3SessionResource.update(\n {},\n success => {\n if (!Idle.running()) {\n Idle.watch();\n }\n },\n DebugHelper.logError\n );\n });\n\n const cookie = new UserCookie($cookies);\n\n if (cookie.sessionExpiresAt) {\n const delayMsec = cookie.sessionExpiresAt.getTime() - new Date().getTime() - SESSION_REFRESH_LENGTH * 1000;\n if (delayMsec < 0) {\n // We are already within SESSION_REFRESH_LENGTH, so go ahead and trigger an immediate refresh\n Idle.interrupt();\n Keepalive.ping();\n } else {\n // Delay idle logic until we are within SESSION_REFRESH_LENGTH of session expiry\n // This makes sure none of this garbage even runs 99% of the time\n $timeout(Idle.watch, delayMsec);\n }\n }\n }\n ]);\n","ceregoCommon.service(\"CombiningMarksService\", [->\n\n # Modified to account for Hebrew + Tibetan from: https://mathiasbynens.be/notes/javascript-unicode#accounting-for-lookalikes\n marks = \"[\\u0300-\\u036F\\u0591-\\u05BD\\u05BF-\\u05C7\\u0F70-\\u0FBC\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]\"\n\n service =\n\n splitIntoCombinedLetters: (text) ->\n letters = []\n reSymbolWithCombiningMarks = new RegExp(\"(.)(#{marks}*)\", \"g\")\n\n text.replace(reSymbolWithCombiningMarks, ($0, symbol, combiningMarks) ->\n letters.push [symbol,combiningMarks].join(\"\")\n )\n letters\n\n stripMarks: (text) ->\n re = new RegExp(marks, \"g\")\n text.replace re, ''\n\n service\n])\n","# TODO: use the actual library in the future: https://github.com/bengourley/currency-symbol-map\nceregoCommon.constant(\"currencyToSymbolMap\",\n 'AED': 'د.إ'\n 'AFN': '؋'\n 'ALL': 'L'\n 'AMD': '֏'\n 'ANG': 'ƒ'\n 'AOA': 'Kz'\n 'ARS': 'ARS$'\n 'AUD': 'AU$'\n 'AWG': 'ƒ'\n 'AZN': '₼'\n 'BAM': 'KM'\n 'BBD': '$'\n 'BDT': '৳'\n 'BGN': 'лв'\n 'BHD': '.د.ب'\n 'BIF': 'FBu'\n 'BMD': 'BM$'\n 'BND': 'BN$'\n 'BOB': '$b'\n 'BRL': 'R$'\n 'BSD': 'BS$'\n 'BTC': '฿'\n 'BTN': 'Nu.'\n 'BWP': 'P'\n 'BYR': 'p.'\n 'BZD': 'BZ$'\n 'CAD': 'CA$'\n 'CDF': 'FC'\n 'CHF': 'CHF'\n 'CLP': 'CLP$'\n 'CNY': '¥'\n 'COP': 'COP$'\n 'CRC': '₡'\n 'CUC': 'CUC$'\n 'CUP': '₱'\n 'CVE': 'CVE$'\n 'CZK': 'Kč'\n 'DJF': 'Fdj'\n 'DKK': 'kr'\n 'DOP': 'RD$'\n 'DZD': 'دج'\n 'EEK': 'kr'\n 'EGP': '£'\n 'ERN': 'Nfk'\n 'ETB': 'Br'\n 'ETH': 'Ξ'\n 'EUR': '€'\n 'FJD': 'FJ$'\n 'FKP': '£'\n 'GBP': '£'\n 'GEL': '₾'\n 'GGP': '£'\n 'GHC': '₵'\n 'GHS': 'GH₵'\n 'GIP': '£'\n 'GMD': 'D'\n 'GNF': 'FG'\n 'GTQ': 'Q'\n 'GYD': 'GY$'\n 'HKD': 'HK$'\n 'HNL': 'L'\n 'HRK': 'kn'\n 'HTG': 'G'\n 'HUF': 'Ft'\n 'IDR': 'Rp'\n 'ILS': '₪'\n 'IMP': '£'\n 'INR': '₹'\n 'IQD': 'ع.د'\n 'IRR': '﷼'\n 'ISK': 'kr'\n 'JEP': '£'\n 'JMD': 'J$'\n 'JOD': 'JD'\n 'JPY': '¥'\n 'KES': 'KSh'\n 'KGS': 'лв'\n 'KHR': '៛'\n 'KMF': 'CF'\n 'KPW': '₩'\n 'KRW': '₩'\n 'KWD': 'KD'\n 'KYD': 'KY$'\n 'KZT': 'лв'\n 'LAK': '₭'\n 'LBP': '£'\n 'LKR': '₨'\n 'LRD': 'LR$'\n 'LSL': 'M'\n 'LTC': 'Ł'\n 'LTL': 'Lt'\n 'LVL': 'Ls'\n 'LYD': 'LD'\n 'MAD': 'MAD'\n 'MDL': 'lei'\n 'MGA': 'Ar'\n 'MKD': 'ден'\n 'MMK': 'K'\n 'MNT': '₮'\n 'MOP': 'MOP$'\n 'MRO': 'UM'\n 'MUR': '₨'\n 'MVR': 'Rf'\n 'MWK': 'MK'\n 'MXN': 'MXN$'\n 'MYR': 'RM'\n 'MZN': 'MT'\n 'NAD': 'NA$'\n 'NGN': '₦'\n 'NIO': 'C$'\n 'NOK': 'kr'\n 'NPR': '₨'\n 'NZD': 'NZ$'\n 'OMR': '﷼'\n 'PAB': 'B/.'\n 'PEN': 'S/.'\n 'PGK': 'K'\n 'PHP': '₱'\n 'PKR': '₨'\n 'PLN': 'zł'\n 'PYG': 'Gs'\n 'QAR': '﷼'\n 'RMB': '¥'\n 'RON': 'lei'\n 'RSD': 'Дин.'\n 'RUB': '₽'\n 'RWF': 'R₣'\n 'SAR': '﷼'\n 'SBD': 'SB$'\n 'SCR': '₨'\n 'SDG': 'ج.س.'\n 'SEK': 'kr'\n 'SGD': 'SG$'\n 'SHP': '£'\n 'SLL': 'Le'\n 'SOS': 'S'\n 'SRD': 'SR$'\n 'SSP': '£'\n 'STD': 'Db'\n 'SVC': 'SVC$'\n 'SYP': '£'\n 'SZL': 'E'\n 'THB': '฿'\n 'TJS': 'SM'\n 'TMT': 'T'\n 'TND': 'د.ت'\n 'TOP': 'T$'\n 'TRL': '₤'\n 'TRY': '₺'\n 'TTD': 'TT$'\n 'TVD': 'TV$'\n 'TWD': 'NT$'\n 'TZS': 'TSh'\n 'UAH': '₴'\n 'UGX': 'USh'\n 'USD': '$'\n 'UYU': '$U'\n 'UZS': 'лв'\n 'VEF': 'Bs'\n 'VND': '₫'\n 'VUV': 'VT'\n 'WST': 'WS$'\n 'XAF': 'FCFA'\n 'XBT': 'Ƀ'\n 'XCD': 'XC$'\n 'XOF': 'CFA'\n 'XPF': '₣'\n 'YER': '﷼'\n 'ZAR': 'R'\n 'ZWD': 'Z$'\n)\n\nceregoCommon.filter('currencyToSymbol', ['currencyToSymbolMap', (currencyToSymbolMap) ->\n (currency) ->\n currency && currencyToSymbolMap[currency.toUpperCase()]\n])\n","angular.forEach([\n ngAttrName: 'ngXlinkHref'\n attrName: 'xlink:href'\n,\n ngAttrName: 'ngWidth'\n attrName: 'width'\n,\n ngAttrName: 'ngHeight'\n attrName: 'height'\n,\n ngAttrName: 'ngPoints'\n attrName: 'points'\n,\n ngAttrName: 'ngCx'\n attrName: 'cx'\n,\n ngAttrName: 'ngCy'\n attrName: 'cy'\n,\n ngAttrName: 'ngCr'\n attrName: 'r'\n,\n ngAttrName: 'ngX1'\n attrName: 'x1'\n,\n ngAttrName: 'ngX2'\n attrName: 'x2'\n,\n ngAttrName: 'ngY1'\n attrName: 'y1'\n,\n ngAttrName: 'ngY2'\n attrName: 'y2'\n,\n ngAttrName: 'ngX'\n attrName: 'x'\n,\n ngAttrName: 'ngY'\n attrName: 'y'\n\n], (pair) ->\n ngAttrName = pair.ngAttrName\n attrName = pair.attrName\n\n ceregoCommon.directive(ngAttrName, [->\n priority: 99,\n\n link: (scope, element, attrs) ->\n attrs.$observe ngAttrName, (value) ->\n return if !value\n attrs.$set(attrName, value)\n ])\n)\n","ceregoCommon.service(\"ExternalLinkHelper\", ['$rootScope', 'DebugHelper', ($rootScope, DebugHelper) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"ExternalLinkHelper\", $scope)\n\n _.assignIn $scope,\n CREATE_INCOMPLETE_GUIDE: 'https://support.cerego.com/hc/en-us/articles/115005202623'\n CREATE_TRANSFER_GUIDE: 'https://support.cerego.com/hc/en-us/articles/115004689446-New-Create-Transfer-Guide'\n CREATE_V3_GUIDE: 'https://support.cerego.com/hc/en-us/articles/115005153386'\n HELP_CENTER: 'https://support.cerego.com'\n REFERRAL_LINK_A: 'https://www.cerego.com/referral/lp-edu1?utm_source=prod&utm_medium=cta-lp-refer&utm_campaign=edu-referral&utm_content=gandg'\n REFERRAL_LINK_B: 'https://www.cerego.com/referral/lp-edu2?utm_source=prod&utm_medium=cta-lp-refer&utm_campaign=edu-referral&utm_content=ig40'\n\n getGuideSection: (section, subtype) ->\n switch section\n when 'inform'\n '#inform'\n when 'retain'\n '#retain'\n when 'apply'\n '#apply'\n when 'question_and_answers'\n '#qa'\n when 'associations'\n '#flashcards'\n when 'vocabulary'\n '#vocab'\n when 'passages'\n '#passages'\n when 'regions'\n '#regions'\n when 'sequences'\n '#sequences'\n when 'patterns'\n '#patterns'\n when 'application_questions'\n '#scenarios'\n when 'instructional_contents'\n switch subtype\n when 'instructional_embed'\n '#media'\n when 'instructional_page'\n '#page'\n when 'instructional_document'\n '#pdf'\n else\n ''\n\n $scope\n])\n","# http://odetocode.com/blogs/scott/archive/2013/07/03/building-a-filereader-service-for-angularjs-the-service.aspx\n\nceregoCommon.service(\"FileReader\", ['$rootScope', '$q', 'DebugHelper', ($rootScope, $q, DebugHelper) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"FileReader\", $scope)\n\n read = (method, file) ->\n deferred = $q.defer()\n\n reader = new FileReader()\n reader.onload = ->\n $scope.$apply ->\n deferred.resolve(reader.result)\n reader.onerror = ->\n $scope.$apply ->\n deferred.reject(reader.result)\n reader.onabort = ->\n $scope.$apply ->\n deferred.reject(reader.result)\n reader.onprogress = (event) ->\n $scope.$apply ->\n deferred.notify(event)\n\n reader[method](file)\n deferred.promise\n\n _.assignIn $scope,\n readAsArrayBuffer: (file) ->\n read(\"readAsArrayBuffer\", file)\n readAsBinaryString: (file) ->\n read(\"readAsBinaryString\", file)\n readAsDataURL: (file) ->\n read(\"readAsDataURL\", file)\n readAsText: (file) ->\n read(\"readAsText\", file)\n])\n","import ImageEditor from 'tui-image-editor'\nimport icona from 'tui-image-editor/dist/svg/icon-a.svg'\nimport iconb from 'tui-image-editor/dist/svg/icon-b.svg'\nimport iconc from 'tui-image-editor/dist/svg/icon-c.svg'\nimport icond from 'tui-image-editor/dist/svg/icon-d.svg'\n\nceregoCommon.controller(\"imageUploaderModal\", ['$scope', '$timeout', '$filter', 'DebugHelper', 'V3MediaUploader', 'V3ImagesResource', 'AmplitudeService', ($scope, $timeout, $filter, DebugHelper, V3MediaUploader, V3ImagesResource, AmplitudeService) ->\n DebugHelper.register(\"imageUploaderModal\", $scope)\n STEPS = {\n UPLOAD: 1\n EDIT: 2\n ALTER: 3\n }\n _.assignIn $scope,\n activeModel: {}\n STEPS: STEPS\n stateUI:\n currentStep: STEPS.UPLOAD\n form: {}\n blockingObject:\n block: true\n\n\n insertImage: ->\n _.assign($scope.model, $scope.activeModel)\n\n if $scope.modalOptions.saveFunction\n $scope.modalOptions.saveFunction(updatedImageId: $scope.activeModel.data.id)\n\n if $scope.form.imageForm.$dirty\n V3ImagesResource.update id: $scope.model.data.id\n , $scope.model\n , (success) ->\n $scope.closeModal()\n else\n $scope.closeModal()\n\n setCurrentStep: () ->\n if $scope.activeModel.data?.id\n $scope.stateUI.currentStep = STEPS.EDIT\n else\n $scope.stateUI.currentStep = STEPS.UPLOAD\n\n showAlterView: ($event) ->\n $event.preventDefault()\n $scope.stateUI.currentStep = STEPS.ALTER\n # .tui-image-editor needs to be visible to be properly initialized\n $timeout ->\n # pass translation into tui-image-editor node module\n locale = {\n \"Apply\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.apply\"),\n \"Cancel\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.cancel\"),\n \"Circle\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.circle\"),\n \"Crop\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.crop\"),\n \"Custom\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.custom\"),\n \"Fill\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.fill\"),\n \"Rectangle\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.rectangle\"),\n \"Redo\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.redo\"),\n \"Reset\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.reset\"),\n \"Shape\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.shape\"),\n \"Square\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.square\"),\n \"Stroke\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.stroke\"),\n \"Triangle\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.triangle\"),\n \"Undo\": $filter('translate')(\"js.common.image_uploader_modal.image_editor.undo\")\n }\n iconTheme = {}\n iconTheme['menu.normalIcon.path'] = icond\n iconTheme['menu.activeIcon.path'] = iconb\n iconTheme['menu.disabledIcon.path'] = icona\n iconTheme['menu.hoverIcon.path'] = iconc\n iconTheme['submenu.normalIcon.path'] = icond\n iconTheme['submenu.activeIcon.path'] = iconb\n\n $scope.imageEditor = new ImageEditor(document.querySelector('.tui-image-editor'), {\n includeUI: {\n loadImage: {\n path: $scope.activeModel.data.attributes.url,\n name: \"ImageUploaderImage\"\n },\n locale: locale\n menu: ['shape', 'crop'],\n theme: iconTheme\n },\n usageStatistics: false\n })\n $scope.imageEditor.ui.shape.options = {stroke: \"transparent\", fill: \"black\", strokeWidth: 3}\n\n saveAlteredImage: ($event) ->\n $event.preventDefault()\n AmplitudeService.logEvent(\"Image Edited\");\n dataURL = $scope.imageEditor.toDataURL()\n type = dataURL.substr(5, dataURL.indexOf(\";\") - 5) # Get meta data from dataURL\n data = dataURL.slice(dataURL.indexOf(\",\") + 1, dataURL.length)\n params = {\n data: data\n content_type: type\n alt_tag: $scope.activeModel.data.attributes[\"alt-tag\"]\n license_id: $scope.activeModel.data.attributes[\"license-id\"]\n orig_url: $scope.activeModel.data.attributes[\"orig-url\"]\n orig_owner: $scope.activeModel.data.attributes[\"orig-owner\"]\n }\n V3MediaUploader(params, \"image\")\n .then (response) ->\n $scope.activeModel.data = response.data.data\n $scope.stateUI.currentStep = STEPS.EDIT\n\n $scope.model = $scope.modalOptions.model\n $scope.activeModel = _.cloneDeep($scope.model)\n\n $scope.setCurrentStep()\n\n $scope.$watch \"activeModel.data\", (newVal, oldVal) ->\n if newVal != oldVal\n $scope.setCurrentStep()\n\n])\n","ceregoCommon.factory(\"InstructionalContentService\", ['$rootScope', '$q', 'DebugHelper', 'ItemsResource', 'V3SetItemsResource', 'V3SeriesItemsResource', 'V3ModelHelper', ($rootScope, $q, DebugHelper, ItemsResource, V3SetItemsResource, V3SeriesItemsResource, V3ModelHelper) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"InstructionalContentService\", $scope)\n\n _.assignIn $scope,\n instructionalContent: []\n\n showItem: (item) ->\n $scope.currentItem = item\n # we expect this to be called by the controller on load, but just in case\n $scope.getInstructionalContent().then ->\n $rootScope.$broadcast(\"instructionalContent:showItem\", item)\n\n setContext: (context) ->\n $scope.context = context\n\n addInstructionalContentItem: (item) ->\n $scope.instructionalContent.push(item)\n\n getInstructionalContent: () ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n if $scope.context?.module_type == \"set\"\n V3SetItemsResource.query\n set_id: $scope.context.id\n include: \"sentences,annotations,annotations.document,annotations.image,annotations.sound,annotations.video\"\n 'filter[type][]': [\"InstructionalContent\"]\n 'page[size]': 200\n , (success) ->\n $scope.instructionalContent = V3ModelHelper.parse(success)\n $scope.deferred.resolve($scope.instructionalContent)\n else if $scope.context?.module_type == \"series\"\n V3SeriesItemsResource.query\n series_id: $scope.context.id\n include: \"sentences,annotations,annotations.document,annotations.image,annotations.sound,annotations.video\"\n 'filter[type][]': [\"InstructionalContent\"]\n 'page[size]': 200\n , (success) ->\n $scope.instructionalContent = V3ModelHelper.parse(success)\n $scope.deferred.resolve($scope.instructionalContent)\n else #study all\n $scope.deferred.resolve([])\n $scope.deferred.promise\n\n hasInstructionalContent: ->\n $scope.instructionalContent?.length > 0\n\n showInstructionalContent: ->\n $scope.currentItem = null\n $rootScope.$broadcast \"instructionalContent:showList\"\n\n exitInstructionalContent: ->\n $rootScope.$broadcast \"instructionalContent:hideList\"\n\n $scope\n])\n","ceregoCommon.service(\"ItemUploader\", ['$rootScope', '$q', '$timeout', 'SetsResource', 'ItemUploadResource', ($rootScope, $q, $timeout, SetsResource, ItemUploadResource) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"ItemUploader\"] = $scope\n SET_MAX_ITEMS_COUNT = 500\n\n _.assignIn $scope,\n upload: (set, items) ->\n deferred = $q.defer()\n\n if (set.items_count + items.length) > SET_MAX_ITEMS_COUNT\n alert(\"For the best experience, Sets may have no more than \" + SET_MAX_ITEMS_COUNT + \" items. To create new content, create more sets and add them to a series.\")\n deferred.reject\n else\n itemUpload = {}\n\n onSuccess = (success) ->\n itemUpload = success.response\n if itemUpload.status == \"completed\"\n deferred.resolve(itemUpload)\n else\n deferred.notify(itemUpload)\n $timeout ->\n ItemUploadResource.get\n id: itemUpload.id\n , onSuccess\n , deferred.reject\n , 2000\n\n SetsResource.itemUploads\n set_id: set.id\n items: items\n , onSuccess\n , deferred.reject\n\n deferred.promise\n])\n","ceregoCommon.factory(\"LtiService\", ['$rootScope', '$routeParams', '$location', '$q', 'DebugHelper', 'V3CoursesResource', ($rootScope, $routeParams, $location, $q, DebugHelper, V3CoursesResource) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"LtiService\", $scope)\n\n try\n if $routeParams.ltiOutcomeHash\n ltiOutcomeHash = JSON.parse($routeParams.ltiOutcomeHash)\n else if $location.search().lti_outcome_hash\n ltiOutcomeHash = JSON.parse($location.search().lti_outcome_hash)\n catch e\n console.log(\"ltiOutcomeHash provided but invalid: \" + e)\n\n ltiClientId = parseInt($location.search().lti_client_id) || null\n ltiClientName = $location.search().lti_client_name || null\n ltiGroupId = parseInt($location.search().group_id) || null\n\n _.assignIn $scope,\n ltiOutcomeHash: ltiOutcomeHash\n ltiClientId: ltiClientId\n ltiClientName: ltiClientName\n ltiGroupId: ltiGroupId\n isBBC: ltiClientId == 183 || ltiClientId == 198 || $routeParams.isBBC == \"true\"\n\n isLtiOutcomeRequest: ltiOutcomeHash && ltiOutcomeHash.lis_outcome_service_url && ltiOutcomeHash.lis_result_sourcedid && ltiGroupId\n\n loadGroup: ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n if ltiGroupId\n V3CoursesResource.get id: ltiGroupId\n , (success) ->\n $scope.ltiGroup = success.data\n $scope.paymentRequired = $scope.ltiGroup.meta['payment-required']\n $scope.deferred.resolve($scope.ltiGroup)\n , (failure) -> # THIS SHOULDN'T HAPPEN\n $scope.deferred.reject\n else\n $scope.deferred.resolve({}) #noop, initialize\n $scope.deferred.promise\n\n\n $scope.$on '$routeChangeSuccess', ($event, current, previous) ->\n if $routeParams.isBBC\n $scope.isBBC = true\n\n $scope\n])\n","import * as angular from 'angular';\nimport { ITokenExchangeSessionService } from 'v2/modules/common/token-exchange-session-service';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\n\nexport interface ILtiRedirectService extends ng.IScope {\n exchangeTokenAndRedirect: () => void;\n}\n\nangular.module('cerego.common').service('LtiRedirectService', [\n '$location',\n '$rootScope',\n 'TokenExchangeSessionService',\n (\n $location: ng.ILocationService,\n $rootScope: ng.IRootScopeService,\n TokenExchangeSessionService: ITokenExchangeSessionService\n ) => {\n const $scope = $rootScope.$new() as ILtiRedirectService;\n\n $scope.exchangeTokenAndRedirect = () => {\n const tempLogintoken = $location.search().temp_login_token;\n\n if (tempLogintoken) {\n const redirectUrl = $location.search().redirect_url;\n const redirectSearch = $location.search();\n delete redirectSearch.temp_login_token;\n delete redirectSearch.redirect_url;\n\n TokenExchangeSessionService.exchangeTokenForOAuth(tempLogintoken).finally(() =>\n $location.path(redirectUrl).search(redirectSearch)\n );\n } else {\n throw new Error('Missing temp login token');\n }\n };\n return $scope;\n }\n]);\n","ceregoCommon.factory(\"moduleContextService\", ['$rootScope', '$q', '$routeParams', 'DebugHelper', 'SetsResource', 'SeriesResource', ($rootScope, $q, $routeParams, DebugHelper, SetsResource, SeriesResource) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"moduleContextService\", $scope)\n\n _.assignIn $scope,\n module: {}\n\n initialize: ->\n if $routeParams.hasOwnProperty(\"series_id\")\n $scope.fetchModule($routeParams.series_id, \"series\")\n else if $routeParams.hasOwnProperty(\"set_id\")\n $scope.fetchModule($routeParams.set_id, \"set\")\n else\n # we should never get in this state\n DebugHelper.logError(\"Module Context Service requires set or series param\")\n\n fetchModule: (id, module_type) ->\n if !_.isEmpty($scope.module) && ($scope.module.id != parseInt(id))\n $scope.module = {}\n $scope.deferred = null\n\n unless $scope.deferred\n $scope.deferred = $q.defer()\n\n if module_type == 'set'\n resource = SetsResource\n else\n resource = SeriesResource\n\n $scope.deferred = $q.defer()\n\n if _.isEmpty($scope.module)\n resource.get id: id\n ,\n include_unstudiable: true\n , (success) ->\n $scope.module = success.response\n $scope.deferred.resolve($scope.module)\n else\n $scope.deferred.resolve($scope.module)\n\n $scope.deferred.promise\n\n reset: () ->\n $scope.module = {}\n])\n","ceregoCommon.service(\"NewSetService\", ['$rootScope', '$filter', 'SetsResource', 'V3PartnersResource', 'V3ModelHelper', 'UserManager', '$routeParams', 'myPartnersService', '$window', ($rootScope, $filter, SetsResource, V3PartnersResource, V3ModelHelper, UserManager, $routeParams, myPartnersService, $window) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"NewSetService\"] = $scope\n\n _.assignIn $scope,\n title: $filter(\"translate\")(\"js.module_view.new_set.title\")\n routes: Packs.iKnowRoutes\n uiState: {}\n resource: SetsResource\n module_type: \"set\"\n\n path: (version) ->\n if version == 4 then Packs.iKnowRoutes.edit_v4_edit_set_path else Packs.iKnowRoutes.edit_v3_create_set_path\n\n createNewSet: (setType, isTour) ->\n learnVersion = $scope.partner?.attributes['partner-settings']?['learn-version'] ||\n UserManager.currentUser.relationships['primary-partner']?.data?.attributes['partner-settings']?['learn-version']\n\n switch setType\n when 'set'\n if learnVersion == 3\n return $window.location.href = Packs.iKnowRoutes.new_v2_set_path()\n name = $filter('translate')(\"js.v4_item_editor.header.untitled_set\")\n UserManager.trackSegment('Button Clicked', { assignment_type: 'set' })\n when 'assessment'\n if learnVersion == 3\n throw 'Cannot create assessment in v3'\n name = $filter('translate')(\"js.v4_item_editor.header.untitled_assessment\")\n UserManager.trackSegment('Button Clicked', { assignment_type: 'assessment' })\n when 'survey'\n if learnVersion == 3\n throw 'Cannot create survey in v3'\n name = $filter('translate')(\"js.v4_item_editor.header.untitled_survey\")\n UserManager.trackSegment('Button Clicked', { assignment_type: 'survey' })\n else\n throw 'Invalid setType'\n\n params = {\n 'learn_version': learnVersion,\n 'goal_type': setType,\n 'name': name,\n 'partner_id': $scope.partner && $scope.partner.id\n }\n\n SetsResource.create {}, params, (result) ->\n queryParameters = if isTour then { tour: true } else {}\n $window.location.href = Packs.iKnowRoutes.edit_v4_edit_set_path(result.response.id, queryParameters)\n\n\n initializePartner: (partner) ->\n $scope.partner = partner\n\n initialize: ->\n UserManager.loadUser().then (user) ->\n if !user.id\n $window.location.href = Packs.iKnowRoutes.v3_signin_path()\n else if $routeParams.parentId\n V3PartnersResource.get(id: $routeParams.parentId, (success) ->\n $scope.initializePartner V3ModelHelper.parse(success)\n ).$promise\n else\n myPartnersService.initialize().then () ->\n $scope.initializePartner myPartnersService.currentProductPartner\n\n $scope.initialize()\n $scope\n])\n","ceregoCommon.factory(\"NpsService\", ['$rootScope', '$routeParams', '$q', '$window', 'DebugHelper', 'UserManager', ($rootScope, $routeParams, $q, $window, DebugHelper, UserManager) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"NpsService\", $scope)\n\n _.assignIn $scope,\n displayNPS: (user) ->\n segmentation = UserManager.getSegmentation(user)\n\n delighted.survey(\n email: user.attributes[\"email\"], # this value determines whether or not the user has received a survey or not\n name: user.attributes[\"name\"],\n createdAt: user.attributes[\"created-at\"], # this value will be considered when showing the initial survey.\n initialDelay: 259200, # 3 days\n properties:\n user_id: user.id,\n locale: user.attributes[\"locale\"]\n stage: segmentation.stage || \"unknown\"\n is_paid: segmentation.is_paid == null ? \"unknown\" : segmentation.is_paid\n segment: segmentation.segment || \"unknown\"\n vertical: segmentation.vertical || \"unknown\"\n is_mooc: segmentation.is_mooc == null ? \"unknown\" : segmentation.is_mooc\n is_courseware: segmentation.is_courseware == null ? \"unknown\" : segmentation.is_courseware\n size: segmentation.size || \"unknown\"\n learn_version: segmentation.learn_version || \"unknown\"\n role: UserManager.getRole(user)\n platform: \"web\"\n )\n\n $scope\n])\n","ceregoCommon.service(\"paginationService\", [->\n service =\n getClassAndPage: (currentPage, totalPages) ->\n pages = []\n\n if currentPage == 1\n pages.push {number: 1, class: 'active'}\n _.times _.min([totalPages - 1, 2]), (index) ->\n pages.push {number: currentPage + index + 1, class: ''}\n else if currentPage == totalPages\n _.times _.min([totalPages - 1, 2]), (index) ->\n pages.unshift {number: currentPage - index - 1, class: ''}\n pages.push {number: totalPages, class: 'active'}\n else # in this case we definitely have 3 pages or more, and the currentPage is somewhere in the middle\n pages = [\n {number: currentPage - 1, class: ''},\n {number: currentPage, class: 'active'},\n {number: currentPage + 1, class: ''}\n ]\n\n pages\n\n service\n])\n","ceregoCommon.service(\"PassageHighlightingService\", [->\n service =\n passageWithHighlightedNode: (node, text) ->\n text.substring(0, node.offset) + \"\" + node.cloze_text + \"\" + text.substring(node.offset + node.length, text.length)\n\n passageWithBlankNode: (node, text) ->\n # blanks = node.cloze_text.replace(/[^\\s]/g, \"_ \").replace(/\\s/g, \"  \")\n text ||= node.passage_text\n blanks = \"______\"\n text.substring(0, node.offset) + \"\" + \" Blank \" + text.substring(node.offset + node.length, text.length)\n\n passageWithHighlights: (nodes, text) ->\n for node in _.sortBy(nodes, (n) -> 0 - n.offset)\n text = service.passageWithHighlightedNode(node, text)\n text\n\n service\n])\n","ceregoCommon.controller(\"userPasswordChangeModal\", ['$scope', 'V3UsersResource', 'DebugHelper', ($scope, V3UsersResource, DebugHelper) ->\n DebugHelper.register(\"userPasswordChangeModal\", $scope)\n\n _.assignIn $scope,\n user_min_password_len: USER_MIN_PASSWORD_LEN\n fields:\n password: null\n password_confirmation: null\n\n stateUI:\n password:\n hidden: true\n inputType: \"password\"\n passwordConfirm:\n hidden: true\n inputType: \"password\"\n\n updatePassword: ->\n V3UsersResource.update { id: $scope.model.id }\n , $scope.fields\n , (success) ->\n $scope.model.attributes['has-password'] = true\n $scope.closeModal()\n\n toggleShowPassword: (field) ->\n $scope.stateUI[field].hidden = !$scope.stateUI[field].hidden\n $scope.stateUI[field].inputType = if $scope.stateUI[field].hidden then \"password\" else \"text\"\n\n $scope.model = $scope.modalOptions.model\n $scope.partner = $scope.model.relationships['user-partner-member-ids'].data[0].relationships.partner\n])\n","ceregoCommon.service(\"QuizNameService\", [->\n # Type is one of the supported quiz types, multiple_choice and fill_in_the_blank ar ethe most common, but there is also sequence_injection and click_in_the_dark\n # Title is the words that go on top of the quiz modal for all V3 quiz modals\n # Name is the title of the quiz in V2\n # Question is the data type of the question that is shown\n # Distractor is the data type of the distractors in the modal\n # Answer is the data type of the answer\n # Ask is the field for the question\n service =\n quizzes:\n application_question_select:\n type: 'application_question_select'\n name: \"js.item_editor.quizzes.application_question_select.name\"\n title: \"js.item_editor.quizzes.application_question_select.title\"\n question_and_answer_select:\n type: 'question_and_answer_select'\n name: \"js.item_editor.quizzes.application_question_select.name\"\n title: \"js.item_editor.quizzes.application_question_select.title\"\n multiple_choice_limited:\n name: \"js.item_editor.quizzes.multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.multiple_choice_limited.title\"\n question: \"anchor\"\n distractor: \"association\"\n answer: \"association\"\n type: 'multiple_choice'\n ask: \"anchor\"\n region_multiple_choice_limited:\n name: \"js.item_editor.quizzes.region_multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.region_multiple_choice_limited.title\"\n question: \"anchor\"\n distractor: \"association\"\n answer: \"association\"\n type: 'multiple_choice'\n ask: \"anchor\"\n reverse_multiple_choice_limited:\n name: \"js.item_editor.quizzes.reverse_multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.reverse_multiple_choice_limited.title\"\n question: \"association\"\n distractor: \"anchor\"\n answer: \"anchor\"\n type: 'multiple_choice'\n ask: \"association\"\n region_reverse_multiple_choice:\n name: \"js.item_editor.quizzes.region_reverse_multiple_choice.name\"\n title: \"js.item_editor.quizzes.region_reverse_multiple_choice.title\"\n question: \"association\"\n distractor: \"regions\"\n answer: \"anchor\"\n type: 'multiple_choice'\n ask: \"association\"\n region_reverse_click_in_the_dark:\n name: \"js.item_editor.quizzes.region_reverse_click_in_the_dark.name\"\n title: \"js.item_editor.quizzes.region_reverse_click_in_the_dark.title\"\n question: \"association\"\n distractor: \"none\"\n answer: \"anchor\"\n type: 'click_in_the_dark'\n ask: \"association\"\n cloze_multiple_choice_limited:\n name: \"js.item_editor.quizzes.cloze_multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.cloze_multiple_choice_limited.title\"\n question: \"anchor_cloze\"\n distractor: \"association\"\n answer: \"association\"\n type: 'multiple_choice'\n ask: \"anchor\"\n cloze_fill_in_the_blank:\n name: \"js.item_editor.quizzes.cloze_fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.cloze_fill_in_the_blank.title\"\n question: \"anchor_cloze\"\n distractor: \"fib\"\n answer: \"association\"\n type: 'fill_in_the_blank'\n ask: \"anchor\"\n listening_multiple_choice_limited:\n name: \"js.item_editor.quizzes.listening_multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.listening_multiple_choice_limited.title\"\n question: \"anchor_audio\"\n distractor: \"association\"\n answer: \"association\"\n type: 'multiple_choice'\n ask: \"anchor\"\n region_fill_in_the_blank:\n name: \"js.item_editor.quizzes.region_fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.region_fill_in_the_blank.title\"\n question: \"anchor\"\n distractor: \"fib\"\n answer: \"association\"\n type: 'fill_in_the_blank'\n ask: \"anchor\"\n fill_in_the_blank:\n name: \"js.item_editor.quizzes.fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.fill_in_the_blank.title\"\n question: \"anchor\"\n distractor: \"fib\"\n answer: \"association\"\n type: 'fill_in_the_blank'\n ask: \"anchor\"\n reverse_fill_in_the_blank:\n name: \"js.item_editor.quizzes.reverse_fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.reverse_fill_in_the_blank.title\"\n question: \"association\"\n distractor: \"fib\"\n answer: \"anchor\"\n type: 'fill_in_the_blank'\n ask: \"association\"\n dictation_fill_in_the_blank:\n name: \"js.item_editor.quizzes.dictation_fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.dictation_fill_in_the_blank.title\"\n question: \"sentence_audio\"\n distractor: \"fib\"\n answer: \"anchor\"\n type: 'fill_in_the_blank'\n ask: \"association\"\n sentence_multiple_choice_limited:\n name: \"js.item_editor.quizzes.sentence_multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.sentence_multiple_choice_limited.title\"\n question: \"sentence\"\n distractor: \"anchor\"\n answer: \"anchor\"\n type: 'multiple_choice'\n ask: \"association\"\n transliteration_multiple_choice_limited:\n name: \"js.item_editor.quizzes.transliteration_multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.transliteration_multiple_choice_limited.title\"\n question: \"anchor\"\n distractor: \"transliteration\"\n answer: \"transliteration\"\n type: 'multiple_choice'\n ask: \"anchor\"\n reverse_transliteration_multiple_choice_limited:\n name: \"js.item_editor.quizzes.reverse_transliteration_multiple_choice_limited.name\"\n title: \"js.item_editor.quizzes.reverse_transliteration_multiple_choice_limited.title\"\n question: \"transliteration\"\n distractor: \"anchor\"\n answer: \"anchor\"\n type: 'multiple_choice'\n ask: \"association\"\n sentence_fill_in_the_blank:\n name: \"js.item_editor.quizzes.sentence_fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.sentence_fill_in_the_blank.title\"\n question: \"sentence\"\n distractor: \"fib\"\n answer: \"anchor\"\n type: 'fill_in_the_blank'\n ask: \"association\"\n transliteration_fill_in_the_blank:\n name: \"js.item_editor.quizzes.transliteration_fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.transliteration_fill_in_the_blank.title\"\n question: \"anchor\"\n distractor: \"fib\"\n answer: \"transliteration\"\n type: 'fill_in_the_blank'\n ask: \"anchor\"\n reverse_transliteration_fill_in_the_blank:\n name: \"js.item_editor.quizzes.reverse_transliteration_fill_in_the_blank.name\"\n title: \"js.item_editor.quizzes.reverse_transliteration_fill_in_the_blank.title\"\n question: \"anchor\"\n distractor: \"fib\"\n answer: \"transliteration\"\n type: 'fill_in_the_blank'\n ask: \"anchor\"\n sequence_injection:\n name: \"js.item_editor.quizzes.sequence_injection.name\"\n title: \"js.item_editor.quizzes.sequence_injection.title\"\n question: \"association\"\n distractor: \"sequence\"\n answer: \"sequence_node\"\n type: 'sequence_injection'\n ask: \"association\"\n\n service\n])\n","ceregoCommon.service(\"RegionHighlightingService\", [ ->\n (facets, dimensions) ->\n service = {}\n\n ratio = 4 / 3\n\n if dimensions.width / dimensions.height > ratio\n service.width = dimensions.height * ratio\n service.height = dimensions.height\n else\n service.width = dimensions.width\n service.height = dimensions.width / ratio\n\n _.assignIn service,\n regions: []\n marker_rectangle: {}\n\n for facet in facets\n points = _.map facet.anchor.image_map_node.region_polygon.split(\", \"), (point) ->\n x: Math.min(Math.max(parseFloat(point.split(\" \")[0]), 0.0), 1.0) * service.width\n y: Math.min(Math.max(parseFloat(point.split(\" \")[1]), 0.0), 1.0) * service.height\n polygon = _.map(points, (p) -> p.x + \" \" + p.y).join(\", \")\n\n service.regions.push\n points: points\n polygon: polygon\n facet: facet\n\n service\n])\n\nceregoCommon.directive(\"cgRegion\", ['$window', 'RegionHighlightingService', ($window, RegionHighlightingService) ->\n restrict: \"E\"\n scope:\n facets: \"=\"\n image: \"=\"\n size: \"@\"\n type: \"@\"\n dash: \"=?\"\n model: \"=\"\n allowTooltip: \"=?\"\n disableclick: \"@\" # TODO: remove this once v1 learn app is gone\n onLoad: \"&?\"\n\n templateUrl: Packs.iKnowRoutes.regions_v2_templates_path(\"svg\")\n\n controller: ['$scope', '$timeout', 'DebugHelper', ($scope, $timeout, DebugHelper) ->\n DebugHelper.register(\"cgRegion\", $scope)\n\n model = $scope.model || {}\n\n _.assignIn $scope, {\n tooltipVisible: false\n\n selectRegion: ($event, region) ->\n if $event.offsetX\n offsets = { x: $event.offsetX , y: $event.offsetY }\n else if $event.originalEvent #firefox\n pageOffset = $($event.target).position()\n offsets = { x: $event.originalEvent.layerX - pageOffset.left , y: $event.originalEvent.layerY - pageOffset.top }\n\n scaledOffsets = { x: offsets.x/$scope.service.width, y: offsets.y/$scope.service.height }\n\n if $scope.allowTooltip && region\n $scope.toggleRegionTooltip(region)\n if !$scope.disableclick\n $scope.$emit \"regionClicked\", region, scaledOffsets\n\n toggleRegionTooltip: (region) ->\n rightMostPoint = _.max region.points, (point) -> point.x\n topMostPoint = _.max region.points, (point) -> point.y\n bottomMostPoint = _.min region.points, (point) -> point.y\n\n if $scope.selectedRegion == region\n $scope.tooltipVisible = !$scope.tooltipVisible\n else\n $scope.tooltipVisible = true\n $scope.selectedRegion = region\n\n $scope.tooltip = {\n left: rightMostPoint.x + \"px\"\n top: (topMostPoint.y/2 + bottomMostPoint.y/2) + \"px\"\n }\n\n calculateSize: ->\n dimensions = {}\n\n $el = $($window)\n\n if $scope.size == \"auto\" && $scope.element\n $scope.element.hide()\n dimensions.width = $scope.element.parent().width()\n dimensions.height = $scope.element.parent().height()\n $scope.element.show()\n else if $scope.size == \"small\"\n dimensions.width = 200\n dimensions.height = 150\n else if $scope.size == \"tiny\"\n dimensions.width = 133\n dimensions.height = 100\n else\n if $scope.size == \"zoom\"\n scaleFactor = .9\n else\n scaleFactor = .6\n\n dimensions.width = $el.width() * scaleFactor\n dimensions.height = $el.height() * scaleFactor\n\n $scope.service = RegionHighlightingService($scope.region_facets, dimensions)\n\n model.regions = $scope.service.regions\n model.width = $scope.service.width\n model.height = $scope.service.height\n }\n\n angular.element($window).bind \"resize\", ->\n $scope.$apply ->\n $scope.calculateSize()\n\n $scope.$on '$destroy', ->\n angular.element($window).unbind('resize')\n\n $scope.$watch \"facets\", ->\n if $scope.facets\n $scope.region_facets = _.filter([].concat($scope.facets), (facet) -> facet.anchor.image_map_node )\n $timeout $scope.calculateSize\n\n $scope.$on(\"addWrongMarker\", (event, scaledOffsets) ->\n if $scope.service && scaledOffsets\n $timeout ->\n $scope.calculateSize()\n newHeight = $scope.service.height\n newWidth = $scope.service.width\n $scope.service.marker_rectangle =\n x1: scaledOffsets.x * newWidth - 10\n x2: scaledOffsets.x * newWidth + 10\n y1: scaledOffsets.y * newHeight - 10\n y2: scaledOffsets.y * newHeight + 10\n )\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n if $scope.onLoad\n $scope.onLoad(element)\n])\n","ceregoCommon.service(\"SentenceConverter\", [->\n service =\n text2html: (text, word) ->\n return unless text?\n manual_word = /\\*(.*)\\*/\n if word\n safe_word = word.replace(/([\\*\\+\\[\\]\\(\\)\\$\\^])/g, \"\\\\$1\")\n exact_match = RegExp(\"\\\\b(\" + safe_word + \")\\\\b\", \"i\")\n contains_match = RegExp(\"\\\\b(\\\\w*\" + safe_word + \"\\\\w*)\\\\b\", \"i\")\n replacement = \"$1\"\n if text.match(manual_word)\n text.replace(manual_word, replacement)\n else if exact_match && text.match(exact_match)\n text.replace(exact_match, replacement)\n else if contains_match && text.match(contains_match)\n text.replace(contains_match, replacement)\n else\n text\n\n html2markup: (text) ->\n (text || '').replace(/<.?b>/g, '*')\n])\n","#Finds indexes for ui-sortable elements ignoring those that aren't yet saved\nceregoCommon.service(\"SortableIndexingService\", ['$rootScope', 'DebugHelper', ($rootScope, DebugHelper) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"SortableIndexingService\", $scope)\n\n _.assignIn $scope,\n #returns the index where the sortable should insert into\n #ignores all sortable items that have not been saved\n getSortablePosition: (sortables, startIndex, targetIndex) ->\n otherSortables = _.clone(sortables)\n #create duplicate array with sortables excluding the one being saved\n otherSortables.splice(startIndex, 1)\n #exclude everything after target position\n otherSortables = otherSortables.slice(0, targetIndex)\n #ignore sortables that have not been saved\n targetIndex - _.filter(otherSortables, (sortable) -> _.isUndefined(sortable.id)).length + 1\n\n $scope\n])\n","ceregoCommon.controller(\"soundUploaderModal\", ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"soundUploaderModal\", $scope)\n _.assignIn $scope,\n activeModel: {}\n stateUI:\n processing: false\n populated: false\n uploadStatus:\n complete: 0\n total: 1\n percentage: 0\n active: false\n \n triggerUpload: ->\n if !$scope.stateUI.processing\n $scope.stateUI.processing = true\n $scope.$broadcast 'soundUploaderModal:uploadMedia'\n\n insertSound: ->\n _.assign($scope.model, $scope.activeModel)\n $scope.stateUI.processing = false\n $scope.closeModal()\n\n showProgress: (e, uploaderStatus) ->\n _.assign($scope.uploadStatus, uploaderStatus)\n\n $scope.model = $scope.modalOptions.model\n $scope.activeModel = _.cloneDeep($scope.model)\n\n $scope.$watch \"activeModel.data\", (newVal, oldVal) ->\n if newVal != oldVal\n $scope.stateUI.populated = true\n $scope.$on 'soundUploader:uploadComplete', $scope.insertSound\n $scope.$on 'soundUploader:uploadProgress', $scope.showProgress\n])\n","ceregoCommon.controller(\"videoUploaderModal\", ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"videoUploaderModal\", $scope)\n _.assignIn $scope,\n activeModel: {}\n stateUI:\n processing: false\n populated: false\n uploadStatus:\n complete: 0\n total: 1\n percentage: 0\n active: false\n\n triggerUpload: ->\n if !$scope.stateUI.processing\n $scope.stateUI.processing = true\n $scope.$broadcast 'videoUploaderModal:uploadMedia'\n\n insertVideo: ->\n _.assign($scope.model, $scope.activeModel)\n $scope.stateUI.processing = false\n $scope.closeModal()\n \n showProgress: (e, uploaderStatus) ->\n _.assign($scope.uploadStatus, uploaderStatus)\n\n $scope.model = $scope.modalOptions.model\n $scope.activeModel = _.cloneDeep($scope.model) #TODO: refactor model handling.\n\n $scope.$watch \"activeModel.data\", (newVal, oldVal) ->\n if newVal != oldVal\n $scope.stateUI.populated = true\n\n $scope.$on 'videoUploader:uploadComplete', $scope.insertVideo\n $scope.$on 'videoUploader:uploadProgress', $scope.showProgress\n])\n","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","import stripeLogo from 'images/v2/logos/stripe.png'\n\nceregoCommon.service(\"StripeService\", ['$q', '$rootScope', ($q, $rootScope) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"StripeService\"] = $scope\n\n _.assignIn $scope,\n token: \"\"\n checkoutOptions: {}\n\n initialize: () ->\n deferred = $q.defer()\n if angular.isUndefined(window.StripeCheckout)\n angular.element.getScript \"https://js.stripe.com/v2/\", () ->\n angular.element.getScript \"https://checkout.stripe.com/checkout.js\", deferred.resolve\n else\n deferred.resolve()\n\n deferred.promise\n\n configureHandler: (options = {}) ->\n _.assignIn($scope.checkoutOptions, options)\n if options.email != \"\"\n $scope.checkoutOptions.email = options.email\n $scope.checkoutOptions.name = options.name\n $scope.checkoutOptions.currency = options.currency || 'usd'\n if options.description?\n $scope.checkoutOptions.description = options.description\n $scope.checkoutOptions.amount = options.amount\n $scope.checkoutOptions.email = options.email\n $scope.checkoutOptions.panelLabel = options.panelLabel\n deferred = $q.defer()\n\n $scope.initialize().then () ->\n $scope.checkout = StripeCheckout.configure\n image: stripeLogo\n key: STRIPE_PUBLISHABLE_KEY\n panelLabel: $scope.checkoutOptions.panelLabel\n allowRememberMe: false\n\n token: (token) ->\n $scope.token = token\n deferred.resolve(token)\n\n $scope.checkout.open\n name: $scope.checkoutOptions.name\n description: $scope.checkoutOptions.description\n amount: $scope.checkoutOptions.amount\n currency: $scope.checkoutOptions.currency\n email: $scope.checkoutOptions.email\n\n deferred.promise\n])\n","ceregoCommon.service('StudyItemsService', ['$rootScope', '$q', 'V3MyStudyItemsResource', 'DebugHelper', 'LtiService', 'setLearnURLService', ($rootScope, $q, V3MyStudyItemsResource, DebugHelper, LtiService, setLearnURLService) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"StudyItemsService\", $scope)\n\n _.assignIn $scope,\n ###*\n * Loads the study items\n *\n * @param {sessionContextType} The context in which learning sessions are scoped to (For example: If you start learning from a course everything you learn in that session will be from that course)\n * @param {sessionContextId} The ID of the context that corresponds to the sessionContextType\n * @param {studyType} \"recommended\", \"fading_only\", or \"force_review\"\n * @param {fromPath} The path which you want to return the user to when they click the exit button or the take a break button inside the learn app\n ###\n loadStudyItem: (sessionContextType, sessionContextId, studyType, fromPath) ->\n deferred = $q.defer()\n params = {}\n\n if sessionContextType == 'sets' # Set assignment page\n params.set_id = sessionContextId\n else if sessionContextType == 'series' # Series assignment page\n params.series_id = sessionContextId\n else if sessionContextType == 'courses' # Course page\n params.group_id = sessionContextId\n else # Dashboard page\n params = {}\n\n # Don't pass filter[status] if study type is \"force_review\"\n if studyType == \"recommended\"\n params['filter[status]'] = 'recommended'\n params['include_scorm'] = true\n else if studyType == \"fading_only\"\n params['filter[status]'] = 'fading'\n\n params.include = \"collection\"\n\n V3MyStudyItemsResource.query params\n , (success) ->\n\n studyItem = {}\n #Extract information from study items resource\n success.collections = _.filter(success.included, (obj) ->\n obj.type == \"sets\" || obj.type == \"series\"\n )\n studyItem.collectionNames = _.map(success.collections, (obj) ->\n obj.attributes.name\n ).join(', ')\n studyItem.setIds = _.map(_.filter(success.collections, (collection) ->\n collection.type == \"sets\"\n ), \"id\")\n studyItem.seriesIds = _.map(_.filter(success.collections, (collection) ->\n collection.type == \"series\"\n ), \"id\")\n\n studyItem.collectionIds = _.uniq(_.map(success.collections, \"id\"))\n studyItem.unstarted = success.meta[\"unstarted-items-count\"]\n studyItem.fading = success.meta[\"eligible-items-count\"]\n studyItem.showFading = success.meta[\"show-fading-tab\"]\n studyItem.primaryCollection = success.collections[0]\n studyItem.version = success.meta[\"version\"]\n studyItem.bodyTextHtml = success.meta['body-text-html']\n studyItem.buttonText = success.meta['button-text']\n studyItem.result = studyItem.data\n studyItem.valid = (studyItem.fading + studyItem.unstarted) > 0\n studyItem.studySessionId = success.meta[\"study-session-id\"]\n studyItem.sessionLengthSec = success.meta[\"session-length-seconds\"]\n\n if success.data[0] && success.data[0].relationships[\"scorm-package\"]\n studyItem.scormPackage = success.data[0].relationships[\"scorm-package\"].data\n\n studyItem.loaded = true\n learnPathId = studyItem.primaryCollection?.id ? sessionContextId\n collectionType = studyItem.primaryCollection?.type ? sessionContextType\n\n if studyItem.primaryCollection\n studyItem.version = studyItem.primaryCollection.attributes[\"learn-version\"]\n\n #Fetch a learn path based on the study resource\n if studyItem.scormPackage\n studyItem.learnPath = \"#\"\n else\n studyItem.learnPath = $scope.getLearnPath(studyItem.collectionIds, studyItem.setIds, collectionType, learnPathId, sessionContextType, sessionContextId, studyType, studyItem.studySessionId, fromPath, studyItem.version)\n\n deferred.resolve(studyItem)\n deferred.promise\n\n getRouteType: (hasSingleCollection, collectionType) ->\n routeType = Packs.iKnowRoutes.v2_learn_path\n if hasSingleCollection\n if (collectionType == 'sets' || collectionType == 'courses')\n routeType = Packs.iKnowRoutes.quiz_v2_set_learn_path\n else if collectionType == 'series'\n routeType = Packs.iKnowRoutes.quiz_v2_series_learn_path\n routeType\n\n ###*\n * Function to calculate the smart learn study path\n * @param {collectionIds} List of all collectionIds that those guids belong to\n * @param {setIds} Subset of collectionIds that are specifically sets - needed for the after study session card which can currently only handle sets\n * @param {collectionType} This is the collection type of the first collectionId in collectionIds, it is only required if there is exactly 1 collectionId or the sessionContextType if no primary collection exists\n * @param {learnPathId} This is the collection id of the first collectionId in collectionIds or the sessionContextId in the case where no primary collection exists\n * @param {sessionContextType} The context in which learning sessions are scoped to (For example: If you start learning from a course everything you learn in that session will be from that course)\n * @param {sessionContextId} The ID of the context that corresponds to the sessionContextType\n * @param {studySessionId} The ID of the study session (for loading the exact saved study session)\n * @param {fromPath} The path which you want to return the user to when they click the exit button or the take a break button inside the learn app\n * @param {studyType} The type of study to perform\n ###\n getLearnPath: (collectionIds, setIds, collectionType, learnPathId, sessionContextType, sessionContextId, studyType, studySessionId, fromPath, version) ->\n hasSingleCollection = collectionIds.length == 1\n routeType = $scope.getRouteType(hasSingleCollection, collectionType)\n\n params = { contextId: sessionContextId, contextType: sessionContextType, v3StudyType: studyType, returnURL: fromPath, setIds: setIds, skipSessionSelect: true, studySessionId: studySessionId }\n if LtiService.isBBC\n params['isBBC'] = true\n if hasSingleCollection && version == 4\n setLearnURLService.getUrl({id: parseInt(learnPathId), version: 4}, { studyType: studyType })\n else if hasSingleCollection\n routeType(learnPathId, params)\n else\n if sessionContextType == 'courses'\n params['groupId'] = sessionContextId\n routeType(params)\n\n # Smart learn paths for an assignment context are fixed, and don't require fetching anything to know what the path should be\n getAssignmentLearnPath: (assignmentType, assignmentId, studyType, fromPath, version) ->\n setIds = if assignmentType == 'sets' then [assignmentId] else []\n $scope.getLearnPath([assignmentId], setIds, assignmentType, assignmentId, assignmentType, assignmentId, studyType, null, fromPath, version)\n\n $scope\n])\n","import * as angular from 'angular';\nimport { IDebugHelper } from 'v2/modules/core/debug-helper';\nimport { IV3ModelHelper } from 'v2/modules/core/v3-model-helper';\n\nexport interface ITokenExchangeSessionService extends ng.IScope {\n oauthToken: string;\n exchangeTokenForOAuth: (tempLoginToken: string) => any;\n}\n\ndeclare global {\n // tslint:disable-next-line:interface-name\n interface Window {\n CeregoAPI: any;\n }\n}\n\nangular.module('cerego.common').service('TokenExchangeSessionService', [\n '$rootScope',\n 'V3SessionResource',\n 'V3ModelHelper',\n ($rootScope: ng.IRootScopeService, V3SessionResource, V3ModelHelper: IV3ModelHelper) => {\n const $scope = $rootScope.$new() as ITokenExchangeSessionService;\n\n $scope.exchangeTokenForOAuth = tempLoginToken => {\n // TODO if oauth already exists, potentially ignore tempLoginToken\n return V3SessionResource.create({\n temp_login_token: tempLoginToken,\n include: 'oauth2-access-token'\n }).$promise.then(success => {\n const user = V3ModelHelper.parseObject(success).data as v3.resource.IUser;\n const oauthAccessToken = user.relationships['oauth2-access-token'].data as v3.resource.IOauth2AccessToken;\n $scope.oauthToken = oauthAccessToken.attributes.token;\n return (window.CeregoAPI.token = $scope.oauthToken);\n });\n };\n\n return $scope;\n }\n]);\n","ceregoCommon.service(\"UploaderService\", ['$rootScope', 'DebugHelper', ($rootScope, DebugHelper) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"UploaderService\", $scope)\n\n _.assignIn $scope,\n scormUploader: {}\n])\n","ceregoCommon.service('V2GroupContextService', ['$rootScope', '$routeParams', '$q', 'DebugHelper', 'myPartnersService', 'GroupsResource', 'GroupsSetsResource', 'GroupsSeriesResource', 'MyGroupsResource', 'SiteNavigationService', ($rootScope, $routeParams, $q, DebugHelper, myPartnersService, GroupsResource, GroupsSetsResource, GroupsSeriesResource, MyGroupsResource, SiteNavigationService) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"V2GroupContextService\", $scope)\n\n _.assignIn $scope,\n groups: []\n\n fetchModules: ->\n unless $scope.group.deferred\n $scope.group.deferred = $q.defer()\n setsLoaded = false\n seriesLoaded = false\n\n # Load sets & series in parallel\n # TODO: combine this into one call\n GroupsSetsResource.get\n group_id: $scope.group.id\n , (success) ->\n $scope.group.sets = success.response\n setsLoaded = true\n $scope.group.deferred.resolve($scope.group) if seriesLoaded\n , $scope.group.deferred.reject\n\n GroupsSeriesResource.get\n group_id: $scope.group.id\n , (success) ->\n $scope.group.series = success.response\n seriesLoaded = true\n $scope.group.deferred.resolve($scope.group) if setsLoaded\n , $scope.group.deferred.reject\n\n $scope.group.deferred.promise\n\n fetchGroups: ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n\n if !myPartnersService.currentProductPartner || myPartnersService.currentProductPartner.attributes['account-type'] == \"plus\"\n MyGroupsResource.query { with_partner_info: true }, (success) ->\n $scope.groups = _.filter success.response, (group) ->\n if $routeParams[\"groupIds[]\"] && $routeParams[\"groupIds[]\"].length > 0\n groupIds = [].concat($routeParams[\"groupIds[]\"])\n _.includes(groupIds,String(group.id))\n else\n true\n $scope.deferred.resolve($scope.groups)\n , (error) ->\n if error.status == 401\n $scope.groups = []\n $scope.deferred.resolve($scope.groups)\n else\n $scope.deferred.reject(error)\n else\n GroupsResource.query\n partner_id: myPartnersService.currentProductPartner.id\n , (success) ->\n $scope.groups = success.response\n $scope.deferred.resolve($scope.groups)\n , $scope.deferred.reject \n\n $scope.deferred.promise\n\n initialize: ->\n # TODO: combine these three into one call (user, partner, groups)\n myPartnersService.initialize().then () ->\n $scope.fetchGroups().then ->\n if myPartnersService.currentProductPartner\n $scope.managedGroups = _.filter $scope.groups, (g) ->\n g.permissions && g.permissions.editable && g.partner && g.partner.id == myPartnersService.currentProductPartner.id\n else\n $scope.managedGroups = []\n\n $scope.myGroups = _.filter(_.difference($scope.groups, $scope.managedGroups), is_admin: false)\n $scope.group = _.find($scope.groups, id: parseInt($routeParams.groupId || -1)) || $scope.groups[0]\n SiteNavigationService.setContext($scope.group, 'group')\n\n if $scope.group\n $scope.fetchModules()\n else\n $scope.group\n\n myPartnersService.$watch \"currentProductPartner\", (newVal, oldVal) ->\n $scope.partner = newVal\n\n $scope\n])\n","ceregoCommon.directive('v3ImageBox', [ ->\n restrict: \"E\"\n scope:\n model: \"=\"\n dynamicHeight: \"\n Packs.iKnowRoutes.common_v3_templates_path(\"image_box\")\n\n controller: ['$scope', 'DebugHelper', 'ModalService', ($scope, DebugHelper, ModalService) ->\n DebugHelper.register(\"v3ImageBox\", $scope)\n\n _.assignIn $scope,\n launchModal: () ->\n ModalService.showModal('image-uploader-modal', { allowFormula: $scope.allowFormula, model: $scope.model, saveFunction: $scope.saveFunction, description: 'Upload your image below.' })\n\n resetModel: ($event) ->\n $scope.model = { data: { id: null } }\n if $scope.saveFunction\n $scope.saveFunction(updatedImageId: null)\n $event.preventDefault()\n $event.stopPropagation()\n\n $scope.$on \"launchNoteEditModal\", (event, opt) ->\n $scope.launchModal() if opt.id == $scope.noteId\n ]\n\n link: ($scope, element, attrs) ->\n # TODO Implement or delete\n\n])\n","ceregoCommon.directive('v3SoundBox', [ ->\n restrict: \"E\"\n scope:\n model: \"=\"\n hideTrashcan: \"=?\"\n noteId: \"=?\"\n\n templateUrl: (element, $scope) ->\n Packs.iKnowRoutes.common_v3_templates_path(\"sound_box\")\n\n controller: ['$scope', 'DebugHelper', 'ModalService', ($scope, DebugHelper, ModalService) ->\n DebugHelper.register(\"v3SoundBox\", $scope)\n\n _.assignIn $scope,\n launchModal: () ->\n ModalService.showModal('sound-uploader-modal', { model: $scope.model, description: 'Upload your sound below.' })\n\n resetModel: () ->\n $scope.model = {}\n\n $scope.$on \"launchNoteEditModal\", (event, opt) ->\n $scope.launchModal() if opt.id == $scope.noteId\n ]\n])\n","ceregoCommon.directive('v3VideoBox', [ ->\n restrict: \"E\"\n scope:\n model: \"=\"\n noteId: \"=?\"\n\n templateUrl: (element, $scope) ->\n Packs.iKnowRoutes.common_v3_templates_path(\"video_box\")\n\n controller: ['$scope', 'DebugHelper', 'ModalService', ($scope, DebugHelper, ModalService) ->\n DebugHelper.register(\"v3VideoBox\", $scope)\n\n _.assignIn $scope,\n launchModal: () ->\n ModalService.showModal('video-uploader-modal', { model: $scope.model, description: 'Upload your video below.' })\n\n resetModel: () ->\n $scope.model = {}\n\n $scope.$on \"launchNoteEditModal\", (event, opt) ->\n $scope.launchModal() if opt.id == $scope.noteId\n ]\n])\n","ceregoCommon.directive(\"v3Toggle\", ['$timeout', ($timeout) ->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"v3_toggle\")\n\n scope:\n model: \"=\"\n field: \"=\"\n name: \"=?\"\n disabled: \"=?\"\n updateFn: \"&?\"\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"V3Toggle\", $scope)\n\n _.assignIn $scope,\n toggle: ->\n unless $scope.disabled\n $scope.updateFn && $scope.updateFn()\n\n $scope.$watch \"model.enabled\", (newVal, oldVal)->\n if newVal && oldVal && newVal != oldVal\n $scope.updateFn && $scope.updateFn()\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n])\n","ceregoCommon.service(\"WindowHelper\", ['$window', ($window) ->\n service =\n inIframe: ->\n try\n $window.self != $window.top\n catch e\n true # Cross-domain exception could be thrown when in an iframe and trying to access $window.top\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;","import * as angular from 'angular';\nimport * as $ from 'jquery';\nimport RecordRTC from 'recordrtc';\n\ninterface IMediaProcessorService extends ng.IScope {\n setCallback: (cbk: () => void) => void;\n initRecording(media: 'audio' | 'video', player: $);\n beginRecording();\n endRecording();\n displayRecording();\n streamFailed(err: object);\n compatibleBrowser();\n}\n\nangular.module('cerego.common').service('MediaProcessorService', [\n '$rootScope',\n '$window',\n 'DebugHelper',\n ($rootScope: ng.IRootScopeService, $window, DebugHelper: any) => {\n const $scope = $rootScope.$new() as IMediaProcessorService;\n let stream;\n let recorder;\n let playerElem;\n let constraints;\n let callback;\n\n DebugHelper.register('mediaProcessorService', $scope);\n\n $scope.initRecording = async (media, player) => {\n constraints = {\n audio: true,\n video: media === 'video'\n };\n playerElem = player;\n\n stream = await $window.navigator.mediaDevices.getUserMedia(constraints);\n if (recorder) {\n recorder.reset();\n }\n if (media === 'video' && playerElem) {\n playerElem.muted = true;\n playerElem.srcObject = stream;\n playerElem.play();\n }\n $scope.beginRecording();\n };\n\n $scope.endRecording = () => {\n recorder.stopRecording($scope.displayRecording);\n stream.getTracks().forEach(track => track.stop());\n if (playerElem) {\n playerElem.srcObject = null;\n }\n };\n\n $scope.beginRecording = () => {\n const isVideo = constraints.video;\n const maxDuration = 30 * 60 * 1000;\n const options = {\n type: isVideo ? 'video' : 'audio',\n mimeType: isVideo ? 'video/webm;codecs=vp8' : 'audio/wav',\n recorderType: isVideo ? RecordRTC.MediaStreamRecorder : RecordRTC.StereoAudioRecorder,\n timeSlice: 1000\n };\n\n recorder = new RecordRTC(stream, options);\n recorder.setRecordingDuration(maxDuration).onRecordingStopped($scope.endRecording);\n recorder.startRecording();\n };\n\n $scope.streamFailed = (err: object) => {\n console.error(err);\n };\n\n $scope.displayRecording = () => {\n const isVideo = constraints.video;\n const blob = recorder.getBlob();\n const url = recorder.toURL();\n const extension = isVideo ? 'webm' : 'wav';\n const mimeType = isVideo ? 'video/webm;codecs=vp8' : 'audio/wav';\n const file = new File([blob], `recording.${extension}`, { type: mimeType, lastModified: Date.now() });\n\n if (callback) {\n callback({ url, blob, file });\n }\n };\n\n $scope.setCallback = cbk => {\n callback = cbk;\n };\n\n $scope.compatibleBrowser = () => {\n const ua = $window.navigator.userAgent.toLowerCase();\n const isIE = !($window.navigator.mediaDevices && $window.navigator.mediaDevices.getUserMedia);\n const isEdge = /edge/.test(ua);\n const isSafari = ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0;\n\n return !(isIE || isEdge || isSafari);\n };\n\n return $scope;\n }\n]);\n","var map = {\n\t\"./click-to-edit.js\": 572,\n\t\"./crg_sound_player.js\": 573,\n\t\"./datepicker.js\": 576,\n\t\"./flexible-image.js\": 577,\n\t\"./flickr_search.js\": 578,\n\t\"./image_uploader.js\": 579,\n\t\"./input-focus.js\": 580,\n\t\"./input_enter.js\": 581,\n\t\"./layout-heading-tabs.js\": 582,\n\t\"./learn-button-class-service.js\": 583,\n\t\"./learn_button.js\": 584,\n\t\"./media_uploader.js\": 585,\n\t\"./module_tiles.js\": 586,\n\t\"./more_button.js\": 587,\n\t\"./note-viewer.js\": 588,\n\t\"./paginate_tiles.js\": 589,\n\t\"./payportal.js\": 590,\n\t\"./pdf_uploader.js\": 591,\n\t\"./privacy_type_selector.js\": 592,\n\t\"./scorm_uploader.js\": 593,\n\t\"./search_text.js\": 594,\n\t\"./searchable-list.js\": 595,\n\t\"./sound_uploader.js\": 596,\n\t\"./stats_countdown.js\": 597,\n\t\"./transcoded_background.js\": 598,\n\t\"./v3-modal.js\": 599,\n\t\"./video_uploader.js\": 600\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 = 571;","ceregoCommon.directive(\"clickToEdit\", [->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"_click_to_edit\")\n\n scope:\n value: \"=?\"\n placeholderText: \"@\"\n saveFunction: \"&?\"\n bindAsHtml: \"=?\"\n editorHelpTemplate: \"=?\"\n startEditingFunction: \"=?\"\n finishEditingFunction: \"=?\"\n ellipsisLength: \"=?\"\n\n controller: ['$scope', '$timeout', '$element', 'DebugHelper', '$filter', ($scope, $timeout, $element, DebugHelper, $filter) ->\n DebugHelper.register(\"clickToEdit\", $scope)\n\n _.assignIn $scope,\n stateUI:\n editorEnabled: false\n\n startEditing: (event) ->\n if $scope.startEditingFunction\n $scope.value = $scope.startEditingFunction($scope.value)\n $scope.stateUI.editorEnabled = true\n $timeout () ->\n $element.children(\"textarea\")[0].focus()\n event.preventDefault()\n event.stopPropagation()\n\n finishEditing: () ->\n if $scope.finishEditingFunction\n $scope.value = $scope.finishEditingFunction($scope.value)\n $scope.stateUI.editorEnabled = false\n if $scope.saveFunction\n $scope.saveFunction(updatedValue: $scope.value)\n\n setDisplayText: () ->\n if $scope.ellipsisLength\n $scope.displayText = ($filter('ellipsis')($scope.value, $scope.ellipsisLength))\n else\n $scope.displayText = $scope.value\n\n ]\n\n link: ($scope, element, attrs) ->\n $scope.setDisplayText()\n\n $scope.$watch \"value\", (newVal, oldVal) ->\n if newVal != oldVal\n $scope.setDisplayText()\n\n element.on 'blur', 'textarea', (event) ->\n $scope.finishEditing()\n])\n","import 'sound_manager'\n\nceregoCommon.directive('crgSoundPlayer', ['$timeout', 'localStorageService', ($timeout, localStorageService) ->\n scope:\n crgSoundPlayer: \"@\"\n\n template: \"Click to play this sound\"\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"crgSoundPlayer\", $scope)\n ]\n\n link: (scope, element, attrs) ->\n element.addClass(\"ui360\").attr(\"soundId\", \"sound\" + scope.$id)\n scope.$watch \"crgSoundPlayer\", ->\n return if !scope.crgSoundPlayer\n angular.element(\"a\", element).attr( { href : scope.crgSoundPlayer } )\n $timeout ->\n scope.$emit(\"registerSoundHotkey\", scope.crgSoundPlayer )\n options = {}\n settings = localStorageService.get('learn_app_settings')\n if settings?.effectVolume\n options['effectVolume'] = settings.effectVolume\n threeSixtyPlayer.debouncedInit(options)\n])\n","import { Animator } from '../../../vendor/assets/javascripts/soundmanager2/script/berniecode-animator';\nwindow.Animator = Animator; // This is used in 360player.cerego for some reason???\nrequire('../../../vendor/assets/javascripts/soundmanager2/script/360player.cerego');\n\n// This is the worst. When 360player plays, it needs to know about the state of sound_manager\n// so it can pause the sound\n// This is more worse than previously imagined\nwindow.isSoundPlaying = false;\n\n(function($) {\n var DEBUG_SOUND = false;\n\n var sounds = {};\n var currentVolume;\n var currentEffectVolume;\n\n $.playSoundId = function(id, options) {\n if (DEBUG_SOUND) {\n console.log('$.playSoundId', id);\n }\n\n soundManager.play(id);\n };\n\n ($.playVisibleSoundInPlayer = function(url, options) {\n options = options || {};\n var callback = options.finished || function() {};\n\n if (!url) {\n callback(url, false);\n return;\n }\n\n var soundNode = _.find($('a', '.ui360:visible'), function(element) {\n return element.href == url || element.href == window.location.protocol + url;\n });\n\n if (!soundNode) {\n return;\n }\n\n soundNode.click(); // bind another event in 360player instead of triggering click\n\n $(document).on('360PlayerFinished', function() {\n callback(url, true);\n });\n }),\n ($.playSound = function(url, options) {\n if (DEBUG_SOUND) {\n console.log('$.playSound', url);\n }\n\n options = options || {};\n var callback = options.finished || function() {};\n\n if (!url) {\n callback(url, false);\n return;\n }\n\n var mySound = soundManager.createSound({\n url: url,\n volume: currentVolume,\n onfinish: function() {\n window.isSoundPlaying = false;\n callback(url, true);\n }\n });\n\n if (!mySound) {\n callback(url, false);\n return;\n }\n\n window.isSoundPlaying = true;\n mySound.play(options);\n });\n\n $.stopSounds = function() {\n if (DEBUG_SOUND) {\n console.log('$.stopSounds');\n }\n\n _.each(threeSixtyPlayer.sounds, function(sound) {\n threeSixtyPlayer.stopSound(sound);\n threeSixtyPlayer.fanIn(sound);\n });\n\n var oSound;\n for (oSound in soundManager.sounds) {\n var sound = soundManager.sounds[oSound];\n sound.stop();\n sound.unload();\n }\n };\n\n $.pauseSound = function(sound) {\n if (DEBUG_SOUND) {\n console.log('$.pauseSound', sound.url);\n }\n\n if (sound) {\n sound.pause();\n }\n };\n\n $.resumeSound = function(sound) {\n if (DEBUG_SOUND) {\n console.log('$.resumeSound', url);\n }\n\n if (sound) {\n sound.resume();\n }\n };\n\n $.loadSound = function(url, options) {\n if (DEBUG_SOUND) {\n console.log('$.loadSound', url);\n }\n\n options = options || {};\n\n if (!url) {\n return;\n }\n\n var loadedCallback = options.loaded || function() {};\n\n var sound = soundManager.createSound({\n url: url\n });\n\n if (!sound) {\n loadedCallback(url, false);\n } else {\n loadedCallback(url, true);\n }\n };\n\n $.loadSounds = function(urls, callback, completedCallback) {\n if (DEBUG_SOUND) {\n console.log('$.loadSounds', urls);\n }\n\n var loadedURLs = [];\n var loadCompleted = function(url, success) {\n loadedURLs.push(url);\n callback.call(this, url, success);\n if (loadedURLs.length >= urls.length) {\n // Note that when urls are cached the callback will be synchronous,\n // so you need to clear the global callback FIRST, or risk getting caught in an infinite loop.\n completedCallback.call(this, loadedURLs);\n }\n };\n for (var i = 0; i < urls.length; i++) {\n var url = urls[i];\n $.loadSound(url, { loaded: loadCompleted });\n }\n };\n\n $.setVolume = function(effectVolume) {\n soundManager.setVolume(effectVolume);\n };\n\n /////////////\n // Private //\n /////////////\n\n function initialize() {\n if (DEBUG_SOUND) {\n window.DEBUG = {};\n window.DEBUG.sounds = sounds;\n console.log('Sound manager initialized');\n }\n\n soundManager.setup({\n url: 'soundmanager2/swf/soundmanager2',\n flashVersion: 9\n });\n }\n\n $(document).ready(initialize);\n})(jQuery);\n","/**\n *\n * SoundManager 2 Demo: 360-degree / \"donut player\"\n * ------------------------------------------------\n * http://schillmania.com/projects/soundmanager2/\n *\n * An inline player with a circular UI.\n * Based on the original SM2 inline player.\n * Inspired by Apple's preview feature in the\n * iTunes music store (iPhone), among others.\n *\n * Requires SoundManager 2 Javascript API.\n * Also uses Bernie's Better Animation Class (BSD):\n * http://www.berniecode.com/writing/animator.html\n *\n*/\n\n/*jslint white: false, onevar: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: false, newcap: true, immed: true */\n/*global document, window, soundManager, navigator */\n\nvar threeSixtyPlayer, // instance\n ThreeSixtyPlayer; // constructor\n\n(function(window) {\n\nfunction ThreeSixtyPlayer() {\n\n var self = this,\n pl = this,\n sm = soundManager, // soundManager instance\n uA = navigator.userAgent,\n isIE = (uA.match(/msie/i)),\n isOpera = (uA.match(/opera/i)),\n isSafari = (uA.match(/safari/i)),\n isChrome = (uA.match(/chrome/i)),\n isFirefox = (uA.match(/firefox/i)),\n isTouchDevice = (uA.match(/ipad|iphone/i)),\n hasRealCanvas = (typeof window.G_vmlCanvasManager === 'undefined' && typeof document.createElement('canvas').getContext('2d') !== 'undefined'),\n // I dunno what Opera doesn't like about this. I'm probably doing it wrong.\n fullCircle = (isOpera||isChrome?359.9:360);\n\n // CSS class for ignoring MP3 links\n this.excludeClass = 'threesixty-exclude';\n this.links = [];\n this.sounds = [];\n /* JH07182014 Changed the way we look up the sound. Look up sounds by id instead of url. This is needed for learn app\n because there can be multiple sounds with the same url on the page at one time.\n */\n this.soundsById = [];\n this.indexByURL = [];\n this.lastSound = null;\n this.lastTouchedSound = null;\n this.soundCount = 0;\n this.oUITemplate = null;\n this.oUIImageMap = null;\n this.vuMeter = null;\n this.callbackCount = 0;\n this.peakDataHistory = [];\n\n // 360player configuration options\n this.config = {\n\n playNext: false, // stop after one sound, or play through list until end\n autoPlay: false, // start playing the first sound right away\n allowMultiple: false, // let many sounds play at once (false = only one sound playing at a time)\n loadRingColor: '#ccc', // how much has loaded\n playRingColor: '#7ab72d', // how much has played\n backgroundRingColor: '#eee', // color shown underneath load + play (\"not yet loaded\" color)\n\n // optional segment/annotation (metadata) stuff..\n segmentRingColor: 'rgba(255,255,255,0.33)', // metadata/annotation (segment) colors\n segmentRingColorAlt: 'rgba(0,0,0,0.1)',\n loadRingColorMetadata: '#ddd', // \"annotations\" load color\n playRingColorMetadata: 'rgba(128,192,256,0.9)', // how much has played when metadata is present\n\n circleDiameter: null, // set dynamically according to values from CSS\n circleRadius: null,\n animDuration: 500,\n animTransition: window.Animator.tx.bouncy, // http://www.berniecode.com/writing/animator.html\n showHMSTime: false, // hours:minutes:seconds vs. seconds-only\n scaleFont: true, // also set the font size (if possible) while animating the circle\n\n // optional: spectrum or EQ graph in canvas (not supported in IE <9, too slow via ExCanvas)\n useWaveformData: false,\n waveformDataColor: '#0099ff',\n waveformDataDownsample: 3, // use only one in X (of a set of 256 values) - 1 means all 256\n waveformDataOutside: false,\n waveformDataConstrain: false, // if true, +ve values only - keep within inside circle\n waveformDataLineRatio: 0.64,\n\n // \"spectrum frequency\" option\n useEQData: false,\n eqDataColor: '#339933',\n eqDataDownsample: 4, // use only one in X (of 256 values)\n eqDataOutside: true,\n eqDataLineRatio: 0.54,\n\n // enable \"amplifier\" (canvas pulses like a speaker) effect\n usePeakData: true,\n peakDataColor: '#ff33ff',\n peakDataOutside: true,\n peakDataLineRatio: 0.5,\n\n useAmplifier: true, // \"pulse\" like a speaker\n\n fontSizeMax: null, // set according to CSS\n\n scaleArcWidth: 1, // thickness factor of playback progress ring\n\n useFavIcon: false // Experimental (also requires usePeakData: true).. Try to draw a \"VU Meter\" in the favicon area, if browser supports it (Firefox + Opera as of 2009)\n\n };\n\n this.css = {\n\n // CSS class names appended to link during various states\n sDefault: 'sm2_link', // default state\n sBuffering: 'sm2_buffering',\n sPlaying: 'sm2_playing',\n sPaused: 'sm2_paused'\n\n };\n\n this.addEventHandler = (typeof window.addEventListener !== 'undefined' ? function(o, evtName, evtHandler) {\n return o.addEventListener(evtName,evtHandler,false);\n } : function(o, evtName, evtHandler) {\n o.attachEvent('on'+evtName,evtHandler);\n });\n\n this.removeEventHandler = (typeof window.removeEventListener !== 'undefined' ? function(o, evtName, evtHandler) {\n return o.removeEventListener(evtName,evtHandler,false);\n } : function(o, evtName, evtHandler) {\n return o.detachEvent('on'+evtName,evtHandler);\n });\n\n this.hasClass = function(o,cStr) {\n return typeof(o.className)!=='undefined'?o.className.match(new RegExp('(\\\\s|^)'+cStr+'(\\\\s|$)')):false;\n };\n\n this.addClass = function(o,cStr) {\n\n if (!o || !cStr || self.hasClass(o,cStr)) {\n return false;\n }\n o.className = (o.className?o.className+' ':'')+cStr;\n\n };\n\n this.removeClass = function(o,cStr) {\n\n if (!o || !cStr || !self.hasClass(o,cStr)) {\n return false;\n }\n o.className = o.className.replace(new RegExp('( '+cStr+')|('+cStr+')','g'),'');\n\n };\n\n this.getElementsByClassName = function(className,tagNames,oParent) {\n\n var doc = (oParent||document),\n matches = [], i,j, nodes = [];\n if (typeof tagNames !== 'undefined' && typeof tagNames !== 'string') {\n for (i=tagNames.length; i--;) {\n if (!nodes || !nodes[tagNames[i]]) {\n nodes[tagNames[i]] = doc.getElementsByTagName(tagNames[i]);\n }\n }\n } else if (tagNames) {\n nodes = doc.getElementsByTagName(tagNames);\n } else {\n nodes = doc.all||doc.getElementsByTagName('*');\n }\n if (typeof(tagNames)!=='string') {\n for (i=tagNames.length; i--;) {\n for (j=nodes[tagNames[i]].length; j--;) {\n if (self.hasClass(nodes[tagNames[i]][j],className)) {\n matches.push(nodes[tagNames[i]][j]);\n }\n }\n }\n } else {\n for (i=0; i 1) {\n // only catch left-clicks\n return true;\n }\n\n var o = self.getTheDamnLink(e),\n canvasElements, sURL, soundURL, thisSound, oContainer, has_vis, diameter;\n\n if (o.nodeName.toLowerCase() !== 'a') {\n o = self.isChildOfNode(o,'a');\n if (!o) {\n return true;\n }\n }\n\n if (!self.isChildOfClass(o,'ui360')) {\n // not a link we're interested in\n return true;\n }\n\n sURL = o.getAttribute('href');\n\n if (!o.href || !sm.canPlayLink(o) || self.hasClass(o,self.excludeClass)) {\n return true; // pass-thru for non-MP3/non-links\n }\n\n sm._writeDebug('handleClick()');\n soundURL = (o.href);\n\n // JH07182014 : This is the hack that makes it all work. It needs random number or counter from the directive to save the sound id.\n soundId = \"ui360Sound\"+ o.parentElement.attributes.soundid.value;\n thisSound = self.getSoundById(soundId);\n\n // Hack to access global boolean\n if (window.isSoundPlaying) {\n soundManager.pauseAll();\n window.isSoundPlaying = false;\n }\n\n if (thisSound) {\n\n /* JH07182014 : This part is necessary because the sURL changes in the learn app every time we loads a new item.\n The parent's random id does not. The parent id may be associated with another sound url,\n so change the sound with that id to have this url instead.\n */\n if (thisSound.url != sURL) {\n thisSound.url = sURL;\n }\n\n // already exists\n if (thisSound === self.lastSound) {\n // and was playing (or paused)\n thisSound.togglePause();\n } else {\n // different sound\n thisSound.togglePause(); // start playing current\n sm._writeDebug('sound different than last sound: '+self.lastSound.id);\n if (!self.config.allowMultiple && self.lastSound) {\n self.stopSound(self.lastSound);\n }\n }\n\n } else {\n // append some dom shiz, make noise\n\n oContainer = o.parentNode;\n has_vis = (self.getElementsByClassName('ui360-vis','div',oContainer.parentNode).length);\n\n crgClass=oContainer.classList[1];\n // create sound\n thisSound = sm.createSound({\n id:soundId,\n url:soundURL,\n onplay:self.events.play,\n onstop:self.events.stop,\n onpause:self.events.pause,\n onresume:self.events.resume,\n onfinish:self.events.finish,\n onbufferchange:self.events.bufferchange,\n type:(o.type||null),\n whileloading:self.events.whileloading,\n whileplaying:self.events.whileplaying,\n useWaveformData:(has_vis && self.config.useWaveformData),\n useEQData:(has_vis && self.config.useEQData),\n usePeakData:(has_vis && self.config.usePeakData)\n });\n\n // tack on some custom data\n\n diameter = parseInt(self.getElementsByClassName('sm2-360ui','div',oContainer)[0].offsetWidth, 10);\n\n // see note re: IE <9 and excanvas when Modernizr is included, making weird things happen with .\n canvasElements = self.getElementsByClassName('sm2-canvas','canvas',oContainer),\n\n thisSound._360data = {\n oUI360: self.getParentByClassName(o,'ui360'), // the (whole) entire container\n oLink: o, // DOM node for reference within SM2 object event handlers\n className: self.css.sPlaying,\n oUIBox: self.getElementsByClassName('sm2-360ui','div',oContainer)[0],\n oCanvas: canvasElements[canvasElements.length-1],\n oButton: self.getElementsByClassName('sm2-360btn','span',oContainer)[0],\n oTiming: self.getElementsByClassName('sm2-timing','div',oContainer)[0],\n oCover: self.getElementsByClassName('sm2-cover','div',oContainer)[0],\n circleDiameter: diameter,\n circleRadius: diameter/2,\n lastTime: null,\n didFinish: null,\n pauseCount:0,\n radius:0,\n fontSize: 1,\n fontSizeMax: self.config.fontSizeMax,\n scaleFont: (has_vis && self.config.scaleFont),\n showHMSTime: has_vis,\n amplifier: (has_vis && self.config.usePeakData?0.9:1), // TODO: x1 if not being used, else use dynamic \"how much to amplify by\" value\n radiusMax: diameter*0.25, // circle radius\n width:0,\n widthMax: diameter*0.5,//*0.4, // width of the outer ring\n lastValues: {\n bytesLoaded: 0,\n bytesTotal: 0,\n position: 0,\n durationEstimate: 0\n }, // used to track \"last good known\" values before sound finish/reset for anim\n animating: false,\n oAnim: new window.Animator({\n duration: self.config.animDuration,\n transition:self.config.animTransition,\n onComplete: function() {\n // var thisSound = this;\n // thisSound._360data.didFinish = false; // reset full circle\n }\n }),\n oAnimProgress: function(nProgress) {\n var thisSound = this;\n thisSound._360data.radius = parseInt(thisSound._360data.radiusMax*thisSound._360data.amplifier*nProgress, 10);\n thisSound._360data.width = parseInt(thisSound._360data.widthMax*thisSound._360data.amplifier*nProgress, 10);\n if (thisSound._360data.scaleFont && thisSound._360data.fontSizeMax !== null) {\n thisSound._360data.oTiming.style.fontSize = parseInt(Math.max(1,thisSound._360data.fontSizeMax*nProgress), 10)+'px';\n thisSound._360data.oTiming.style.opacity = nProgress;\n }\n if (thisSound.paused || thisSound.playState === 0 || thisSound._360data.lastValues.bytesLoaded === 0 || thisSound._360data.lastValues.position === 0) {\n self.updatePlaying.apply(thisSound);\n }\n },\n fps: 0\n };\n\n // \"Metadata\" (annotations)\n if (typeof self.Metadata !== 'undefined' && self.getElementsByClassName('metadata','div',thisSound._360data.oUI360).length) {\n thisSound._360data.metadata = new self.Metadata(thisSound,self);\n }\n\n // minimize ze font\n if (thisSound._360data.scaleFont && thisSound._360data.fontSizeMax !== null) {\n thisSound._360data.oTiming.style.fontSize = '1px';\n }\n\n // set up ze animation\n thisSound._360data.oAnim.addSubject(thisSound._360data.oAnimProgress,thisSound);\n\n // animate the radius out nice\n self.refreshCoords(thisSound);\n\n self.updatePlaying.apply(thisSound);\n\n // JH07182014 : Modified this from self.soundsByUrl[URL] = thisSound.\n self.soundsById[soundId] = thisSound;\n self.sounds.push(thisSound);\n if (!self.config.allowMultiple && self.lastSound) {\n self.stopSound(self.lastSound);\n }\n thisSound.play();\n\n }\n\n self.lastSound = thisSound; // reference for next call\n\n if (typeof e !== 'undefined' && typeof e.preventDefault !== 'undefined') {\n e.preventDefault();\n } else if (typeof window.event !== 'undefined') {\n window.event.returnValue = false;\n }\n return false;\n\n };\n\n this.fanOut = function(oSound) {\n\n var thisSound = oSound;\n if (thisSound._360data.animating === 1) {\n return false;\n }\n thisSound._360data.animating = 0;\n soundManager._writeDebug('fanOut: '+thisSound.id+': '+thisSound._360data.oLink.href);\n thisSound._360data.oAnim.seekTo(1); // play to end\n window.setTimeout(function() {\n // oncomplete hack\n thisSound._360data.animating = 0;\n },self.config.animDuration+20);\n\n };\n\n this.fanIn = function(oSound) {\n\n var thisSound = oSound;\n if (thisSound._360data.animating === -1) {\n return false;\n }\n thisSound._360data.animating = -1;\n soundManager._writeDebug('fanIn: '+thisSound.id+': '+thisSound._360data.oLink.href);\n // massive hack\n thisSound._360data.oAnim.seekTo(0); // play to end\n window.setTimeout(function() {\n // reset full 360 fill after animation has completed (oncomplete hack)\n thisSound._360data.didFinish = false;\n thisSound._360data.animating = 0;\n self.resetLastValues(thisSound);\n }, self.config.animDuration+20);\n\n };\n\n this.resetLastValues = function(oSound) {\n oSound._360data.lastValues.position = 0;\n };\n\n this.refreshCoords = function(thisSound) {\n\n thisSound._360data.canvasXY = self.findXY(thisSound._360data.oCanvas);\n thisSound._360data.canvasMid = [thisSound._360data.circleRadius,thisSound._360data.circleRadius];\n thisSound._360data.canvasMidXY = [thisSound._360data.canvasXY[0]+thisSound._360data.canvasMid[0], thisSound._360data.canvasXY[1]+thisSound._360data.canvasMid[1]];\n\n };\n\n this.stopSound = function(oSound) {\n\n soundManager._writeDebug('stopSound: '+oSound.id);\n soundManager.stop(oSound.id);\n if (!isTouchDevice) { // iOS 4.2+ security blocks onfinish() -> playNext() if we set a .src in-between(?)\n soundManager.unload(oSound.id);\n }\n\n };\n\n this.buttonClick = function(e) {\n\n var o = e?(e.target?e.target:e.srcElement):window.event.srcElement;\n self.handleClick({target:self.getParentByClassName(o,'sm2-360ui').nextSibling}); // link next to the nodes we inserted\n return false;\n\n };\n\n this.buttonMouseDown = function(e) {\n\n // user might decide to drag from here\n // watch for mouse move\n if (!isTouchDevice) {\n document.onmousemove = function(e) {\n // should be boundary-checked, really (eg. move 3px first?)\n self.mouseDown(e);\n };\n } else {\n self.addEventHandler(document,'touchmove',self.mouseDown);\n }\n self.stopEvent(e);\n return false;\n\n };\n\n this.mouseDown = function(e) {\n\n if (!isTouchDevice && e.button > 1) {\n return true; // ignore non-left-click\n }\n\n if (!self.lastSound) {\n self.stopEvent(e);\n return false;\n }\n\n var evt = e?e:window.event,\n target, thisSound, oData;\n\n if (isTouchDevice && evt.touches) {\n evt = evt.touches[0];\n }\n target = (evt.target||evt.srcElement);\n\n thisSound = self.getSoundById(\"ui360Sound\" + o.parentElement.attributes.soundid.value);\n\n // just in case, update coordinates (maybe the element moved since last time.)\n self.lastTouchedSound = thisSound;\n self.refreshCoords(thisSound);\n oData = thisSound._360data;\n self.addClass(oData.oUIBox,'sm2_dragging');\n oData.pauseCount = (self.lastTouchedSound.paused?1:0);\n // self.lastSound.pause();\n self.mmh(e?e:window.event);\n\n if (isTouchDevice) {\n self.removeEventHandler(document,'touchmove',self.mouseDown);\n self.addEventHandler(document,'touchmove',self.mmh);\n self.addEventHandler(document,'touchend',self.mouseUp);\n } else {\n // incredibly old-skool. TODO: Modernize.\n document.onmousemove = self.mmh;\n document.onmouseup = self.mouseUp;\n }\n\n self.stopEvent(e);\n return false;\n\n };\n\n this.mouseUp = function(e) {\n\n var oData = self.lastTouchedSound._360data;\n self.removeClass(oData.oUIBox,'sm2_dragging');\n if (oData.pauseCount === 0) {\n self.lastTouchedSound.resume();\n }\n if (!isTouchDevice) {\n document.onmousemove = null;\n document.onmouseup = null;\n } else {\n self.removeEventHandler(document,'touchmove',self.mmh);\n self.removeEventHandler(document,'touchend',self.mouseUP);\n }\n\n };\n\n this.mmh = function(e) {\n\n if (typeof e === 'undefined') {\n e = window.event;\n }\n var oSound = self.lastTouchedSound,\n coords = self.getMouseXY(e),\n x = coords[0],\n y = coords[1],\n deltaX = x-oSound._360data.canvasMidXY[0],\n deltaY = y-oSound._360data.canvasMidXY[1],\n angle = Math.floor(fullCircle-(self.rad2deg(Math.atan2(deltaX,deltaY))+180));\n\n oSound.setPosition(oSound.durationEstimate*(angle/fullCircle));\n self.stopEvent(e);\n return false;\n\n };\n\n // assignMouseDown();\n\n this.drawSolidArc = function(oCanvas, color, radius, width, radians, startAngle, noClear) {\n\n // thank you, http://www.snipersystems.co.nz/community/polarclock/tutorial.html\n\n var x = radius,\n y = radius,\n canvas = oCanvas,\n ctx, innerRadius, doesntLikeZero, endPoint;\n\n if (canvas.getContext) {\n // use getContext to use the canvas for drawing\n ctx = canvas.getContext('2d');\n }\n\n // re-assign canvas as the actual context\n oCanvas = ctx;\n\n if (!noClear) {\n self.clearCanvas(canvas);\n }\n // ctx.restore();\n\n if (color) {\n ctx.fillStyle = color;\n }\n\n oCanvas.beginPath();\n\n if (isNaN(radians)) {\n radians = 0;\n }\n\n innerRadius = radius-width;\n doesntLikeZero = (isOpera || isSafari); // safari 4 doesn't actually seem to mind.\n\n if (!doesntLikeZero || (doesntLikeZero && radius > 0)) {\n oCanvas.arc(0, 0, radius, startAngle, radians, false);\n endPoint = self.getArcEndpointCoords(innerRadius, radians);\n oCanvas.lineTo(endPoint.x, endPoint.y);\n oCanvas.arc(0, 0, innerRadius, radians, startAngle, true);\n oCanvas.closePath();\n oCanvas.fill();\n }\n\n };\n\n this.getArcEndpointCoords = function(radius, radians) {\n\n return {\n x: radius * Math.cos(radians), \n y: radius * Math.sin(radians)\n };\n\n };\n\n this.deg2rad = function(nDeg) {\n return (nDeg * Math.PI/180);\n };\n\n this.rad2deg = function(nRad) {\n return (nRad * 180/Math.PI);\n };\n\n this.getTime = function(nMSec,bAsString) {\n\n // convert milliseconds to mm:ss, return as object literal or string\n var nSec = Math.floor(nMSec/1000),\n min = Math.floor(nSec/60),\n sec = nSec-(min*60);\n // if (min === 0 && sec === 0) return null; // return 0:00 as null\n return (bAsString?(min+':'+(sec<10?'0'+sec:sec)):{'min':min,'sec':sec});\n\n };\n\n this.clearCanvas = function(oCanvas) {\n\n var canvas = oCanvas,\n ctx = null,\n width, height;\n\n if (canvas.getContext) {\n // use getContext to use the canvas for drawing\n ctx = canvas.getContext('2d');\n }\n\n if (ctx) {\n width = canvas.offsetWidth;\n height = canvas.offsetHeight;\n ctx.clearRect(-(width/2), -(height/2), width, height);\n }\n\n };\n\n this.updatePlaying = function() {\n\n var timeNow = (this._360data.showHMSTime?self.getTime(this.position,true):parseInt(this.position/1000, 10));\n var ringScaleFactor = self.config.scaleArcWidth;\n\n if (this.bytesLoaded) {\n this._360data.lastValues.bytesLoaded = this.bytesLoaded;\n this._360data.lastValues.bytesTotal = this.bytesTotal;\n }\n\n if (this.position) {\n this._360data.lastValues.position = this.position;\n }\n\n if (this.durationEstimate) {\n this._360data.lastValues.durationEstimate = this.durationEstimate;\n }\n\n // background ring\n self.drawSolidArc(this._360data.oCanvas,self.config.backgroundRingColor,this._360data.width,this._360data.radius * ringScaleFactor,self.deg2rad(fullCircle),false);\n\n // loaded ring\n self.drawSolidArc(this._360data.oCanvas,(this._360data.metadata?self.config.loadRingColorMetadata:self.config.loadRingColor),this._360data.width,this._360data.radius * ringScaleFactor,self.deg2rad(fullCircle*(this._360data.lastValues.bytesLoaded/this._360data.lastValues.bytesTotal)),0,true);\n\n // don't draw if 0 (full black circle in Opera)\n if (this._360data.lastValues.position !== 0) {\n self.drawSolidArc(this._360data.oCanvas,(this._360data.metadata?self.config.playRingColorMetadata:self.config.playRingColor),this._360data.width,this._360data.radius * ringScaleFactor,self.deg2rad((this._360data.didFinish===1?fullCircle:fullCircle*(this._360data.lastValues.position/this._360data.lastValues.durationEstimate))),0,true);\n }\n\n // metadata goes here\n if (this._360data.metadata) {\n this._360data.metadata.events.whileplaying();\n }\n\n if (timeNow !== this._360data.lastTime) {\n this._360data.lastTime = timeNow;\n this._360data.oTiming.innerHTML = timeNow;\n }\n\n // draw spectrum, if applicable\n if ((this.instanceOptions.useWaveformData || this.instanceOptions.useEQData) && hasRealCanvas) { // IE <9 can render maybe 3 or 4 FPS when including the wave/EQ, so don't bother.\n self.updateWaveform(this);\n }\n\n if (self.config.useFavIcon && self.vuMeter) {\n self.vuMeter.updateVU(this);\n }\n\n };\n\n this.updateWaveform = function(oSound) {\n\n if ((!self.config.useWaveformData && !self.config.useEQData) || (!sm.features.waveformData && !sm.features.eqData)) {\n // feature not enabled..\n return false;\n }\n\n if (!oSound.waveformData.left.length && !oSound.eqData.length && !oSound.peakData.left) {\n // no data (or errored out/paused/unavailable?)\n return false;\n }\n\n /* use for testing the data */\n /*\n for (i=0; i<256; i++) {\n oSound.eqData[i] = 1-(i/256);\n }\n */\n\n var oCanvas = oSound._360data.oCanvas.getContext('2d'),\n offX = 0,\n offY = parseInt(oSound._360data.circleDiameter/2, 10),\n scale = offY/2, // Y axis (+/- this distance from 0)\n // lineWidth = Math.floor(oSound._360data.circleDiameter-(oSound._360data.circleDiameter*0.175)/(oSound._360data.circleDiameter/255)); // width for each line\n lineWidth = 1,\n lineHeight = 1,\n thisY = 0,\n offset = offY,\n i, j, direction, downSample, dataLength, sampleCount, startAngle, endAngle, waveData, innerRadius, perItemAngle, yDiff, eqSamples, playedAngle, iAvg, nPeak;\n\n if (self.config.useWaveformData) {\n // raw waveform\n downSample = self.config.waveformDataDownsample; // only sample X in 256 (greater number = less sample points)\n downSample = Math.max(1,downSample); // make sure it's at least 1\n dataLength = 256;\n sampleCount = (dataLength/downSample);\n startAngle = 0;\n endAngle = 0;\n waveData = null;\n innerRadius = (self.config.waveformDataOutside?1:(self.config.waveformDataConstrain?0.5:0.565));\n scale = (self.config.waveformDataOutside?0.7:0.75);\n perItemAngle = self.deg2rad((360/sampleCount)*self.config.waveformDataLineRatio); // 0.85 = clean pixel lines at 150? // self.deg2rad(360*(Math.max(1,downSample-1))/sampleCount);\n for (i=0; i16500 Hz), most stuff won't actually use it.\n sampleCount = (eqSamples/downSample);\n innerRadius = (self.config.eqDataOutside?1:0.565);\n direction = (self.config.eqDataOutside?-1:1);\n scale = (self.config.eqDataOutside?0.5:0.75);\n startAngle = 0;\n endAngle = 0;\n perItemAngle = self.deg2rad((360/sampleCount)*self.config.eqDataLineRatio); // self.deg2rad(360/(sampleCount+1));\n playedAngle = self.deg2rad((oSound._360data.didFinish===1?360:360*(oSound._360data.lastValues.position/oSound._360data.lastValues.durationEstimate)));\n j=0;\n iAvg = 0;\n for (i=0; iplayedAngle?self.config.eqDataColor:self.config.playRingColor),oSound._360data.width*innerRadius,oSound._360data.radius*scale*(oSound.eqData.left[i]*direction),endAngle,startAngle,true);\n }\n }\n\n if (self.config.usePeakData) {\n if (!oSound._360data.animating) {\n nPeak = (oSound.peakData.left||oSound.peakData.right);\n // GIANT HACK: use EQ spectrum data for bass frequencies\n eqSamples = 3;\n for (i=0; i',\n ' ', // note use of imageMap, edit or remove if you use a different-size image.\n ' ', // + Ever-so-slight Safari horizontal alignment tweak\n '
'\n ];\n\n };\n\n this.uiTest = function(sClass) {\n\n // fake a 360 UI so we can get some numbers from CSS, etc.\n\n var oTemplate = document.createElement('div'),\n oFakeUI, oFakeUIBox, oTemp, fakeDiameter, uiHTML, circleDiameter, circleRadius, fontSizeMax, oTiming;\n\n oTemplate.className = 'sm2-360ui';\n\n oFakeUI = document.createElement('div');\n oFakeUI.className = 'ui360'+(sClass?' '+sClass:''); // ui360 ui360-vis\n\n oFakeUIBox = oFakeUI.appendChild(oTemplate.cloneNode(true));\n\n oFakeUI.style.position = 'absolute';\n oFakeUI.style.left = '-9999px';\n\n oTemp = document.body.appendChild(oFakeUI);\n\n fakeDiameter = oFakeUIBox.offsetWidth;\n\n uiHTML = self.getUIHTML(fakeDiameter);\n\n oFakeUIBox.innerHTML = uiHTML[1]+uiHTML[2]+uiHTML[3];\n\n circleDiameter = parseInt(oFakeUIBox.offsetWidth, 10);\n circleRadius = parseInt(circleDiameter/2, 10);\n\n oTiming = self.getElementsByClassName('sm2-timing','div',oTemp)[0];\n fontSizeMax = parseInt(self.getStyle(oTiming,'font-size'), 10);\n if (isNaN(fontSizeMax)) {\n // getStyle() etc. didn't work.\n fontSizeMax = null;\n }\n\n // soundManager._writeDebug('diameter, font size: '+circleDiameter+','+fontSizeMax);\n\n oFakeUI.parentNode.removeChild(oFakeUI);\n\n uiHTML = oFakeUI = oFakeUIBox = oTemp = null;\n\n return {\n circleDiameter: circleDiameter,\n circleRadius: circleRadius,\n fontSizeMax: fontSizeMax\n };\n\n };\n\n // Each 360player gets its own soundmanager instance which will use defaults for volume levels\n // Update default volume each time a new soundmanger instance is created to reflect user set volume preferences\n this.init = function(options = {}) {\n if (options['effectVolume']) {\n sm.setup({ defaultOptions: { volume: options['effectVolume'] } })\n };\n\n sm._writeDebug('threeSixtyPlayer.init()');\n\n var oItems = self.getElementsByClassName('ui360','div'),\n i, j, oLinks = [], is_vis = false, foundItems = 0, canvasElements, oCanvas, oCanvasCTX, oCover, diameter, radius, uiData, uiDataVis, oUI, oBtn, o, o2, oID;\n\n for (i=0,j=oItems.length; i.\n * When this is the case, the first doesn't have getContext('2d') and such - so, use the second.\n */\n canvasElements = oCanvas.parentNode.getElementsByTagName('canvas');\n if (canvasElements.length > 1) {\n oCanvas = canvasElements[canvasElements.length-1];\n }\n } else { \n // add a handler for the button\n oCanvas = oLinks[i].parentNode.getElementsByTagName('canvas')[0];\n }\n oCover = self.getElementsByClassName('sm2-cover','div',oLinks[i].parentNode)[0];\n oBtn = oLinks[i].parentNode.getElementsByTagName('span')[0];\n self.addEventHandler(oBtn,'click',self.buttonClick);\n if (!isTouchDevice) {\n self.addEventHandler(oCover,'mousedown',self.mouseDown);\n } else {\n self.addEventHandler(oCover,'touchstart',self.mouseDown);\n }\n oCanvasCTX = oCanvas.getContext('2d');\n oCanvasCTX.translate(radius, radius);\n oCanvasCTX.rotate(self.deg2rad(-90)); // compensate for arc starting at EAST // http://stackoverflow.com/questions/319267/tutorial-for-html-canvass-arc-function\n }\n }\n if (foundItems>0) {\n self.addEventHandler(document,'click',self.handleClick);\n if (self.config.autoPlay) {\n self.handleClick({target:self.links[0],preventDefault:function(){}});\n }\n }\n sm._writeDebug('threeSixtyPlayer.init(): Found '+foundItems+' relevant items.');\n\n if (self.config.useFavIcon && typeof this.VUMeter !== 'undefined') {\n this.vuMeter = new this.VUMeter(this);\n }\n\n };\n\n}\n\n// Optional: VU Meter component\n\nThreeSixtyPlayer.prototype.VUMeter = function(oParent) {\n\n var self = oParent,\n me = this,\n _head = document.getElementsByTagName('head')[0],\n isOpera = (navigator.userAgent.match(/opera/i)),\n isFirefox = (navigator.userAgent.match(/firefox/i));\n\n this.vuMeterData = [];\n this.vuDataCanvas = null;\n\n this.setPageIcon = function(sDataURL) {\n\n if (!self.config.useFavIcon || !self.config.usePeakData || !sDataURL) {\n return false;\n }\n\n var link = document.getElementById('sm2-favicon');\n if (link) {\n _head.removeChild(link);\n link = null;\n }\n if (!link) {\n link = document.createElement('link');\n link.id = 'sm2-favicon';\n link.rel = 'shortcut icon';\n link.type = 'image/png';\n link.href = sDataURL;\n document.getElementsByTagName('head')[0].appendChild(link);\n }\n\n };\n\n this.resetPageIcon = function() {\n\n if (!self.config.useFavIcon) {\n return false;\n }\n var link = document.getElementById('favicon');\n if (link) {\n link.href = '/favicon.ico';\n }\n\n };\n\n this.updateVU = function(oSound) {\n\n if (soundManager.flashVersion >= 9 && self.config.useFavIcon && self.config.usePeakData) {\n me.setPageIcon(me.vuMeterData[parseInt(16*oSound.peakData.left, 10)][parseInt(16*oSound.peakData.right, 10)]);\n }\n\n };\n\n this.createVUData = function() {\n\n var i=0, j=0,\n canvas = me.vuDataCanvas.getContext('2d'),\n vuGrad = canvas.createLinearGradient(0, 16, 0, 0),\n bgGrad = canvas.createLinearGradient(0, 16, 0, 0),\n outline = 'rgba(0,0,0,0.2)';\n\n vuGrad.addColorStop(0,'rgb(0,192,0)');\n vuGrad.addColorStop(0.30,'rgb(0,255,0)');\n vuGrad.addColorStop(0.625,'rgb(255,255,0)');\n vuGrad.addColorStop(0.85,'rgb(255,0,0)');\n bgGrad.addColorStop(0,outline);\n bgGrad.addColorStop(1,'rgba(0,0,0,0.5)');\n for (i=0; i<16; i++) {\n me.vuMeterData[i] = [];\n }\n for (i=0; i<16; i++) {\n for (j=0; j<16; j++) {\n // reset/erase canvas\n me.vuDataCanvas.setAttribute('width',16);\n me.vuDataCanvas.setAttribute('height',16);\n // draw new stuffs\n canvas.fillStyle = bgGrad;\n canvas.fillRect(0,0,7,15);\n canvas.fillRect(8,0,7,15);\n /*\n // shadow\n canvas.fillStyle = 'rgba(0,0,0,0.1)';\n canvas.fillRect(1,15-i,7,17-(17-i));\n canvas.fillRect(9,15-j,7,17-(17-j));\n */\n canvas.fillStyle = vuGrad;\n canvas.fillRect(0,15-i,7,16-(16-i));\n canvas.fillRect(8,15-j,7,16-(16-j));\n // and now, clear out some bits.\n canvas.clearRect(0,3,16,1);\n canvas.clearRect(0,7,16,1);\n canvas.clearRect(0,11,16,1);\n me.vuMeterData[i][j] = me.vuDataCanvas.toDataURL('image/png');\n // for debugging VU images\n /*\n var o = document.createElement('img');\n o.style.marginRight = '5px'; \n o.src = vuMeterData[i][j];\n document.documentElement.appendChild(o);\n */\n }\n }\n\n };\n\n this.testCanvas = function() {\n\n // canvas + toDataURL();\n var c = document.createElement('canvas'),\n ctx = null, ok;\n if (!c || typeof c.getContext === 'undefined') {\n return null;\n }\n ctx = c.getContext('2d');\n if (!ctx || typeof c.toDataURL !== 'function') {\n return null;\n }\n // just in case..\n try {\n ok = c.toDataURL('image/png');\n } catch(e) {\n // no canvas or no toDataURL()\n return null;\n }\n // assume we're all good.\n return c;\n\n };\n\n this.init = function() {\n\n if (self.config.useFavIcon) {\n me.vuDataCanvas = me.testCanvas();\n if (me.vuDataCanvas && (isFirefox || isOpera)) {\n // these browsers support dynamically-updating the favicon\n me.createVUData();\n } else {\n // browser doesn't support doing this\n self.config.useFavIcon = false;\n }\n }\n\n };\n\n this.init();\n\n};\n\n// completely optional: Metadata/annotations/segments code\n\nThreeSixtyPlayer.prototype.Metadata = function(oSound, oParent) {\n\n soundManager._wD('Metadata()');\n\n var me = this,\n oBox = oSound._360data.oUI360,\n o = oBox.getElementsByTagName('ul')[0],\n oItems = o.getElementsByTagName('li'),\n isFirefox = (navigator.userAgent.match(/firefox/i)),\n isAlt = false, i, oDuration;\n\n this.lastWPExec = 0;\n this.refreshInterval = 250;\n this.totalTime = 0;\n\n this.events = {\n\n whileplaying: function() {\n\n var width = oSound._360data.width,\n radius = oSound._360data.radius,\n fullDuration = (oSound.durationEstimate||(me.totalTime*1000)),\n isAlt = null, i, j, d;\n\n for (i=0,j=me.data.length; ime.refreshInterval) {\n me.refresh();\n me.lastWPExec = d;\n }\n\n }\n\n };\n\n this.refresh = function() {\n\n // Display info as appropriate\n var i, j, index = null,\n now = oSound.position,\n metadata = oSound._360data.metadata.data;\n\n for (i=0, j=metadata.length; i= metadata[i].startTimeMS && now <= metadata[i].endTimeMS) {\n index = i;\n break;\n }\n }\n if (index !== metadata.currentItem && index < metadata.length) {\n // update\n oSound._360data.oLink.innerHTML = metadata.mainTitle+' | '+metadata[index].title+'';\n // self.setPageTitle(metadata[index].title+' | '+metadata.mainTitle);\n metadata.currentItem = index;\n }\n\n };\n\n this.strToTime = function(sTime) {\n var segments = sTime.split(':'),\n seconds = 0, i;\n for (i=segments.length; i--;) {\n seconds += parseInt(segments[i], 10)*Math.pow(60,segments.length-1-i); // hours, minutes\n }\n return seconds;\n };\n\n this.data = [];\n this.data.givenDuration = null;\n this.data.currentItem = null;\n this.data.mainTitle = oSound._360data.oLink.innerHTML;\n\n for (i=0; i\n restrict: \"A\"\n\n scope:\n model: \"=datepicker\"\n field: \"@?\"\n future: \"@?\"\n past: \"@?\"\n defaultDate: \"=?\"\n minDate: \"=?\"\n maxDate: \"=?\"\n setToEndOfDay: \"=?\"\n setToStartOfDay: \"=?\"\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"datepicker\", $scope)\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = $(element)\n\n field = $scope.field || \"date\"\n options = {}\n if $scope.future && $scope.past # Don't disable any past or future date selection\n options.yearRange = '-1:+1'\n else if $scope.future\n options.minDate = new Date()\n options.yearRange = '-0:+3'\n else\n options.defaultDate = \"+0\"\n options.yearRange = '-3:+0'\n options.maxDate = new Date()\n\n if $scope.defaultDate\n options.defaultDate = new Date($scope.defaultDate)\n\n $scope.element.datepicker _.assignIn options,\n changeMonth: true\n changeYear: true\n# datepickerShowing: $scope.datepickerShowing\n dateFormat: 'M d, yy'\n onSelect: (selectedDate) ->\n $scope.$apply ->\n if $scope.setToEndOfDay\n endOfDayTime = new Date(selectedDate).setHours(23,59,59)\n selectedDate = new Date(endOfDayTime)\n else if $scope.setToStartOfDay\n startOfDayTime = new Date(selectedDate).setHours(0,0,0)\n selectedDate = new Date(startOfDayTime)\n\n $scope.model[field] = if angular.isDate(selectedDate) then selectedDate.toISOString() else selectedDate\n\n date = if $scope.model[field] then new Date($scope.model[field]) else null\n $scope.element.datepicker \"setDate\", date\n\n $scope.$watch \"minDate\", (newVal, oldVal) ->\n $scope.element.datepicker(\"option\", \"minDate\", if $scope.minDate then new Date($scope.minDate) else null)\n\n $scope.$watch \"maxDate\", (newVal, oldVal) ->\n $scope.element.datepicker(\"option\", \"maxDate\", if $scope.maxDate then new Date($scope.maxDate) else null)\n\n $scope.$watch \"model.\" + field, (newVal, oldVal) ->\n unless newVal\n $scope.element.datepicker \"setDate\", null\n])\n","ceregoCommon.directive('flexibleImage', [->\n restrict: \"A\"\n\n scope:\n url: \"@flexibleImage\"\n noZoom: \"=\"\n\n templateUrl: Packs.iKnowRoutes.v2_template_path(\"flexible_image\")\n\n controller: ['$scope', ($scope) ->\n $scope.enableZoom = ->\n $scope.zoom = true\n\n $scope.disableZoom = ->\n $scope.zoom = false\n ]\n\n link: ($scope, element, attr) ->\n element.addClass(\"flexible-image\")\n\n $scope.$watch \"url\", ->\n element.toggleClass(\"ng-hide\", !$scope.url)\n element.css(\"background-image\", \"url(\" + $scope.url + \")\") if $scope.url\n])\n","ceregoCommon.directive('cgFlickrSearch', ['FlickrResource', (FlickrResource) ->\n scope:\n cgFlickrSearch: \"@\"\n version: \"=\"\n\n templateUrl: (element, $scope) ->\n if $scope.version == \"3\" then Packs.iKnowRoutes.common_v3_templates_path(\"flickr\") else Packs.iKnowRoutes.v2_template_path(\"flickr\")\n\n controller: ['$scope', 'DebugHelper','paginationService', ($scope, DebugHelper, paginationService) ->\n DebugHelper.register(\"cgFlickrSearch\", $scope)\n\n _.assignIn $scope,\n active: false\n page: 1\n perPage: 10\n pages: []\n FlickrResource: FlickrResource\n doSearch: ->\n return if !$scope.query\n\n $scope.dirty = true\n $scope.active = true\n FlickrResource.search\n text: $scope.query\n page: $scope.page\n per_page: $scope.perPage\n , (result) ->\n $scope.dirty = false\n $scope.numPages = result.photos.pages\n $scope.photos = result.photos.photo\n if $scope.photos.length < $scope.perPage\n $scope.paddedRange = _.range($scope.photos.length, $scope.perPage)\n $scope.totalCount = parseInt(result.photos.total)\n $scope.pages = paginationService.getClassAndPage($scope.page, $scope.numPages)\n , (error) ->\n console.error error\n\n goToPage: (event, num) ->\n event.preventDefault()\n $scope.page = num\n $scope.doSearch()\n\n close: ->\n $scope.active = false\n\n pickPhoto: ($event, photo) ->\n $scope.active = false\n if _.isUndefined(photo.ownername) || _.isNull(photo.ownername)\n photo.ownername = \"unknown\"\n\n $scope.$parent.$eval $scope.cgFlickrSearch,\n $event: $event\n $orig_owner: photo.ownername\n $url: photo.url_m\n $license_id: photo.license\n\n onInput: (event) ->\n event.preventDefault()\n $scope.page = 1\n $scope.query = $scope.element.find(\"input[type=text]\").val()\n $scope.doSearch()\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n if $scope.version == 3\n $scope.perPage = 20\n])\n","ceregoCommon.directive('imageUploader', ['MediaUploader', 'V3MediaUploader', 'AmplitudeService', (MediaUploader, V3MediaUploader, AmplitudeService) ->\n restrict: \"E\"\n scope:\n onDrop: \"&?\"\n model: \"=\"\n mode: \"=\"\n imageWidth: \"=\"\n imageHeight: \"=\"\n customTitle: \"=\"\n uploadOnly: \"=\"\n version: \"=\"\n allowFormula: \"=?\"\n templateUrl: (element, $scope) ->\n if $scope.version == \"3\" then Packs.iKnowRoutes.common_v3_templates_path(\"image_uploader\") else Packs.iKnowRoutes.v2_template_path(\"image_uploader\")\n\n controller: ['$scope', '$timeout', 'DebugHelper', 'UploaderService', ($scope, $timeout, DebugHelper, UploaderService) ->\n DebugHelper.register(\"imageUploaderScope\", $scope)\n\n UploaderService.imageUploader = $scope\n $scope.$parent.imageUploaders = $scope.$parent.imageUploaders || []\n $scope.$parent.imageUploaders.push $scope\n\n _.assignIn $scope,\n stateUI: {\n }\n dragover: false\n imageUpload:\n percentage: 0\n active: false\n\n # V3 only\n setTabs: () ->\n $scope.tabs = [\n {\n slug: \"default\",\n name: \"js.common.image_uploader.tabs.default\"\n },\n {\n slug: \"url\",\n name: \"js.common.image_uploader.tabs.url\"\n },\n {\n slug: \"flickr\",\n name: \"js.common.image_uploader.tabs.flickr\"\n }\n ]\n\n if $scope.allowFormula\n $scope.tabs.push({\n slug: \"formula\",\n name: \"js.common.image_uploader.tabs.formula\"\n })\n\n generateFormulaImage: (elementId) ->\n AmplitudeService.logEvent(\"generate_formula_image\");\n svg = document.getElementById(elementId).getElementsByTagName('svg')[0]\n img = new Image()\n canvas = document.createElement('canvas')\n\n image_src = $scope.getDataUriForSVG(svg)\n img.src = image_src\n svg.insertAdjacentElement('afterend', img)\n\n $scope.resizeCanvas(svg, canvas, 1600)\n context = canvas.getContext('2d')\n\n img.onload = ->\n context.drawImage(img,0,0, canvas.width, canvas.height)\n png_base_64_data = canvas.toDataURL('image/png')\n $scope.uploadImageFromBase64(png_base_64_data, 'image/png')\n\n getDataUriForSVG: (svg) ->\n xml = new XMLSerializer().serializeToString(svg);\n svg_base_64_data = btoa(xml);\n b64start = 'data:image/svg+xml;base64,';\n data_uri = b64start + svg_base_64_data;\n return data_uri\n\n resizeCanvas: (svg, canvas, maxSize) ->\n svg_rect = svg.getBoundingClientRect()\n aspect_ratio = svg_rect['width'] / svg_rect['height']\n canvas.width = maxSize\n canvas.height = maxSize / aspect_ratio\n\n getMathJaxFormula: (elementId) ->\n MathJax.Hub.Queue([\"Typeset\", MathJax.Hub, elementId])\n MathJax.Hub.Queue([$scope.generateFormulaImage, elementId])\n\n onImageDrop: ($event, model) ->\n if $scope.onDrop\n model = event.originalEvent.dataTransfer.getData(\"text/uri-list\")\n $scope.onDrop()\n\n # TODO: fix - this doesn't currently get called\n onImageUploadProgress: (progress) ->\n $scope.$apply ->\n $scope.imageUpload.percentage = Math.round(100 * progress.loaded / progress.total)\n\n toggleImageMode: (mode) ->\n if mode == $scope.imageUpload.mode\n $scope.imageUpload.mode = 'default'\n else\n $scope.imageUpload.mode = mode\n\n setImageTab: (tab) ->\n $scope.imageUpload.mode = tab.slug\n\n uploadImageFromBase64: (data_uri, content_type) ->\n params = {\n data_uri: data_uri,\n content_type: content_type\n }\n\n $scope.uploadImage params\n\n uploadImageFromFile: ($file) ->\n $scope.uploadImage\n file: $file\n\n uploadImageFromUrl: ($event, $url, $orig_owner, $license_id) ->\n url = $url || $scope.imageUpload.url\n $event.preventDefault()\n params = { url: url }\n if $orig_owner && $license_id\n params.orig_owner = $orig_owner\n params.license_id = $license_id\n $scope.uploadImage params\n\n uploadImage: (params) ->\n if $scope.version == 3\n $scope.V3ImageUpload(params)\n else\n $scope.V2ImageUpload(params)\n\n # TODO: Turn this file to be only V3\n V3ImageUpload: (params) ->\n $scope.imageUpload.active = true\n V3MediaUploader(params, \"image\", $scope.onImageUploadProgress)\n .then (response) ->\n $scope.model.data = response.data.data\n .catch (error) ->\n $scope.stateUI.error = error.data.errors[0].title\n .finally (response) ->\n $scope.imageUpload.active = false\n\n V2ImageUpload: (params) ->\n $scope.imageUpload.active = true\n MediaUploader(params, \"image\", $scope.onImageUploadProgress)\n .success (json) ->\n $scope.$apply ->\n $scope.model.image = json.response.image\n $scope. imageUpload.active = false\n .error (error) ->\n $scope.$apply ->\n $scope.imageUpload.active = false\n\n deleteImage: ($event) ->\n if $scope.version == 3\n $scope.model.data = null\n else\n $scope.model.image = null\n $event.preventDefault()\n\n handleDragLeave: ($event) ->\n $timeout ->\n $scope.dragover = false\n\n handleDragOver: ($event) ->\n $timeout ->\n $scope.dragover = true\n\n $scope.imageUpload.mode = $scope.mode || 'default'\n\n $scope.$watch \"imageWidth\", ->\n $scope.width = Math.round($scope.imageWidth || 300)\n\n $scope.$watch \"imageHeight\", ->\n $scope.height = Math.round($scope.imageHeight || 150)\n\n $scope.$on \"imageUploader:reset\", ->\n $scope.toggleImageMode('default')\n\n $scope.setTabs()\n ]\n\n link: ($scope, element, attrs) ->\n element.on \"dragenter\", (event) ->\n !_.includes(event.originalEvent.dataTransfer.types,\"text/uri-list\")\n\n element.on \"dragover\", (event) ->\n !_.includes(event.originalEvent.dataTransfer.types,\"text/uri-list\")\n\n element[0].addEventListener('dragleave', $scope.handleDragLeave, false)\n element[0].addEventListener('dragover', $scope.handleDragOver, false)\n\n element.on \"drop\", (event) ->\n $scope.onImageDrop(event, $scope.model)\n\n url = event.originalEvent.dataTransfer.getData(\"text/uri-list\")\n if url && url.length > 0\n $scope.uploadImageFromUrl(event, url, null, null)\n false\n else\n true\n])\n","ceregoCommon.directive(\"cgInputFocus\", ['$window', ($window) ->\n restrict: \"AE\"\n\n #must use in combination with .basic-toggle\n link: ($scope, element, attrs) ->\n element.on \"focusin\", (e) ->\n element.closest(\".basic-toggle\").addClass(\"active\")\n e.stopPropagation()\n\n element.on \"focusout\", (e) ->\n $window.setTimeout ->\n angular.element(\".basic-toggle\").removeClass(\"active\")\n , 1000\n])\n","ceregoCommon.directive(\"cgEnter\", [->\n (scope, element, attrs) ->\n element.bind \"keydown keypress\", (event) ->\n if event.which == 13\n scope.$apply ->\n scope.$eval attrs.cgEnter\n event.preventDefault()\n])\n","ceregoCommon.directive(\"layoutHeadingTabs\", [->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"_layout_heading_tabs\")\n\n scope:\n activeTab: \"=?\"\n tabs: \"=?\"\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"layoutHeadingTabs\", $scope)\n\n _.assignIn $scope,\n setActiveTab: (tab) ->\n $scope.activeTab = tab\n ]\n])\n","ceregoCommon.directive(\"learnButton\", [ ->\n restrict: \"E\"\n scope:\n unstarted: \"=?\"\n fading: \"=?\"\n progress: \"=?\"\n buttonClassPreset: \"=?\"\n preloadRoute: \"=?\" # Immediately requests the corresponding study item so no wait is required when clicking the button\n sessionContextType: \"=?\"\n sessionContextId: \"=?\"\n scormPackageId: \"=?\"\n studyItem: \"=?\" # You can pass in existing study items if you already have one (used by smart learn card)\n returnUrl: \"=?\"\n studyType: \"=\" # 'recommended', 'fading_only', or 'force_review'\n buttonText: \"=?\" # Allows you to overwrite the learn button default text (Used for Smart Learn Card)\n analyticsEventName: \"=?\"\n embed: \"=\" # Allow SessionSettings value to presist in the learn app as you study. Good for now modal hard refresh the page when you continue.\n version: \"=?\"\n goalType: \"=?\"\n studiableItems: \"=?\"\n fromEmbed: \"=?\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"learn_button\")\n\n controller: ['$scope', '$analytics', '$window', '$filter', '$q', '$route', 'DebugHelper', 'ModalService', 'ContextService', 'StudyItemsService', 'ScormPackagesResource', '$location', '$rootElement','setLearnURLService', ($scope, $analytics, $window, $filter, $q, $route, DebugHelper, ModalService, ContextService, StudyItemsService, ScormPackagesResource, $location, $rootElement, setLearnURLService) ->\n\n DebugHelper.register(\"learnButton\", $scope)\n\n _.assignIn $scope,\n states:\n unstarted: 'unstarted'\n complete: 'complete'\n in_progress: 'in_progress'\n learn: 'learn'\n review: 'review'\n good_for_now: 'good_for_now'\n uiState:\n shouldDisplay: false\n requestNumber:0 # Used for preventing out of order http responses from affecting us.\n\n getLaunchLink: () ->\n if !$scope.scormPackageId # should never reach this\n DebugHelper.logError(\"Launch link request attempted for \" + $scope.sessionContextType + \" \" + $scope.sessionContextId + \" without scorm package id\")\n return\n ScormPackagesResource.get_launch_link\n id: $scope.scormPackageId\n , (success) ->\n $window.open(success.response, \"_blank\")\n $scope.$emit \"scorm:launchAttempt\"\n , (error) ->\n $scope.$emit \"scorm:launchAttempt\"\n DebugHelper.logError('Unexpected error ' + error + ' getting launch link')\n\n\n getStudySessionRoute: () ->\n $scope.requestNumber += 1\n closuredRequestNumber = $scope.requestNumber\n fromPath = setLearnURLService.getReturnUrl($window.location.pathname, { fromEmbed: $scope.fromEmbed })\n\n StudyItemsService.loadStudyItem($scope.sessionContextType, $scope.sessionContextId, $scope.studyType, fromPath).then (studyItem) ->\n if closuredRequestNumber == $scope.requestNumber # Don't let a stale response affect us\n $scope.studyItem = studyItem\n $scope.resetLearnPath()\n $scope.updateButton()\n\n launchStudySession: (event) ->\n event.preventDefault() if event && event.preventDefault\n return if ['assessment', 'survey'].includes($scope.goalType) && $scope.studyItem.state == 'complete'\n\n if $scope.shouldLaunchGoodForNowModal()\n return ModalService.showModal('good-for-now-modal', _.pick($scope, ['sessionContextType', 'sessionContextId', 'studyItem.learnPath', 'returnUrl', 'studyItem.version']))\n\n if $scope.analyticsEventName\n $analytics.eventTrack($scope.analyticsEventName)\n\n if $scope.scormPackageId\n $scope.getLaunchLink()\n else if !$scope.studyItem.learnPath # If this branch doesn't run then the href will take them to where they need to go\n $scope.$emit \"preventDismissModal\", true\n $scope.getStudySessionRoute().then ->\n# TODO: send tempLoginToken in LTI context\n $scope.launchLearnApp()\n else if $scope.studyItem.version == 4 && $scope.studyItem.learnPath\n# TODO: send tempLoginToken in LTI context\n $scope.launchLearnApp()\n else if $rootElement.attr('ng-app') == 'cerego.learnApp'\n # Use angular.element to parse the path & search out of the URL\n el = angular.element('a').attr(\"href\", $scope.studyItem.learnPath)\n force_reload = el[0].pathname.match($location.path())\n # JS#search returns a string like \"?foo=bar\", but $location expects \"foo=bar\", slice out the ?\n $location.path(el[0].pathname).search(el[0].search.slice(1))\n $route.reload() if force_reload # Force a soft reload if we're navigating to the same assignment - ie review_anyways\n else\n $scope.$emit \"preventDismissModal\", true\n $scope.launchLearnApp()\n return\n\n launchLearnApp: () ->\n fromPath = setLearnURLService.getReturnUrl($window.location.pathname, { fromEmbed: $scope.fromEmbed })\n learnPath = new URL(\"#{$window.location.origin}#{$scope.studyItem.learnPath}\")\n learnPath.searchParams.append('returnUrl', fromPath)\n $window.open(learnPath.toString(), '_top')\n return\n\n setStudyText: () ->\n $scope.studyText = if $scope.buttonText\n $scope.buttonText\n else if ['assessment', 'survey'].includes($scope.goalType)\n $filter('translate')(\"js.learn.learn_button.#{$scope.goalType}.#{$scope.studyItem.state}\")\n else if $scope.scormPackageId\n $filter('translate')(\"js.scorm.launch_cta\")\n else\n $filter('translate')(\"js.learn.learn_button.#{$scope.studyItem.state}\")\n\n setButtonClass: () ->\n $scope.buttonClass = if $scope.buttonClassPreset\n $scope.buttonClassPreset\n else if $scope.scormPackageId\n 'v3-secondary-button button-dark-blue'\n else if [$scope.states.learn, $scope.states.unstarted].includes($scope.studyItem.state)\n 'v3-secondary-button'\n else if [$scope.states.review, $scope.states.in_progress].includes($scope.studyItem.state)\n 'v3-secondary-button button-red'\n else if ['assessment', 'survey'].includes($scope.goalType)\n 'v3-secondary-button button-gray disabled'\n else # good_for_now, complete\n 'v3-secondary-button button-gray'\n\n shouldLaunchGoodForNowModal: () ->\n !$scope.studyItem.skipModal &&\n !$scope.isAssessment &&\n !$scope.isSurvey &&\n !$scope.scormPackageId &&\n $scope.studyItem.unstarted == 0 &&\n $scope.studyItem.fading == 0 &&\n $scope.studyType != 'force_review' &&\n $scope.studyItem.version == 3\n\n ensureValidStudyItem: () ->\n $scope.studyItem = $scope.studyItem ? {}\n $scope.studyItem.unstarted = $scope.unstarted ? ($scope.studyItem?.unstarted ? 0)\n $scope.studyItem.fading = $scope.fading ? ($scope.studyItem?.fading ? 0)\n $scope.studyItem.version = $scope.version ? ($scope.version ? 3)\n $scope.studyItem.progress = $scope.progress ? ($scope.progress ? 0)\n\n setStudyItemState: () ->\n $scope.studyItem.state = if ['assessment', 'survey'].includes($scope.goalType)\n if $scope.studyItem.progress == 0\n $scope.states.unstarted\n else if $scope.studyItem.unstarted > 0\n $scope.states.in_progress\n else\n $scope.states.complete\n else\n if $scope.studyItem.unstarted > 0\n $scope.states.learn\n else if $scope.studyItem.unstarted == 0 and $scope.studyItem.fading > 0\n $scope.states.review\n else\n $scope.states.good_for_now\n\n updateButton: () ->\n $scope.setStudyItemState()\n $scope.setButtonClass()\n $scope.setStudyText()\n $scope.uiState.shouldDisplay = (!$scope.preloadRoute || $scope.studyItem.learnPath)\n\n isAssignmentContext: () ->\n $scope.sessionContextType == 'sets' || $scope.sessionContextType == 'series'\n\n canShortCircuitStudyItemsLoad: () -> # Don't need to load anything if it is assignment context and we know num unstarted and num fading\n $scope.isAssignmentContext() && $scope.unstarted? && $scope.fading?\n\n initialize: () ->\n $scope.ensureValidStudyItem()\n fromPath = setLearnURLService.getReturnUrl($window.location.pathname, { fromEmbed: $scope.fromEmbed })\n\n if $scope.canShortCircuitStudyItemsLoad()\n $scope.studyItem.learnPath = StudyItemsService.getAssignmentLearnPath($scope.sessionContextType, $scope.sessionContextId, $scope.studyType, fromPath, $scope.studyItem.version)\n $scope.resetLearnPath()\n\n else if $scope.preloadRoute\n $scope.getStudySessionRoute()\n\n $scope.updateButton()\n\n updateScormPackageId: () ->\n if $scope.studyItem && $scope.studyItem.scormPackageId\n $scope.scormPackageId = $scope.studyItem.scormPackageId\n\n resetLearnPath: () ->\n if ($scope.studyItem.version == 4)\n id = parseInt($scope.studyItem.primaryCollection?.id || $scope.sessionContextId)\n $scope.studyItem.learnPath = setLearnURLService.getUrl({id: id, version: 4}, { studyType: $scope.studyType })\n\n if $scope.embed\n $scope.studyItem.learnPath = $scope.studyItem.learnPath + \"&embed=true\"\n\n $scope.$watch \"sessionContextId\", ->\n $scope.initialize()\n\n $scope.$watch \"studyItem\", (oldVal, newVal) ->\n $scope.updateScormPackageId()\n $scope.resetLearnPath()\n ]\n])\n","ceregoCommon.directive('cgMediaChange', [->\n link: ($scope, element, attrs) ->\n element.bind \"change\", (event) ->\n if element[0].files.length > 0\n $scope.$eval(attrs.cgMediaChange, { $file: element[0].files[0], $event: event })\n])\n\nceregoCommon.service('V3MediaUploader', ['$http', ($http) ->\n this.upload = (data, media_type, progressHandler, options = {}) ->\n if media_type == \"image\"\n url = APIRoutes.v3_images_path()\n else if media_type == \"pdf\"\n url = APIRoutes.v3_documents_path()\n else if media_type == \"user_csv\"\n url = APIRoutes.v3_partner_user_csv_uploads_path(options.partner_id)\n else if media_type == \"scorm_zip\"\n url = APIRoutes.v3_scorm_packages_path()\n else if media_type == \"video\"\n url = APIRoutes.v3_videos_path()\n else\n url = APIRoutes.v3_sounds_path()\n\n if data.file\n $http(\n method: 'POST'\n url: url\n headers:\n 'Content-Type': undefined\n data: data\n transformRequest: (data, headersGetter, status) ->\n fd = new FormData()\n for k,v of data\n fd.append(k, v)\n fd\n cache: false\n uploadEventHandlers:\n progress: progressHandler\n )\n else\n $http(\n method: 'POST'\n url: url\n headers:\n 'Content-Type': 'application/json'\n data: data\n cache: false\n eventHandlers:\n progress: progressHandler\n )\n])\n\nceregoCommon.service('MediaUploader', ['$http', '$cookies', ($http, $cookies) ->\n this.upload = (data, media_type, progressHandler, fileName) ->\n fd = new FormData()\n for key, file of data\n if fileName || file.name\n fd.append(key, file, fileName || file.name)\n else\n fd.append(key, file)\n\n if media_type == \"image\"\n url = APIRoutes.v2_images_path()\n else if media_type == \"pdf\"\n url = APIRoutes.v3_documents_path()\n else\n url = APIRoutes.v2_sounds_path()\n\n headers = {\n 'X-CSRF-Token': $cookies.get('csrf_token')\n }\n if CeregoAPI.token\n headers['Authorization'] = \"Bearer \" + CeregoAPI.token\n\n # TODO: get this working with $http instead of jquery\n $.ajax\n url: url\n method: \"POST\"\n data: fd\n dataType: \"JSON\"\n headers: headers\n xhr: ->\n myXhr = $.ajaxSettings.xhr()\n if myXhr.upload && progressHandler\n myXhr.upload.addEventListener \"progress\", progressHandler\n myXhr\n cache: false\n contentType: false\n processData: false\n])\n","ceregoCommon.directive('cgModuleTiles', [->\n restrict: \"E\"\n\n scope:\n modules: \"=\"\n defaultGoalImage: \"@\"\n defaultUserImage: \"@\"\n\n templateUrl: Packs.iKnowRoutes.v2_template_path(\"module_tiles\")\n\n controller: ['$scope', '$filter', 'DebugHelper', 'SiteNavigationService', ($scope, $filter, DebugHelper, SiteNavigationService) ->\n DebugHelper.register(\"cgModuleTiles\", $scope)\n\n _.assignIn $scope,\n parent: $scope.$parent\n routes: Packs.iKnowRoutes\n isCreateProduct: SiteNavigationService.isCreate()\n\n modulePath: (module) ->\n if $scope.isCreateProduct\n if module.module_type == \"set\"\n Packs.iKnowRoutes.v2_create_set_path(module.id)\n else\n Packs.iKnowRoutes.v2_create_series_path(module.id)\n else\n if module.module_type == \"set\"\n Packs.iKnowRoutes.v3_learn_set_path(module.id)\n else\n Packs.iKnowRoutes.v3_learn_series_path(module.id)\n\n parsedDescription: (module) ->\n if $filter('presence')(module.description_html)\n module.description_html\n else\n if module.module_type == 'set'\n \"js.module_view.show_set.default_description\"\n else\n \"js.module_view.show_series.default_description\"\n\n isCurrentSet: (set) ->\n $scope.currentSet == set && !_.isUndefined($scope.currentSet)\n\n selectSet: (set) ->\n $scope.currentSet = set\n\n creatorPath: (module) ->\n \"\"\n\n precomputeData: ->\n for module in $scope.modules\n _.assignIn module,\n modulePath: $scope.modulePath(module)\n description: $scope.parsedDescription(module)\n creatorPath: $scope.creatorPath(module)\n\n if module.sets\n for set in module.sets\n _.assignIn set,\n modulePath: $scope.modulePath(set)\n\n $scope.$watch \"modules\", ->\n if $scope.modules.length == 0\n $scope.selectSet(undefined)\n else\n $scope.precomputeData()\n ]\n])\n","ceregoCommon.directive('cgMoreButton', ['$window', ($window) ->\n restrict: \"E\"\n\n link: ($scope, element, attrs) ->\n element.addClass \"alt-button alt-button--secondary\"\n\n timer = false\n\n element.on \"mouseover\", ->\n element.addClass \"expanded\"\n if timer\n $window.clearTimeout timer\n timer = $window.setTimeout ->\n element.removeClass \"expanded\"\n , 1000\n])\n","ceregoCommon.directive(\"noteViewer\", [->\n restrict: \"E\"\n scope:\n item: \"=\"\n currentQuiz: \"=?\"\n facet: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"note_viewer\")\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"noteViewer\", $scope)\n\n _.assignIn $scope,\n uiState: {}\n\n isFullEmbed: (annotation) ->\n annotation.external_resource_url?.match(/steinhardtapps\\.es\\.its\\.nyu\\.edu/) ||\n annotation.external_resource_url?.match(/invis\\.io/) ||\n annotation.external_resource_url?.match(/docs\\.google\\.com/) ||\n annotation.attributes?[\"external-resource-url\"]?.match(/steinhardtapps\\.es\\.its\\.nyu\\.edu/) ||\n annotation.attributes?[\"external-resource-url\"]?.match(/invis\\.io/) ||\n annotation.attributes?[\"external-resource-url\"]?.match(/docs\\.google\\.com/)\n\n annotationImageUrl: (annotation) ->\n annotation.image?.url || annotation.relationships?.image?.data?.attributes?.url\n\n annotationSoundUrl: (annotation) ->\n annotation.sound?.url || annotation.relationships?.sound?.data?.attributes?.url\n \n annotationVideoUrl: (annotation) ->\n annotation.video?.url || annotation.relationships?.video?.data?.attributes?.url\n\n setAnnotationsByColumn: ->\n #V3 item\n\n if $scope.item.type == 'items'\n $scope.annotationsByColumn = _.groupBy($scope.item.relationships.annotations.data || [],\"attributes.column\")\n\n else\n if $scope.item.note_type == 'item' || $scope.currentQuiz?.quiz_type == 'PatternStudy'\n $scope.annotationsByColumn = _.groupBy($scope.item.annotations || [],\"column\")\n else\n $scope.annotationsByColumn = _.groupBy($scope.facet.annotations || [],\"column\")\n\n setUiState: ->\n annotations = $scope.item?.annotations || $scope.item.relationships.annotations\n\n if $scope.item.annotations\n $scope.numColumns = Math.max(Math.max.apply(null, _.map($scope.item.annotations,\"column\")), 1)\n else\n $scope.numColumns = Math.max(Math.max.apply(null, _.map($scope.item.relationships.annotations.data, (annotation) ->\n annotation.attributes.column)), 1)\n\n $scope.columns = _.range(1, $scope.numColumns + 1)\n\n # don't support multiple in viewer at a time right now so find is sufficient\n\n pdfAnnotation = _.find($scope.item.annotations, (annotation) ->\n annotation.document?.content_type == \"application/pdf\"\n )\n\n pdfAnnotation ||= _.find($scope.item.relationships?.annotations.data, (annotation) ->\n annotation.relationships.document.data?.attributes['content-type'] == \"application/pdf\"\n )\n\n if pdfAnnotation\n $scope.uiState.isFullBleed = true\n $scope.embedTargetUrl = pdfAnnotation?.document?.url\n $scope.embedTargetUrl ||= pdfAnnotation.relationships.document.data.attributes.url\n else\n $scope.uiState.isFullBleed = false\n\n $scope.setAnnotationsByColumn()\n $scope.setUiState()\n ]\n])\n","ceregoCommon.directive('cgPaginateTiles', ['$window', ($window) ->\n restrict: \"E\"\n\n scope:\n limit: \"=\"\n modulesCount: \"=\"\n offset: \"=\"\n collection: \"@\"\n\n templateUrl: Packs.iKnowRoutes.v2_template_path(\"paginate_select\")\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"cgPaginateTiles\", $scope)\n\n _.assignIn $scope, {\n currentPage: 1\n count: 0\n lastPage: 0\n pageArray: []\n\n currentMinShown: ->\n (($scope.currentPage - 1) * $scope.limit) + 1\n\n currentMaxShown: ->\n Math.min($scope.currentPage * $scope.limit, $scope.modulesCount)\n\n decrementPage: (num) ->\n $scope.currentPage = $scope.currentPage - num\n $scope.notifyPageChanged()\n\n incrementPage: (num) ->\n $scope.currentPage = $scope.currentPage + num\n $scope.notifyPageChanged()\n\n goToPage: (page) ->\n $scope.currentPage = page\n $scope.notifyPageChanged()\n\n notifyPageChanged: ->\n $scope.$emit \"pagination:Pagechanged\", $scope.currentPage, $scope.collection\n angular.element(\"body\").scrollTop(0);\n $scope.prepPageArray()\n\n prepPageArray: ->\n if angular.element($window).width() < 768 # mobile\n if $scope.lastPage == 3\n $scope.pageArray = _.range(1, 3)\n else\n $scope.pageArray = [$scope.currentPage]\n else # desktop\n totalPage = Math.ceil($scope.modulesCount / $scope.limit)\n $scope.pageArray = _.range(Math.max(1, $scope.currentPage - 5), Math.min($scope.currentPage + 5, totalPage) + 1)\n }\n\n $scope.$watch(\"offset\", ->\n if $scope.offset == 0\n $scope.currentPage = 1\n $scope.prepPageArray()\n )\n\n $scope.$watch(\"modulesCount\", ->\n return if !$scope.modulesCount\n $scope.lastPage = Math.ceil($scope.modulesCount/$scope.limit)\n $scope.prepPageArray()\n )\n ]\n])\n","ceregoCommon.directive(\"payportal\", [->\n restrict: \"E\"\n scope:\n course: \"=\"\n user: \"=\"\n successCallback: \"&\"\n image: \"=\"\n version: \"=\"\n templateUrl: (element, $scope) ->\n if $scope.version == \"3\" then Packs.iKnowRoutes.common_v3_templates_path(\"_new_payportal\") else Packs.iKnowRoutes.common_v3_templates_path(\"_payportal\")\n\n controller: ['$scope', '$filter', 'DebugHelper', 'StripeService', 'V3CourseUsersResource', 'currencyToSymbolMap', ($scope, $filter, DebugHelper, StripeService, V3CourseUsersResource, currencyToSymbolMap) ->\n DebugHelper.register(\"payportal\", $scope)\n\n _.assignIn $scope,\n\n stripeHandler: ->\n stripeOptions = {\n email: $scope.user.attributes.email\n panelLabel: $filter('translate')('js.common.payportal.pay')\n name: $filter('translate')('js.common.payportal.pay_by_credit_card')\n amount: $scope.course.meta.cost\n currency: $scope.course.meta.currency\n }\n StripeService.configureHandler(stripeOptions).then (token) ->\n params =\n token: token.id\n\n V3CourseUsersResource.update { course_id: $scope.course.id, id: $scope.user.id }, params,\n (success) ->\n $scope.successCallback()\n\n $onInit: ->\n $scope.paymentAmount = $scope.course.meta.cost/100\n ]\n])\n","ceregoCommon.directive('pdfUploader', [\n 'MediaUploader',\n 'V3MediaUploader',\n '$timeout',\n function (MediaUploader, V3MediaUploader, $timeout) {\n return {\n restrict: 'E',\n scope: {\n model: '=',\n version: '=',\n },\n templateUrl: function (_element, $scope) {\n if ($scope.version === '3') {\n return Packs.iKnowRoutes.common_v3_templates_path('pdf_uploader');\n } else {\n return Packs.iKnowRoutes.v2_template_path('pdf_uploader');\n }\n },\n controller: [\n '$scope',\n '$filter',\n 'DebugHelper',\n function ($scope, $filter, DebugHelper) {\n DebugHelper.register('pdfUploaderScope', $scope);\n\n $scope.$parent.pdfUploaders = $scope.$parent.pdfUploaders || [];\n $scope.$parent.pdfUploaders.push($scope);\n\n _.assignIn($scope, {\n pdfUpload: {\n mode: 'default',\n percentage: 0,\n active: false,\n },\n onPdfUploadProgress: function (progress) {\n $scope.$apply(function () {\n $scope.pdfUpload.percentage = Math.round((100 * progress.loaded) / progress.total);\n });\n },\n uploadPdfFromFile: function ($file) {\n $scope.$apply(function () {\n $scope.uploadPdf({\n file: $file,\n });\n });\n },\n uploadPdfFromUrl: function ($event, $url) {\n $event.preventDefault();\n $scope.uploadPdf({\n url: $url || $scope.pdfUpload.url,\n });\n },\n uploadPdf: function ($file) {\n if ($file.type === 'application/pdf') {\n if ($scope.version === 3) {\n $scope.V3PDFUpload({ file: $file });\n } else {\n $scope.V2PDFUpload({ file: $file });\n }\n }\n },\n V3PDFUpload: function (params) {\n $scope.pdfUpload.active = true;\n V3MediaUploader(params, 'pdf', $scope.onPdfUploadProgress)\n .then(function (response) {\n $scope.model.document.data = response.data.data;\n var reader = new FileReader();\n reader.addEventListener('load', function () {\n $scope.$apply(function () {\n angular.element('iframe', $scope.el)[0].src = reader.result;\n });\n });\n reader.readAsDataURL(params.file);\n })\n .finally(function (_result) {\n $scope.pdfUpload.active = false;\n });\n },\n V2PDFUpload: function (params) {\n $scope.pdfUpload.active = true;\n MediaUploader(params, 'pdf', $scope.onPdfUploadProgress)\n .success(function (json) {\n $scope.$apply(function () {\n $scope.model.document = json.data;\n $scope.pdfUpload.active = false;\n var reader = new FileReader();\n reader.addEventListener('load', function () {\n $scope.$apply(function () {\n angular.element('iframe', $scope.el)[0].src = reader.result;\n });\n });\n reader.readAsDataURL(params.file);\n });\n })\n .error(function (_error) {\n $scope.$apply(function () {\n $scope.pdfUpload.active = false;\n });\n });\n },\n deletePdf: function () {\n $scope.model.document = { data: null };\n },\n handleDragLeave: function (_$event) {\n $timeout(function () {\n $scope.dragover = false;\n });\n },\n handleDragOver: function (_$event) {\n $timeout(function () {\n $scope.dragover = true;\n });\n },\n displayExistingPdf: function () {\n if (\n ($scope.version !== 3 && $scope.model.document) ||\n ($scope.version === 3 && $scope.model && $scope.model.document && $scope.model.document.data)\n ) {\n var url =\n $scope.model.document.url ||\n ($scope.model.document.attributes && $scope.model.document.attributes.url) ||\n ($scope.model.document.data &&\n $scope.model.document.data.attributes &&\n $scope.model.document.data.attributes.url);\n angular.element('iframe', $scope.el)[0].src = $filter('trustedAsResourceUrl')(url);\n }\n },\n });\n },\n ],\n link: function ($scope, element, _attrs) {\n $scope.el = element;\n\n element[0].addEventListener('dragleave', $scope.handleDragLeave, false);\n element[0].addEventListener('dragover', $scope.handleDragOver, false);\n\n $scope.displayExistingPdf();\n },\n };\n },\n]);\n","ceregoCommon.directive(\"privacyTypeSelector\", [->\n restrict: \"E\"\n scope:\n module: \"=\"\n\n templateUrl: Packs.iKnowRoutes.v2_template_path(\"privacy_type_selector\")\n\n controller: ['$scope', 'DebugHelper', 'myPartnersService', 'UserManager', ($scope, DebugHelper, myPartnersService, UserManager) ->\n DebugHelper.register(\"privacyTypeSelector\", $scope)\n\n _.assignIn $scope,\n setPrivacy: (privacy) ->\n switch privacy\n when \"Public\"\n $scope.requireCaptcha = true\n return\n when \"Private\"\n privacy_type_id = 1\n when \"Course Only\"\n privacy_type_id = 4\n $scope.module.privacy_type =\n id: privacy_type_id\n name: privacy\n\n shouldShowCantGoPublicMessage: ->\n $scope.module.module_type == 'set' && $scope.module.memories_count < 5 && ($scope.module.permissions && $scope.module.permissions.public_toggleable)\n\n cantGoPublic: ->\n (UserManager.currentUser?.attributes?[\"profile-overrides\"]?[\"public-user-content-disabled\"]) ||\n ($scope.module.module_type == 'set' && ($scope.module.studiable_memories_count < 5 || ($scope.module.permissions && !$scope.module.permissions.public_toggleable)))\n\n onCaptchaSuccess: (response) ->\n $scope.requireCaptcha = false\n $scope.module.privacy_type =\n id: 3\n name: \"Public\"\n\n myPartnersService.initialize().then () ->\n $scope.canSetGroup = myPartnersService.currentProductPartner?.meta?[\"can-manage-content\"]\n ]\n\n link: ($scope, element, attrs) ->\n element.addClass(\"radio-toggle--container\")\n])\n","ceregoCommon.directive('scormUploader', ['V3MediaUploader', (V3MediaUploader) ->\n restrict: \"E\"\n scope:\n model: \"=\"\n version: \"=\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"scorm_uploader\")\n\n controller: ['$scope', 'DebugHelper', 'UploaderService', '$filter', '$timeout', 'ScormPackagesResource', ($scope, DebugHelper, UploaderService, $filter, $timeout, ScormPackagesResource) ->\n DebugHelper.register(\"scormUploaderScope\", $scope)\n\n UploaderService.scormUploader = $scope\n\n _.assignIn $scope,\n importJobStatus: {\n SUCCESS: \"COMPLETE\",\n IN_PROGRESS: \"RUNNING\",\n ERROR: \"ERROR\"\n }\n\n uiState: {}\n\n getFileName: (file) ->\n extension_index = file.name.lastIndexOf('.')\n if extension_index != -1\n return file.name.slice(0, extension_index)\n else\n return file.name\n\n onScormUploadProgress: (progress) ->\n $scope.$apply ->\n $scope.uiState.uploadPercentage = Math.round(100 * progress.loaded / progress.total)\n\n uploadScorm: ($file) ->\n if $file.type != \"application/zip\" && $file.type != \"application/x-zip-compressed\"\n $scope.dragover = false\n $scope.uiState.uploadError = true\n return\n else\n $scope.uiState.uploadError = false\n $scope.uiState.uploadInProgress = true\n $timeout ->\n $scope.fileName = $scope.getFileName($file)\n $scope.file = $file\n params = {file: $file}\n V3MediaUploader(params, \"scorm_zip\", $scope.onScormUploadProgress)\n # logic of uploading\n .then (response) ->\n $scope.scormPackage = response.data.data\n $scope.checkImportJobUntilComplete($scope.scormPackage.id)\n UploaderService.scormUploader.scorm_package_id = $scope.scormPackage.id # do I still need this\n .finally (result) ->\n $scope.uiState.uploadInProgress = false\n .catch (error) ->\n # Error on our side posting to AWS\n $scope.uiState.uploadError = true\n DebugHelper.logError(error, 'Error trying to upload file to AWS from SCORM uploader')\n\n checkImportJobUntilComplete: (package_id) ->\n ScormPackagesResource.check_import_job\n id: package_id\n , (success) ->\n switch success.response.status\n when $scope.importJobStatus.SUCCESS\n $scope.uiState.uploadInProgress = false\n $scope.uiState.uploadCompleted = true\n when $scope.importJobStatus.IN_PROGRESS\n $timeout($scope.checkImportJobUntilComplete($scope.scormPackage.id), 5000) # TODO exponential backoff\n when $scope.importJobStatus.ERROR\n # Successfully uploaded to AWS and asked API to check import, but error in SCORM engine import\n $scope.uiState.uploadInProgress = false\n $scope.uiState.uploadError = true # TODO different error messages\n else\n DebugHelper.logError('Unexpected response ' + success.response.status + ' from SCORM engine import job check ')\n , (error) ->\n #something unexpected wrong with request to our API\n $scope.uiState.uploadInProgress = false\n $scope.uiState.uploadError = true\n DebugHelper.logError(error, 'Error trying to check import job for SCORM package ' + $scope.scormPackage['id'])\n\n\n handleDragLeave: ($event) ->\n $timeout ->\n $scope.dragover = false\n\n handleDragOver: ($event) ->\n $timeout ->\n $scope.dragover = true\n\n hideError: () ->\n $scope.uiState.uploadError = false\n\n reset: ->\n $scope.file = {}\n $scope.fileName = \"\"\n $scope.uiState = {}\n ]\n\n link: ($scope, element, attrs) ->\n $scope.el = element\n\n element[0].addEventListener('dragleave', $scope.handleDragLeave, false)\n element[0].addEventListener('dragover', $scope.handleDragOver, false)\n\n])\n","ceregoCommon.directive(\"cgSearchText\", [->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.sets_v2_templates_path(\"module_search\")\n transclude: true\n scope:\n callback: '@'\n searchText: '='\n\n controller: ['$scope', '$timeout', 'DebugHelper', ($scope, $timeout, DebugHelper) ->\n DebugHelper.register(\"cgSearchText\", $scope)\n\n _.assignIn $scope, {\n callCallBack: ->\n $timeout ->\n $scope.$parent.$eval($scope.callback)\n }\n ]\n])\n","ceregoCommon.directive(\"searchableList\", [->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"searchable_list\")\n\n scope:\n serviceOptions: \"=?\"\n service: \"=?\"\n searchHeading: \"@?\"\n cardHeading: \"@?\"\n placeholderText: \"=?\"\n onLoad: \"&?\" # Must return the active tab which will be set after the function resolves\n tabs: \"=?\"\n tabShortcuts: \"=?\"\n hideSearch: \"=?\"\n editableTileFunctions: \"=?\"\n selectable: \"=?\"\n allowSelectEverything: \"=?\"\n selectEverythingTranslateSlug: \"=?\"\n isLti: \"=?\"\n resourceTemplate: \"=?\"\n tileTemplate: \"=?\"\n allowTileListSwitcher: \"=?\"\n resourceAction: \"=?\"\n emptyTemplate: \"=?\"\n loadingTemplate: \"=?\"\n forbiddenTemplate: \"=?\"\n customOrderings: \"=?\"\n resourceActions: \"=?\"\n resourceUrl: \"&?\"\n showModal: \"=\" # TODO is there a better way to make showModal available inside searchableList?\n styles: \"=?\"\n\n controller: ['$scope', '$q', '$filter', '$timeout', '$location', '$document', '$window', 'DebugHelper', 'paginationService', 'myPartnersService', 'localStorageService', 'UserManager', 'CourseContextService', 'SiteNavigationService', 'reactNavigationService', ($scope, $q, $filter, $timeout, $location, $document, $window, DebugHelper, paginationService, myPartnersService, localStorageService, UserManager, CourseContextService, SiteNavigationService, reactNavigationService) ->\n DebugHelper.register(\"searchableList\", $scope)\n\n _.assignIn $scope,\n # only gets used if a sort is specified as draggable\n # may want to pass the type of sort to the resource to generalize,\n # but not an issue yet\n sortableOptions:\n cursor: \"move\"\n forcePlaceholderSize: true\n placeholder: \"item-card-drag-placeholder\"\n 'ui-floating': false\n axis: 'y'\n stop: (e, ui) ->\n $scope.handleDropEvent(e, ui)\n\n # saved state for sort on each tab, used for inner searches with multiple tabs\n # load saved sort state (sort column + direction) when we switch tabs\n sortStates: {}\n\n searchOptions:\n query: \"\"\n sort: {}\n\n defaultOptions:\n 'page[number]': 1\n sort: \"name\"\n query: \"\"\n\n routes: Packs.iKnowRoutes\n\n defaultResourceImage: $scope.service.defaultResourceImage\n\n CourseContextService: CourseContextService\n SiteNavigationService: SiteNavigationService\n\n stateUI: {\n loading: true\n showResourceDropdown: {}\n direction: 'desc'\n forbidden: false\n }\n\n orderings: [\n name: 'js.filters.name'\n direction:\n desc: \"name\"\n asc: \"-name\"\n default_direction: \"desc\"\n ]\n\n handleDropEvent: (e, ui) ->\n if !_.isUndefined(ui.item.sortable.dropindex) #undefined if left in place\n position_delta = ui.item.sortable.dropindex - ui.item.sortable.index\n if $scope.stateUI.direction == \"asc\"\n position_delta = position_delta * -1\n resource = ui.item.scope().resource\n $scope.stateUI.loading = true\n $scope.service.updateResources(resource, position_delta, $scope.activeTab.slug).then ->\n $scope.stateUI.loading = false # do we need to do anything else?\n\n toggleSelected: (resource, $event) ->\n $scope.service.everythingSelected = false\n resource.selected = !resource.selected\n\n $scope.allSelected = _.every($scope.service.resources[$scope.activeTab.slug].data, { selected: true })\n $scope.anySelected = !_.isEmpty(_.filter($scope.service.resources[$scope.activeTab.slug].data, { selected: true }))\n $event.preventDefault()\n $event.stopPropagation()\n\n toggleAllSelected: () ->\n $scope.service.everythingSelected = false\n resources = $scope.service.resources[$scope.activeTab.slug].data\n if $scope.anySelected && !$scope.allSelected\n $scope.anySelected = false\n _.map(resources, (resource) ->\n resource.selected = false\n )\n else\n $scope.allSelected = !$scope.allSelected\n $scope.anySelected = $scope.allSelected\n _.map(resources, (resource) ->\n resource.selected = $scope.allSelected\n )\n\n toggleEverythingSelected: () ->\n $scope.service.everythingSelected = !$scope.service.everythingSelected\n\n toggleResourceDropdown: ($event, resourceId) ->\n $event.preventDefault()\n $event.stopPropagation()\n newState = !$scope.stateUI.showResourceDropdown[resourceId]\n $scope.stateUI.showResourceDropdown = {}\n $scope.stateUI.showResourceDropdown[resourceId] = newState\n\n clearSelections: () ->\n for resource in $scope.service.resources[$scope.activeTab?.slug]?.data\n resource.selected = false\n $scope.service.everythingSelected = false\n $scope.allSelected = false\n $scope.anySelected = false\n\n setActiveTab: (slug) ->\n $scope.clearSelections()\n oldTabSlug = $scope.activeTab.slug\n $scope.activeTab = _.find($scope.tabs, slug: slug)\n $scope.service.activeTab = slug\n if $scope.useSavedSortStates\n $scope.applyCustomOrderings()\n\n # save the sort + desc/asc state on current slug\n # load the saved sort state on new slug\n $scope.sortStates[oldTabSlug] = {\n direction: $scope.stateUI.direction\n sort: $scope.searchOptions.sort\n }\n if $scope.sortStates[slug]\n $scope.stateUI.direction = $scope.sortStates[slug].direction\n $scope.searchOptions.sort = $scope.sortStates[slug].sort\n else\n $scope.searchOptions.sort = {}\n $scope.resetSort()\n\n populateMissingOptions: (options)->\n options = _.defaults(options, $scope.serviceOptions)\n if !options.query && $scope.searchOptions.query != \"\"\n options.query = $scope.searchOptions.query\n if !options.sort && $scope.searchOptions.sort.direction[$scope.stateUI.direction]\n options.sort = $scope.searchOptions.sort.direction[$scope.stateUI.direction]\n options = _.defaults(options, $scope.defaultOptions)\n\n if options.sort && $scope.searchOptions.sort.disabled\n options['sort'] = \"\" # dont override 'relevance' sort\n\n options\n\n getPageForTab: (options) ->\n $scope.allSelected = false\n $scope.anySelected = false\n $scope.service.everythingSelected = false\n unless $scope.useSavedSortStates\n options = $scope.populateMissingOptions(options)\n\n $scope.service.getPaginatedResults(options).then (resources) ->\n for resource in resources.data\n resource.selected = false\n $scope.service.resources[options.tab] = resources\n currentPage = options['page[number]']\n totalPages = resources.meta?['total-pages']\n $scope.service.resources[options.tab].currentPage = currentPage\n # calculate the first index by calculating how many items we've skipped over\n skippedItems = $scope.defaultOptions['page[size]'] * (currentPage - 1)\n $scope.service.resources[options.tab].firstIndex = skippedItems + 1\n $scope.service.resources[options.tab].lastIndex = skippedItems + resources.data.length\n\n if options.tab == $scope.activeTab.slug\n $scope.activeTab.empty ||= $scope.emptyTemplate\n\n $scope.service.resources[options.tab].pages = paginationService.getClassAndPage(currentPage, totalPages)\n\n _.find($scope.tabs, slug: options.tab).isEmpty = $scope.service.resources[options.tab].data.length == 0\n , (error) ->\n if error.status == 403 # Currently only used for course users who need to pay\n $scope.hideSearch = true\n $scope.stateUI.forbidden = true\n\n setOrderingAndSearch: (order) ->\n $scope.setOrdering(order)\n $scope.searchResources()\n\n setOrdering: (order) ->\n $scope.searchOptions.sort = order\n $scope.stateUI.direction = order?.default_direction || \"desc\"\n $scope.stateUI.draggable = order?.draggable\n $scope.sortableOptions.disabled = !order?.draggable\n\n toggleSortDirection: ($event) ->\n $event.preventDefault()\n $scope.stateUI.direction = if $scope.stateUI.direction == 'asc' then 'desc' else 'asc'\n # on an inner search card, dont re-search all the other tabs on toggle sort\n $scope.searchResources()\n\n toggleMenu: () ->\n document.getElementById(\"sort-by-dropdown\").classList.toggle(\"hover\")\n\n searchResources: (options = {}) ->\n $scope.stateUI.loading = true\n # search one tab if we are only sorting + the sorts are different for each tab\n # (except for query search, which searches everything)\n if $scope.useSavedSortStates && !$scope.searchOptions.query && !options.initializing\n tabsToSearch = [$scope.activeTab]\n # on initialize, search all tabs\n else\n tabsToSearch = $scope.tabs\n tabPromises = _.map tabsToSearch, (tab) ->\n\n # saved sort states only searches all three tabs on initialize\n # use sort nil on savedSortStates -- paginated service should determine default sort\n unless options.initializing && ($scope.useSavedSortStates || $scope.service.defaultOptions?.sort)\n sort = $scope.searchOptions.sort.direction[$scope.stateUI.direction]\n serviceOptions =\n tab: tab.slug\n sort: sort\n query: $scope.searchOptions.query\n $scope.getPageForTab(serviceOptions)\n\n $q.allSettled(tabPromises).then (responses) ->\n $scope.stateUI.loading = false\n if $scope.onLoad\n activeTab = $scope.onLoad(searchQuery:$scope.searchOptions.query)\n $scope.setActiveTab(activeTab.slug)\n\n # applies available orderings for UI\n applyCustomOrderings: ->\n if $scope.customOrderings\n # some orderings only show for certain tabs\n $scope.orderings = _.reject($scope.customOrderings, (customOrdering) ->\n # if a custom ordering has only_for_tab defined, exclude it if it doesnt match current tab\n (customOrdering.only_for_tab && customOrdering.only_for_tab != $scope.activeTab.slug)\n )\n\n hideResourceDropdown: ->\n $scope.$apply ->\n $scope.stateUI.showResourceDropdown = {}\n\n hideLtiCtas: -> #I hate myself\n if $scope.isLti\n for tab in $scope.tabs\n for cta in tab.ctas\n if cta.noLti\n cta.styling = cta.styling + \" ng-hide\"\n\n dropDownResourceAction: ($event, func, options) ->\n $event.preventDefault()\n $event.stopPropagation()\n func(options)\n\n setCurrentViewMode: (viewMode) ->\n localStorageService.set('searchableListTileOrListView', viewMode)\n $scope.stateUI.currentViewMode = viewMode\n\n resetSort: () ->\n if _.isEmpty($scope.searchOptions.query)\n ordering = $scope.orderings[0]\n else\n ordering = {\n name: \"js.filters.relevance\"\n direction:\n desc: \"\"\n asc: \"\"\n disabled: true\n }\n $scope.setOrdering(ordering)\n\n resetSortAndSearchResources: () ->\n $scope.resetSort()\n $scope.searchResources()\n\n # Partner people controller specific\n goToUserProfile: (userId) ->\n partner = myPartnersService.currentProductPartner\n isV4 = partner.attributes?['partner-settings']?['learn-version'] == 4\n if isV4\n reactNavigationService.navigateToUserProfile(userId)\n else\n $window.location = \"/partners/#{partner.id}/users/#{userId}\"\n\n courseRowClick: (courseId) ->\n $location.path Packs.iKnowRoutes.v3_learn_course_path(courseId);\n\n $scope.debouncedSearchResources = _.debounce($scope.resetSortAndSearchResources, 200)\n\n # 3 view modes on searchable list -- assignment tiles, large tiles, and list view\n if $scope.tileTemplate && $scope.resourceTemplate\n $scope.pageSize = 6\n # default to listView (not tileView)\n $scope.stateUI.currentViewMode = localStorageService.get('searchableListTileOrListView') || \"listView\"\n else if $scope.styles?.assignmentTileable\n $scope.pageSize = 12\n $scope.stateUI.currentViewMode = \"assignmentTileView\"\n else if $scope.styles?.courseTileable\n $scope.pageSize = 12\n $scope.stateUI.currentViewMode = \"courseTileView\"\n # list view is default template\n else\n $scope.pageSize = 15\n $scope.stateUI.currentViewMode = \"listView\"\n $scope.defaultOptions['page[size]'] = $scope.pageSize\n\n $scope.$on \"searchableList:clearSelections\", () ->\n $scope.clearSelections()\n\n $scope.$on \"searchableList:markDirty\", () ->\n $scope.clearSelections()\n $scope.stateUI.loading = true\n\n $scope.$on \"searchableList:reloadResources\", () ->\n $scope.clearSelections()\n $scope.stateUI.loading = true\n $timeout($scope.searchResources, 1000)\n\n $scope.$on \"searchableList:setActiveTab\", (event, params) ->\n $scope.setActiveTab(params.tab)\n\n angular.element(\"body\").on \"click\", $scope.hideResourceDropdown\n\n $scope.$on '$destroy', ->\n angular.element(\"body\").off \"click\", $scope.hideResourceDropdown\n\n $scope.activeTab ||= $scope.tabs[0]\n $scope.hideLtiCtas()\n\n # some searchable lists have sorts that apply to all tabs\n # but this allows us to save sort state *between* each tab\n $scope.useSavedSortStates = $scope.styles?.showSearchInsideList && $scope.tabs.length > 1\n\n $scope.applyCustomOrderings()\n $scope.resetSort()\n $scope.searchResources(initializing: true)\n ]\n\n])\n","ceregoCommon.directive('soundUploader', ['MediaUploader', 'V3MediaUploader', 'MediaProcessorService', (MediaUploader, V3MediaUploader, MediaProcessorService) ->\n restrict: \"E\"\n scope:\n model: \"=\"\n version: \"=\"\n\n templateUrl: (element, $scope) ->\n if $scope.version == \"3\" then Packs.iKnowRoutes.common_v3_templates_path(\"sound_uploader\") else Packs.iKnowRoutes.v2_template_path(\"sound_uploader\")\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"soundUploaderScope\", $scope)\n\n $scope.$parent.soundUploaders = $scope.$parent.soundUploaders || []\n $scope.$parent.soundUploaders.push $scope\n\n _.assignIn $scope,\n file: null\n tabs: []\n stateUI:\n mode: \"default\"\n recording: false\n uploadStatus:\n complete: 0\n total: 1\n percentage: 0\n active: false\n\n setTabs: () ->\n $scope.tabs = [\n {\n slug: \"default\",\n name: \"js.common.sound_uploader.tabs.default\"\n }\n ]\n\n # Compatible browsers only include Chromium-based, Firefox, and Safari\n if MediaProcessorService.compatibleBrowser() then $scope.tabs.push({\n slug: \"record\",\n name: \"js.common.sound_uploader.tabs.record\"\n })\n \n showTab: (tab) ->\n $scope.stateUI.mode = tab.slug\n\n onUploadProgress: (progress) ->\n $scope.uploadStatus.total = progress.total\n $scope.uploadStatus.complete = progress.loaded\n $scope.uploadStatus.percentage = Math.ceil((progress.loaded / progress.total) * 100)\n $scope.$emit \"soundUploader:uploadProgress\", $scope.uploadStatus\n\n attachMedia: (file) ->\n $scope.file = file\n fileURL = URL.createObjectURL(file)\n $scope.$apply ->\n $scope.model.data = \n id: 1\n attributes:\n url: fileURL\n\n uploadMedia: () ->\n if !$scope.file\n return\n $scope.uploadStatus.active = true\n params = file: $scope.file\n\n if $scope.version == 3\n $scope.V3SoundUpload(params)\n else\n $scope.V2SoundUpload(params)\n\n V3SoundUpload: (params) ->\n $scope.model.data = null # init model data\n V3MediaUploader(params, \"sound\", $scope.onUploadProgress)\n .then (response) ->\n $scope.model.data = response.data.data\n $scope.$emit 'soundUploader:uploadComplete', response.data.data\n .catch (error) ->\n $scope.stateUI.error = error.data.errors[0].title\n .finally (result) ->\n $scope.uploadStatus.active = false\n\n # TODO: Remove me eventually when v2 is dead\n V2SoundUpload: (params) ->\n MediaUploader({ file: params }, \"sound\", $scope.onUploadProgress)\n .success (json) ->\n $scope.$apply ->\n $scope.model.sound = json.response.sound\n $scope.uploadStatus.active = false\n $scope.$emit 'soundUploader:uploadComplete', response.data.data\n .error (error) ->\n $scope.stateUI.error = error.data.errors[0].title\n $scope.$apply ->\n $scope.uploadStatus.active = false\n\n deleteSound: ($event) ->\n if $scope.version == 3\n $scope.model.data = null\n else\n $scope.model.sound = null\n $event.preventDefault()\n\n toggleRecording: ->\n $control = $('button.record-media');\n if !$scope.stateUI.recording\n $scope.stateUI.recording = true\n MediaProcessorService.initRecording('audio')\n $control.addClass('Recording')\n else\n $scope.stateUI.recording = false\n MediaProcessorService.endRecording()\n $control.removeClass('Recording')\n\n return false;\n\n showRecording: ({ file, blob, url }) ->\n $('#mediaPreview').removeClass('Hide')\n .attr('src', url)\n $scope.attachMedia(file);\n\n MediaProcessorService.setCallback($scope.showRecording)\n\n $scope.$on 'soundUploaderModal:uploadMedia', $scope.uploadMedia\n\n $scope.setTabs()\n ]\n])\n","ceregoCommon.directive('statsCountdown', [->\n restrict: \"E\"\n\n templateUrl: Packs.iKnowRoutes.v2_template_path(\"stats_countdown\")\n scope:\n seeNext: \"=?\"\n\n controller: ['$scope', '$interval', 'DebugHelper', 'ContentMemoryManager', 'UserManager', 'MemoryStorage', ($scope, $interval, DebugHelper, ContentMemoryManager, UserManager, MemoryStorage) ->\n DebugHelper.register(\"statsCountdown\", $scope)\n\n COUNTDOWN_TIMER_DELAY_MSEC = 500\n\n _.assignIn $scope, {\n hiddenStaticString: null\n\n countdownTimerDelay: ->\n COUNTDOWN_TIMER_DELAY_MSEC\n\n tick: ->\n if !$scope.seeNextAt\n console.error \"Expected $scope.seeNextAt to be set by home or summary controller; instead undefined\"\n else\n msec = _.max([0, $scope.seeNextAt - (new Date())])\n seconds = Math.floor(msec / 1000)\n minutes = Math.floor(seconds / 60)\n hours = Math.floor(minutes / 60)\n days = Math.floor(hours / 24).toString()\n\n $scope.counter = $scope.counter || {}\n $scope.counter.seconds = ('0' + (seconds % 60)).slice(-2)\n $scope.counter.minutes = ('0' + (minutes % 60)).slice(-2)\n $scope.counter.hours = ('0' + (hours % 24)).slice(-2)\n $scope.counter.days = ('0' + days).slice(_.min([-2, 0 - days.length]))\n $scope.counter.intSeconds = parseInt($scope.counter.seconds)\n $scope.counter.intMinutes = parseInt($scope.counter.minutes)\n $scope.counter.intHours = parseInt($scope.counter.hours)\n $scope.counter.intDays = parseInt($scope.counter.days)\n\n if _.isNull($scope.hiddenStaticString)\n $scope.hiddenStaticString = $scope.staticStringCoundown()\n\n seconds: ->\n if $scope.counter\n $scope.counter.seconds\n else '00'\n\n minutes: ->\n if $scope.counter\n $scope.counter.minutes\n else '00'\n\n hours: ->\n if $scope.counter\n $scope.counter.hours\n else '00'\n\n\n days: ->\n if $scope.counter\n $scope.counter.days\n else '00'\n\n counterLessThanDay: ->\n $scope.counter && $scope.counter.days == '00'\n\n staticStringCoundown: ->\n return unless $scope.counter\n string = \"Your next review is in \"\n if ($scope.counter.intDays || $scope.counter.intHours || $scope.counter.intMinutes || $scope.counter.intSeconds)\n if $scope.counter.intDays > 0\n string = string + $scope.counter.intDays + \" days \"\n if $scope.counter.intHours > 0\n string = string + $scope.counter.intHours + \" hours \"\n if $scope.counter.intMinutes > 0\n string = string + $scope.counter.intMinutes + \" minutes \"\n if $scope.counter.intSeconds > 0\n string = string + $scope.counter.intSeconds + \" seconds \"\n else\n \"Your next review is now\"\n }\n\n if $scope.seeNext\n $scope.seeNextAt = new Date($scope.seeNext)\n $scope.interval = $interval $scope.tick, $scope.countdownTimerDelay()\n else\n UserManager.loadUser().then (user) ->\n ContentMemoryManager.load().then (response) ->\n memoryAggregate = response.memories[0]\n $scope.seeNextAt = new Date(memoryAggregate.see_next_at)\n $scope.interval = $interval $scope.tick, $scope.countdownTimerDelay()\n\n $scope.$on \"$destroy\", ->\n $interval.cancel($scope.interval)\n ]\n])\n","ceregoCommon.directive('cgTranscodeBackgroundImage', ['$filter', '$window', ($filter, $window) ->\n ($scope, element, attrs) ->\n $scope.$watch attrs['cgTranscodeBackgroundImage'], (image) ->\n dimensions = attrs.cgSize?.split('x').map((size) -> (parseInt(size, 10)))\n size = if dimensions then Math.max(dimensions[0], dimensions[1]) else 800\n image_url = $window.getTranscodedURL(image, size) || attrs.cgDefaultImage\n return if !image_url\n\n element.css \"background-image\", \"url(\" + image_url + \")\"\n])\n","ceregoCommon.directive(\"v3Modal\", ['$compile', '$timeout', '$rootScope', 'LtiService', ($compile, $timeout, $rootScope, LtiService) ->\n restrict: \"E\"\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"v3_modal\")\n\n scope:\n modalName: \"@?\"\n modalOptions: \"=?\"\n\n controller: ['$scope', 'ModalService', 'DebugHelper', 'LtiService', ($scope, ModalService, DebugHelper, LtiService) ->\n DebugHelper.register(\"V3Modal\", $scope)\n\n _.assignIn $scope,\n LtiService: LtiService\n uiState: {}\n\n modalTypes:\n 'transparent':\n class: 'v3-transparent-layout'\n 'default':\n class: 'v3-body-layout'\n\n closeModal: () ->\n if ModalService.modalOptions?.length > 0\n options = ModalService.modalOptions.pop()\n if options.closeCallback\n options.closeCallback()\n ModalService.cleanupModal()\n $scope.$destroy()\n $scope.element.remove()\n $scope.focusedElementBeforeOpen.focus() if $scope.focusedElementBeforeOpen && $scope.focusedElementBeforeOpen.focus\n false\n\n isDefault: ->\n $scope.modalOptions?.modalType == 'default' || !$scope.modalOptions?.modalType # If no modal type then use the default modal\n\n isTransparent: ->\n $scope.modalOptions?.modalType == 'transparent'\n\n focusableElementList: () ->\n $scope.element.find('input:not([disabled]), a[href], area[href], select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]')\n\n handleBackwardTab: (e) ->\n if $scope.tabableElements && (document.activeElement == $scope.tabableElements.first()[0])\n $scope.tabableElements.last()[0].focus()\n event.preventDefault(e)\n\n handleForwardTab: (e) ->\n if $scope.tabableElements && (document.activeElement == $scope.tabableElements.last()[0])\n $scope.tabableElements.first()[0].focus()\n event.preventDefault(e)\n\n handleTabbing: (event) ->\n $scope.tabableElements = $scope.focusableElementList()\n if event.shiftKey\n $scope.handleBackwardTab(event)\n else\n $scope.handleForwardTab(event)\n\n $timeout () ->\n $scope.element.focus()\n\n $scope.modalTemplatePath = Packs.iKnowRoutes.common_v3_templates_path(_.snakeCase($scope.modalName))\n\n $scope.$on \"preventDismissModal\", (e, flag) ->\n $scope.preventDismissModal = flag\n\n $scope.$on \"allowRouteChangeFromModal\", (e, flag) ->\n $scope.allowRouteChangeFromModal = flag\n\n globalListener = $rootScope.$on '$routeChangeStart', ($event, current, previous) ->\n if !$scope.preventDismissModal\n $scope.closeModal()\n if !$scope.allowRouteChangeFromModal\n $event.preventDefault()\n\n $scope.$on \"$destroy\", ->\n globalListener()\n ]\n\n link: ($scope, element, attrs) ->\n $scope.uiState.isBBC = LtiService.isBBC\n $scope.element = element\n $scope.focusedElementBeforeOpen = document.activeElement\n\n dialogDescription = $scope.modalOptions?.description || \"\"\n $scope.element.attr(\"tabindex\", \"0\").attr(\"role\",\"dialog\").attr(\"aria-label\", \"Dialog opened.\" + dialogDescription)\n\n # Gotta timeout so template is loaded before controller\n $timeout () ->\n el = element.find(\".layout-container\").\n attr(\"ng-include\", \"modalTemplatePath\")\n\n unless $scope.modalOptions?.excludeController\n el.attr(\"ng-controller\", _.camelCase($scope.modalName))\n\n $compile(el)($scope)\n\n modalClass = $scope.modalTypes[$scope.modalOptions?.modalType || 'default'].class\n element.addClass(modalClass)\n\n angular.element(\"body\").keydown (e) ->\n # escape key\n if e.keyCode == 27 && !$scope.modalOptions?.noCloseButton\n $scope.closeModal()\n else if e.keyCode == 9\n $scope.handleTabbing(e)\n\n])\n","ceregoCommon.directive('videoUploader', ['MediaUploader', 'V3MediaUploader', 'MediaProcessorService', (MediaUploader, V3MediaUploader, MediaProcessorService) ->\n restrict: \"E\"\n scope:\n model: \"=\"\n\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path(\"video_uploader\")\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"videoUploaderScope\", $scope)\n\n $scope.$parent.videoUploaders = $scope.$parent.videoUploaders || []\n $scope.$parent.videoUploaders.push $scope\n\n _.assignIn $scope,\n file: null\n tabs: []\n stateUI:\n mode: 'default'\n recording: false\n uploadStatus:\n complete: 0\n total: 1\n percentage: 0\n active: false\n\n setTabs: () ->\n $scope.tabs = [\n {\n slug: \"default\",\n name: \"js.common.video_uploader.upload_a_video\"\n }\n ]\n\n return if _.includes(process.env.RAILS_ENV, 'govcloud')\n # Compatible browsers only; uncomment when pipeline is complete\n if MediaProcessorService.compatibleBrowser() then $scope.tabs.push({\n slug: \"record\",\n name: \"js.common.sound_uploader.tabs.record\"\n })\n\n showTab: (tab) ->\n $scope.stateUI.mode = tab.slug\n\n onUploadProgress: (progress) ->\n $scope.uploadStatus.total = progress.total\n $scope.uploadStatus.complete = progress.loaded\n $scope.uploadStatus.percentage = Math.ceil((progress.loaded / progress.total) * 100)\n $scope.$emit \"videoUploader:uploadProgress\", $scope.uploadStatus\n \n attachMedia: (file) ->\n $scope.file = file\n fileURL = URL.createObjectURL(file)\n $scope.$apply ->\n $scope.model.data = \n id: 1\n attributes:\n url: fileURL\n\n uploadMedia: () ->\n if !$scope.file\n return\n $scope.uploadStatus.active = true\n params = file: $scope.file\n\n V3MediaUploader(params, \"video\", $scope.onUploadProgress)\n .then (response) ->\n $scope.model.data = response.data.data\n $scope.$emit 'videoUploader:uploadComplete', response.data.data\n .catch (error) ->\n $scope.stateUI.error = error.data.errors.title\n .finally (result) ->\n $scope.uploadStatus.active = false\n\n toggleRecording: ->\n control = $('button.record-media')\n $player = $('#mediaPreview')\n\n if !$scope.stateUI.recording\n $scope.stateUI.recording = true\n MediaProcessorService.initRecording('video', $player[0])\n control.addClass('Recording')\n $player.removeClass('Hide')\n $player[0].controls = null\n else\n $scope.stateUI.recording = false\n MediaProcessorService.endRecording()\n control.removeClass('Recording')\n $player[0].controls = 'controls'\n\n return false;\n\n deleteVideo: ($event) ->\n $scope.model.data = null\n $event.preventDefault()\n\n showRecording: ({ url, blob, file }) ->\n $('#mediaPreview').attr('src', url)\n $scope.attachMedia(file)\n\n MediaProcessorService.setCallback($scope.showRecording)\n \n $scope.$on 'videoUploaderModal:uploadMedia', $scope.uploadMedia\n \n $scope.setTabs()\n ]\n])\n","declare var amplitude: any;\n\nangular.module('cerego.common').directive('stripeLauncher', [\n () => ({\n restrict: 'E',\n scope: {\n course: '=',\n user: '=',\n imageUrl: '=',\n planId: '=',\n type: '='\n },\n templateUrl: Packs.iKnowRoutes.common_v3_templates_path('stripe_launcher'),\n\n controller: [\n '$scope',\n '$filter',\n '$window',\n 'DebugHelper',\n 'StripeService',\n 'UserManager',\n 'PartnerAccountResource',\n 'AmplitudeService',\n ($scope, $filter, $window, DebugHelper, StripeService, UserManager, PartnerAccountResource, AmplitudeService) => {\n DebugHelper.register('stripeLauncher', $scope);\n\n return _.assignIn($scope, {\n $onInit() {\n return UserManager.loadUser().then(user => {\n $scope.user = user;\n\n return ($scope.stripeHandler = () => {\n AmplitudeService.logEvent($scope.type + '_stripe_click');\n const stripeOptions = {\n email: $scope.user.attributes.email,\n panelLabel: $filter('translate')('js.common.payportal.pay'),\n name: $filter('translate')('js.common.payportal.pay_by_credit_card'),\n amount: 200000\n };\n return StripeService.configureHandler(stripeOptions).then(token => {\n const params = {\n token: token.id,\n plan_id: $scope.planId\n };\n\n return PartnerAccountResource.create(\n { partner_id: $scope.user.relationships['pro-partner'].data.id },\n params,\n success => $window.location.reload()\n );\n });\n });\n });\n }\n });\n }\n ]\n })\n]);\n","var map = {\n\t\"./add-to-series-modal.js\": 603,\n\t\"./confirm-email-modal.js\": 604,\n\t\"./create-scorm-modal.js\": 605,\n\t\"./good-for-now-modal.js\": 606,\n\t\"./share-link-modal.js\": 607,\n\t\"./timeout-warning-modal.js\": 608\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 = 602;","/*\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.controller('addToSeriesModal', ['$scope', 'DebugHelper', 'myPartnersService', 'MySeriesResource', 'PartnersResource', function($scope, DebugHelper, myPartnersService, MySeriesResource, PartnersResource) {\n DebugHelper.register(\"addToSeriesModal\", $scope);\n\n _.assignIn($scope, {\n seriesName: \"\",\n routes: Packs.iKnowRoutes,\n\n fetchMySeries() {\n return myPartnersService.initialize().then(function() {\n $scope.partner = myPartnersService.currentProductPartner;\n if ($scope.partner) {\n return PartnersResource.series({ partner_id: $scope.partner.id }\n , success => $scope.myseries = success.response.series);\n } else {\n return MySeriesResource.query({ }\n , success => $scope.myseries = success.response.series);\n }\n });\n },\n\n chooseSeries(e, module) {\n e.preventDefault();\n\n const resource = $scope.setAlreadyInSeries(module) ? \"removeSet\" : \"addSet\";\n\n return MySeriesResource[resource]({\n id: module.id,\n set_id: $scope.set.id\n }\n , success => module.sets = success.response.sets);\n },\n\n setAlreadyInSeries(series) {\n return _.indexOf(_.map(series.sets, 'id'), $scope.set.id) > -1;\n },\n\n initialize() {\n $scope.set = $scope.modalOptions.module;\n return $scope.fetchMySeries();\n }\n });\n\n return $scope.initialize();\n}\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.controller(\"confirmEmailModal\", ['$scope', 'DebugHelper', 'UserManager', 'ModalService', 'EmailsResource', function($scope, DebugHelper, UserManager, ModalService, EmailsResource) {\n DebugHelper.register(\"confirmEmailModal\", $scope);\n\n return _.assignIn($scope, {\n UserManager,\n\n manageEmails() {\n $scope.closeModal();\n return ModalService.showModal('user-profile-edit-modal');\n },\n\n confirmEmail() {\n $scope.confirmingEmail = true;\n return EmailsResource.send_confirmation({}\n , function(success) {\n $scope.confirmingEmail = false;\n return $scope.closeModal();\n }\n , function(error) {\n console.error(error);\n return $scope.confirmingEmail = false;\n });\n }\n }\n );\n}\n]);\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS103: Rewrite code to no longer use __guard__, or convert again using --optional-chaining\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md\n */\nceregoCommon.controller(\"createScormModal\", ['$scope', '$location', '$q', '$filter', '$timeout', '$routeParams', 'DebugHelper', 'myPartnersService', 'UploaderService', 'toastHelper', 'V3SetsResource', 'reactNavigationService', 'V3CourseSetsResource', function($scope, $location, $q, $filter, $timeout, $routeParams, DebugHelper, myPartnersService, UploaderService, toastHelper, V3SetsResource, reactNavigationService, V3CourseSetsResource) {\n DebugHelper.register(\"createScormModal\", $scope);\n\n _.assignIn($scope, {\n UploaderService,\n set: {},\n courseId: $routeParams.courseId,\n\n setIsValid() {\n return (($scope.set.name != null ? $scope.set.name.length : undefined) > 0) && UploaderService.scormUploader.uiState.uploadCompleted;\n },\n\n createSet() {\n // move this to success callback after we're actually creating\n const params = {\n name: $scope.set.name,\n description: $scope.set.description,\n scorm_package_id: UploaderService.scormUploader.scorm_package_id,\n icon_image_id: __guard__(__guard__(UploaderService.imageUploader != null ? UploaderService.imageUploader.model : undefined, x1 => x1.data), x => x.id)\n };\n\n if (myPartnersService.currentProductPartner || $routeParams.partnerId) {\n params.partner_id = (myPartnersService.currentProductPartner != null ? myPartnersService.currentProductPartner.id : undefined) || $routeParams.partnerId;\n }\n\n V3SetsResource.create(params\n , function(success) {\n if ($scope.courseId) {\n // create corresponding course_set record\n V3CourseSetsResource.save({\n course_id: $scope.courseId,\n id: success.data.id\n });\n return reactNavigationService.navigateToReactCourseDetailPage($scope.courseId);\n } else {\n return $location.path(Packs.iKnowRoutes.edit_details_v2_create_set_path(success.data.id));\n }\n }\n , error => DebugHelper.logError(error, \"ScormSetCreationError\"));\n\n if (!$scope.courseId) {\n $scope.closeModal();\n return toastHelper.showToast('simpleToast', {message: $filter(\"translate\")(\"js.scorm.confirmation_toast\")});\n }\n },\n\n cancel() {\n if (!$scope.courseId) {\n return $scope.closeModal();\n } else {\n return reactNavigationService.navigateToReactCourseDetailPage($scope.courseId);\n }\n },\n\n hideError() {\n return $scope.UploaderService.scormUploader.hideError();\n }\n }\n );\n\n UploaderService.$watch(\"scormUploader.fileName\", newVal => $scope.set.name || ($scope.set.name = newVal));\n\n return $scope.$on('$destroy', function() {\n UploaderService.scormUploader.reset();\n return $scope.set = {};\n});\n}\n]);\n\nfunction __guard__(value, transform) {\n return (typeof value !== 'undefined' && value !== null) ? transform(value) : undefined;\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.controller(\"goodForNowModal\", ['$scope', 'DebugHelper', ($scope, DebugHelper) => DebugHelper.register(\"goodForNowModal\", $scope)\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.controller('shareLinkModal', ['$window', '$scope', 'DebugHelper', function($window, $scope, DebugHelper) {\n DebugHelper.register(\"shareLinkModal\", $scope);\n\n _.assignIn($scope, {\n updateLink(selectedSize) {\n const learnAppLink = $window.location.origin + ($scope.module.module_type === \"series\" ? Packs.iKnowRoutes.v2_series_learn_path($scope.module.id) : Packs.iKnowRoutes.v2_set_learn_path($scope.module.id));\n return $scope.iframeLink = $(\"
\").append($(\"