{"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","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-1bb6fd69e24c4e71bec0.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 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 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 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($(\"