{"version":3,"sources":["webpack:///./public/javascripts/mathml.js","webpack:///./app/coffeescripts/collections/SyllabusCalendarEventsCollection.coffee","webpack:///./public/javascripts/translations/editor.keyboard_shortcuts.js","webpack:///./public/javascripts/translations/courses.syllabus.js","webpack:///./public/javascripts/calendar_move.js","webpack:///./app/coffeescripts/collections/SyllabusCollection.coffee","webpack:///./app/jsx/bundles/syllabus.js","webpack:///./app/views/jst/courses/Syllabus.handlebars","webpack:///./app/coffeescripts/collections/SyllabusAppointmentGroupsCollection.coffee","webpack:///./app/coffeescripts/views/editor/KeyboardShortcuts.coffee","webpack:///./public/javascripts/dummyI18nResource.js?76b0","webpack:///./app/coffeescripts/views/courses/SyllabusView.coffee","webpack:///./app/views/jst/editor/KeyboardShortcuts.handlebars","webpack:///./app/coffeescripts/behaviors/SyllabusBehaviors.js","webpack:///./public/javascripts/dummyI18nResource.js?4d93"],"names":["loadMathJax","config_file","cb","arguments","length","undefined","isMathJaxLoaded","shouldLoadMathJax","window","MathJax","localConfig","_jquery2","default","getScript","isMathMLOnPage","reloadElement","elem","Hub","Queue","_jquery","__webpack_require__","TeX","extensions","document","documentElement","find","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","bind","fn","me","apply","_","PaginatedCollection","superClass","url","initialize","context_codes","type","this","SyllabusCalendarEventsCollection","__super__","fetch","options","base","remove","call","parse","resp","eventType","normalize","result","ev","overridden","ref","related_id","id","each","assignment_overrides","override","parent_event_id","hidden","push","exports","module","__WEBPACK_IMPORTED_MODULE_1_jquery__","n","a","extend","__WEBPACK_IMPORTED_MODULE_0_i18nObj___default","translations","ar","editor","keyboard_shortcuts","dialog_title","keybindings","close_submenu","navigate_toolbar","open_menubar","open_toolbar","open_this_keyboard_shortcuts_dialog_9658b83a","da","de","en-AU","en-CA","en-GB","en-GB-x-lbs","en-GB-x-ukhe","es","fa","fr","fr-CA","he","ht","hy","is","it","ja","ko","mi","nb","nl","nn","pl","pt","pt-BR","ru","sv","tr","zh-Hans","zh-Hant","courses","syllabus","headers","date","details","hide_specific_dates","show_specific_dates","due_by_c263dc10","to_c4c44f4b","changeMonth","$month","change","data","current","datepicker","oldParseDate","setDate","month","parseInt","text","year","Date","month_name","monthNames","getMonth","month_number","year_number","getFullYear","fillTemplateData","today","makeDate","firstDayOfMonth","getDate","getDay","firstDayOfSquare","lastDayOfPreviousMonth","day","setMonth","lastDayOfMonth","yearh","lastDayOfSquare","$days","hasClass","idx","$day","eq","classes","attr","split","class_names","i","indexOf","join","show","addClass","parents","day_number","$div","children","removeClass","hide","_i18nObj2","lookup","$","Backbone","child","parent","key","hasProp","ctor","constructor","prototype","Collection","SyllabusCollection","collections","collection","len","on","_this","model","add","find_collection_models","j","k","len1","len2","ref1","results","memo","get","reduce","models","comparator","model1","model2","m1end_at","m1start_at","m1title","m2end_at","m2start_at","m2title","toLowerCase","_SyllabusCalendarEventsCollection2","ENV","context_asset_string","current_user_id","_SyllabusAppointmentGroupsCollection2","deferreds","_underscore2","map","deferred","Deferred","error","reject","per_page","SYLLABUS_PER_PAGE","success","canFetch","page","resolve","acollection","_SyllabusCollection2","view","_SyllabusView2","el","can_read","CAN_READ","is_valid_user","when","then","render","_SyllabusBehaviors2","bindToSyllabus","replaceWith","bindToEditSyllabus","bindToMiniCalendar","Handlebars","template","templates","name","depth0","helpers","partials","compilerInfo","merge","stack1","helper","buffer","helperMissing","escapeExpression","functionType","self","program6","program8","hash","strftime","program10","program12","unfudge","tDateToString","program14","inverse","noop","program","program15","unless","last","program17","ifEqual","program21","program19","html_url","program25","program23","program27","start_at","program38","program29","addIcon","title","due_at","program32","program30","scope","t","contextSensitiveDatetimeTitle","tTimeHours","same_time","program33","end_at","same_day","program36","program34","tEventToString","overrides_present","dates","passed","events","brandableCss","loadStylesheet","new_styles_normal_contrast","combinedChecksum","new_styles_high_contrast","responsive_layout_normal_contrast","responsive_layout_high_contrast","new_styles_normal_contrast_rtl","new_styles_high_contrast_rtl","responsive_layout_normal_contrast_rtl","responsive_layout_high_contrast_rtl","getCssVariant","SyllabusAppointmentGroupsCollection","I18n","Template","HELP_KEYCODES","View","className","tagName","click","description","href","appendTo","templateData","$dialog","dialog","width","resizable","autoOpen","bindEvents","openDialogByKeybinding","e","originalEvent","off","openDialog","keyCode","altKey","scoped","arg","SyllabusView","toJSON","dateCollator","html_url_for_assignment","html_url_for_event","lastDate","lastEvent","now","relatedEvents","json","end_date","start_date","fudgeDateForProfileTimezone","ov","getTime","_calendar_move","mathml","specialDatesAreHidden","_RichContentEditor2","preloadRemoteModule","highlightDaysWithEvents","$mini_month","$syllabus","wrapper","removeAttr","highlightDate","selectRow","$row","scrollTo","first","focus","selectDate","$course_syllabus","SYLLABUS_BODY","$edit_syllabus_link","before","_KeyboardShortcuts2","$el","$edit_course_syllabus_form","$course_syllabus_body","$course_syllabus_details","initSidebar","freshNode","val","loadNewEditor","manageParent","trim","html","showIf","destroyRCE","append","resetToggleLinks","preventDefault","triggerHandler","callOnRCE","currentTarget","siblings","andSelf","toggle","formSubmit","object_name","processData","syllabus_body","beforeSubmit","loadingImage","course","formErrors","miniCalendarDayClick","target","closest","slice","_Array$from","Array","from","_Array$from2","_slicedToArray3","ifExists","$events","setTimeout","which","todayString","formatDate","$lastBefore","dateString","some","c","substr","not","highlightRelated","$specialEvent","$elementToHide","$toggle_special_dates","toggleSpecialDates"],"mappings":"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","file":"syllabus.bundle-d1688e081f.js","sourcesContent":["/*\n * Copyright (C) 2017 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport $ from 'jquery'\n\n// configure MathJax to use 'color' extension fo LaTeX coding\nconst localConfig = {\n  TeX: {\n    extensions: [\"color.js\"]\n  }\n};\n\nexport function loadMathJax (config_file, cb = null) {\n  if (!isMathJaxLoaded() && shouldLoadMathJax()) {\n    // signal local config to mathjax as it loads\n    window.MathJax = localConfig;\n    $.getScript(`//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=${config_file}`, cb);\n  }\n}\n\nexport function isMathMLOnPage () {\n  return $('math').length > 0\n}\n\nexport function isMathJaxLoaded () {\n  return !(typeof MathJax === 'undefined')\n}\n\nexport function shouldLoadMathJax() {\n  return ($(document.documentElement).find(\"img.equation_image\").length <= 0)\n}\n\n/*\n * elem: string with elementId or en elem object\n */\nexport function reloadElement(elem) {\n  if (MathJax) {\n    MathJax.Hub.Queue(['Typeset', MathJax.Hub, elem])\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/mathml.js","#\n# Copyright (C) 2013 - present Instructure, Inc.\n#\n# This file is part of Canvas.\n#\n# Canvas is free software: you can redistribute it and/or modify it under\n# the terms of the GNU Affero General Public License as published by the Free\n# Software Foundation, version 3 of the License.\n#\n# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n# details.\n#\n# You should have received a copy of the GNU Affero General Public License along\n# with this program. If not, see <http://www.gnu.org/licenses/>.\n#\n\ndefine [\n  'underscore'\n  '../collections/PaginatedCollection'\n], (_, PaginatedCollection) ->\n\n  class SyllabusCalendarEventsCollection extends PaginatedCollection\n    url: '/api/v1/calendar_events'\n\n    initialize: (@context_codes, @type = 'event') ->\n      super\n\n    fetch: (options) ->\n      options ?= {}\n      options.remove ?= false\n\n      options['data'] ?= {}\n      options['data']['type'] = @type\n      options['data']['context_codes'] = @context_codes\n      options['data']['all_events'] ?= '1'\n      options['data']['excludes'] = ['assignment', 'description', 'child_events']\n\n      super options\n\n    # Overridden to make the id unique when aggregated in\n    # a collection with other models, and to exclude\n    # 'hidden' events\n    parse: (resp) =>\n      eventType = @type\n      switch eventType\n        when \"assignment\"\n          normalize = (ev) ->\n            ev.related_id = ev.id\n\n            overridden = false\n            _.each ev.assignment_overrides ? [], (override) ->\n              if !overridden\n                ev.id = \"#{ev.id}_override_#{override.id}\"\n                overridden = true\n            ev\n\n        when \"event\"\n          normalize = (ev) ->\n            ev.related_id = ev.id = \"#{eventType}_#{ev.id}\"\n            ev.related_id = \"#{eventType}_#{ev.parent_event_id}\" if ev.parent_event_id\n            ev\n\n      result = []\n      _.each super, (ev) ->\n        result.push normalize ev unless ev.hidden\n      result\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/collections/SyllabusCalendarEventsCollection.coffee","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport I18n from 'i18nObj'\nimport $ from 'jquery'\n  $.extend(true, I18n, {translations: {\"ar\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"اختصارات لوحة المفاتيح\",\"keybindings\":{\"close_submenu\":\"إغلاق القائمة أو مربع الحوار يعيدك أيضاً إلى المحرر\",\"navigate_toolbar\":\"الانتقال إلى اليمين/اليسار من خلال القائمة/شريط الأدوات\",\"open_menubar\":\"فتح شريط القوائم الخاص بالمحرر\",\"open_toolbar\":\"فتح شريط الأدوات الخاص بالمحرر\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"افتح مربع حوار اختصارات لوحة المفاتيح هذا\"},\"da\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Genvejstaster\",\"keybindings\":{\"close_submenu\":\"Lukning af menu eller dialog bringer dig også tilbage til redigeringsområdet\",\"navigate_toolbar\":\"Naviger til venstre/højre gennem menuen/værktøjslinjen\",\"open_menubar\":\"Åbn redigeringsprogrammets menulinje\",\"open_toolbar\":\"Åbn redigeringsprogrammets værktøjslinje\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Åbn dialogen for denne genvejstast\"},\"de\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Tastenkombinationen\",\"keybindings\":{\"close_submenu\":\"Schließen des Menüs oder Dialogs bringt Sie ebenfalls in den Editor-Bereich zurück.\",\"navigate_toolbar\":\"Links/rechts Navigation durch Menü/Symbolleiste\",\"open_menubar\":\"Editor-Menüleiste öffnen\",\"open_toolbar\":\"Symbolleiste des Editors öffnen\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Diesen Tastenkombinationsdialog öffnen\"},\"en-AU\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Keyboard Shortcuts\",\"keybindings\":{\"close_submenu\":\"Close Menu or Dialogue, also gets you back to the editor area.\",\"navigate_toolbar\":\"Navigate left/right through the menu/toolbar.\",\"open_menubar\":\"Open the editor's menu bar.\",\"open_toolbar\":\"Open the editor's toolbar\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Open this keyboard shortcuts dialog\"},\"en-CA\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Keyboard Shortcuts\",\"keybindings\":{\"close_submenu\":\"Close menu or dialog, also gets you back to editor area\",\"navigate_toolbar\":\"Navigate left/right through menu/toolbar\",\"open_menubar\":\"Open the editor's menubar\",\"open_toolbar\":\"Open the editor's toolbar\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Open this keyboard shortcuts dialog\"},\"en-GB\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Keyboard shortcuts\",\"keybindings\":{\"close_submenu\":\"Close menu or dialog box; also gets you back to editor area\",\"navigate_toolbar\":\"Navigate left/right through menu/toolbar\",\"open_menubar\":\"Open the editor's menu bar\",\"open_toolbar\":\"Open the editor's toolbar\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Open this keyboard shortcuts dialogue \"},\"en-GB-x-lbs\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Keyboard shortcuts\",\"keybindings\":{\"close_submenu\":\"Close menu or dialog box; also gets you back to editor area\",\"navigate_toolbar\":\"Navigate left/right through menu/toolbar\",\"open_menubar\":\"Open the editor's menu bar\",\"open_toolbar\":\"Open the editor's toolbar\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Open this keyboard shortcuts dialogue \"},\"en-GB-x-ukhe\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Keyboard shortcuts\",\"keybindings\":{\"close_submenu\":\"Close menu or dialog box; also gets you back to editor area\",\"navigate_toolbar\":\"Navigate left/right through menu/toolbar\",\"open_menubar\":\"Open the editor's menu bar\",\"open_toolbar\":\"Open the editor's toolbar\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Open this keyboard shortcuts dialogue \"},\"es\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Atajos del teclado\",\"keybindings\":{\"close_submenu\":\"Cerrar el menú o diálogo, también le regresa al área de editor\",\"navigate_toolbar\":\"Navegar a la izquierda/derecha a través del menú/barra de herramientas\",\"open_menubar\":\"Abrir la barra de herramientas del editor\",\"open_toolbar\":\"Abrir la barra de herramientas del editor\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Abrir esta ventana de diálogo de atajos de teclado\"},\"fa\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"میانبرهای صفحه کلید\",\"keybindings\":{\"close_submenu\":\"بستن منو یا گفتگو نیز شما را به قسمت ویرایشگر برمی گرداند\",\"navigate_toolbar\":\"پیمایش به سمت چپ/راست از طریق منو/نوار ابزار\",\"open_menubar\":\"باز کردن نوار ابزار ویرایشگر\",\"open_toolbar\":\"باز کردن نوار ابزار ویرایشگر\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"باز کردن این کادر گفتکوی میانبرهای صفحه کلید\"},\"fr\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Raccourcis clavier\",\"keybindings\":{\"close_submenu\":\"Fermer le menu ou dialogue, vous ramènera aussi sur l'éditeur\",\"navigate_toolbar\":\"Naviguer à gauche/à droite dans le menu/la barre d'outils\",\"open_menubar\":\"Ouvrir la barre des menus de l’éditeur\",\"open_toolbar\":\"Ouvrir la barre d’outils de l’éditeur\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Ouvrir cette boîte de dialogues des raccourcis clavier\"},\"fr-CA\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Raccourcis clavier\",\"keybindings\":{\"close_submenu\":\"Fermer le menu ou dialogue, vous ramènera aussi sur l'éditeur\",\"navigate_toolbar\":\"Naviguer à gauche/à droite dans le menu/la barre d'outils\",\"open_menubar\":\"Ouvrir la barre des menus de l’éditeur\",\"open_toolbar\":\"Ouvrir la barre d’outils de l’éditeur\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Ouvrir cette boîte de dialogues des raccourcis clavier\"},\"he\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"קיצורי דרך מקלדת \",\"keybindings\":{\"close_submenu\":\"סגירת תפריט או דיאלוג, גם כן תחזירך אל איזור העריכה\",\"navigate_toolbar\":\"ניווט שמאלי/ימני בעזרת תפריט/סרגל הכלים\",\"open_menubar\":\"פתיחת סרגל תפריט העריכה \",\"open_toolbar\":\"פתיחת סרגל העריכה\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"פתיחת חלון דיאלוג של מקשי קיצור\"},\"ht\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Rakousi Klavye\",\"keybindings\":{\"close_submenu\":\"Fèmen mesi oswa dyalòg, ap mennen w retounen tou nan zòn editè a tou\",\"navigate_toolbar\":\"Navige agoch/adwat atravè meni/ba zouti a\",\"open_menubar\":\"Ouvri ba meni editè a\",\"open_toolbar\":\"Ouvri ba zouti editè a\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Ouvri dyalòg rakousi klavye sa a\"},\"hy\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Արագ հասանելիության ստեղներ\",\"keybindings\":{\"close_submenu\":\"Եթե փակեք մենյուն կամ երկխոսության պատուհանը, կվերադառնաք խմբագրի տեղը\",\"navigate_toolbar\":\"Նավարկեք ձախ/աջ մենյուի/գործիքների տողով\",\"open_menubar\":\"Բացել խմբագրի մենյուի տողը\",\"open_toolbar\":\"Բացել խմբագրի գործիքների տողը\"}}}},\"is\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Flýtilyklar\",\"keybindings\":{\"close_submenu\":\"Með því að loka valmynd eða samtali ferðu aftur á breytingasvæði\",\"navigate_toolbar\":\"Fara til vinstri/hægri gegnum valmynd/tólaslá\",\"open_menubar\":\"Opna valslá ritils\",\"open_toolbar\":\"Opna tólaslá ritils\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Opna svarglugga flýtilykla\"},\"it\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Scelte rapide da tastiera\",\"keybindings\":{\"close_submenu\":\"Chiude il menu o la finestra di dialogo e riporta all'area dell'editor\",\"navigate_toolbar\":\"Spostati a sinistra/destra nel menu o nella barra degli strumenti\",\"open_menubar\":\"Apri la barra dei menu dell'editor\",\"open_toolbar\":\"Apri la barra degli strumenti dell'editor\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Apri questa finestra di dialogo delle scelte rapide da tastiera\"},\"ja\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"キーボード ショートカット\",\"keybindings\":{\"close_submenu\":\"メニューまたはダイアログを閉じて、編集エリアに戻ります\",\"navigate_toolbar\":\"メニュー/ツールバーを通して左/右をナビゲート\",\"open_menubar\":\"編集のメニューバーを開く\",\"open_toolbar\":\"エディタのツールバーを表示\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"このキーボードショートカットダイアログを開く\"},\"ko\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"키보드 단축키\"}}},\"mi\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Pokatata papapātuhi\",\"keybindings\":{\"close_submenu\":\"Katia tahua kōrero ranei ano, whiwhi koe hoki ki te wāhi ētita\",\"navigate_toolbar\":\"Navigate left/right through menu/toolbar\",\"open_menubar\":\"Whakatūwhera menubar o te ētita\",\"open_toolbar\":\"Whakatūwhera paeutauta o te ētita\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Whakatūwhera tenei pokatata papapātuhi kōrero\"},\"nb\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Snarveier\",\"keybindings\":{\"close_submenu\":\"Lukk meny eller dialogboks, får deg også tilbake til redigeringsområde\",\"navigate_toolbar\":\"Naviger med venstre/høyre gjennom menyen/verktøylinjen\",\"open_menubar\":\"Åpne editor-verktøylinje\",\"open_toolbar\":\"Åpne redigerings-verktøylinje\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Åpne denne tastatursnarveidialogen\"},\"nl\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Sneltoetsen\",\"keybindings\":{\"close_submenu\":\"Menu of dialoog sluiten, brengt u ook terug naar editorgebied\",\"navigate_toolbar\":\"Naar links/rechts navigeren via menu/werkbalk\",\"open_menubar\":\"De werkbalk van de editor openen\",\"open_toolbar\":\"De toolbalk van de editor openen\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Open dit dialoogvenster met sneltoetsen\"},\"nn\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Hurtigtastar\",\"keybindings\":{\"close_submenu\":\"Om du lukkar menyen eller dialogen, kjem du tilbake til redigeringsområdet\",\"navigate_toolbar\":\"Naviger venstre/høgre gjennom menyen/verktøylinja\",\"open_menubar\":\"Opne menylinja i redigeringsprogrammet\",\"open_toolbar\":\"Opne verktøylinja i redigeringsprogrammet\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Opne denne hurtigtastar-dialogen\"},\"pl\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Skróty klawiaturowe\",\"keybindings\":{\"close_submenu\":\"Zamknij menu lub dialog, również powraca do strefy edycji\",\"navigate_toolbar\":\"Nawigacja w lewo/prawo przez menu/pasek narzędzi\",\"open_menubar\":\"Otwórz pasek menu edytora\",\"open_toolbar\":\"Otwórz pasek narzędzi edytora\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Otwórz to okno dialogowe skrótów klawiatury\"},\"pt\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Atalhos de teclado\",\"keybindings\":{\"close_submenu\":\"Fechar menu ou diálogo, transporta-o de volta para a área de editor\",\"navigate_toolbar\":\"Navegue para a esquerda/direita pelo menu/barra de ferramentas\",\"open_menubar\":\"Abrir a barra de menu do editor\",\"open_toolbar\":\"Abrir a barra de ferramentas do editor\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Abrir esta caixa de diálogo de atalhos do teclado\"},\"pt-BR\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Atalhos de teclado\",\"keybindings\":{\"close_submenu\":\"Fechar menu ou diálogo, também o leva de volta para a área do editor\",\"navigate_toolbar\":\"Navegar para esquerda/direita pelo menu/barra de ferramentas\",\"open_menubar\":\"Abrir a barra de menu do editor\",\"open_toolbar\":\"Abrir a barra de ferramentas do editor\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Abrir esta caixa de atalhos do teclado\"},\"ru\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Клавиши быстрого доступа\",\"keybindings\":{\"close_submenu\":\"Если вы закроете меню или диалоговое окно, то также перейдете обратно в область редактора\",\"navigate_toolbar\":\"Перейдите влево / вправо по меню / панели инструментов\",\"open_menubar\":\"Откройте панель меню редактора\",\"open_toolbar\":\"Открыть панель инструментов редактора\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Открыть этот диалог комбинаций клавиш\"},\"sv\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Kortkommandon\",\"keybindings\":{\"close_submenu\":\"Stäng meny eller dialog, gå även tillbaka till redigeringen\",\"navigate_toolbar\":\"Navigera vänster/höger genom menyn/verktygsfältet\",\"open_menubar\":\"Öppna redigerarens meny\",\"open_toolbar\":\"Öppna redigerarens verktygsfält\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"Öppna detta tangentbords genvägsdialog\"},\"tr\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"Klavye Kısayolları\",\"keybindings\":{\"close_submenu\":\"Menü veya diyaloğu kapat, düzenleyici alan geri dönersiniz\",\"navigate_toolbar\":\"Menü/araç çubuğu ile sola/sağa gezinin\",\"open_menubar\":\"Düzenleyici menü çubuğunu aç\",\"open_toolbar\":\"Düzenleyici araç çubuğunu aç\"}}}},\"zh-Hans\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"键盘快捷方式\",\"keybindings\":{\"close_submenu\":\"关闭了菜单或对话框，您还可以回到编辑区域。\",\"navigate_toolbar\":\"通过菜单/工具栏，导航左/右。\",\"open_menubar\":\"打开编辑器的菜单栏\",\"open_toolbar\":\"打开编辑器的工具栏\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"打开此键盘快捷方式对话框\"},\"zh-Hant\":{\"editor\":{\"keyboard_shortcuts\":{\"dialog_title\":\"鍵盤快捷鍵\",\"keybindings\":{\"close_submenu\":\"關閉菜單或對話之後，您還可以回到編輯區域\",\"navigate_toolbar\":\"透過菜單/工具欄左/右導航\",\"open_menubar\":\"打開編輯器的菜單欄\",\"open_toolbar\":\"打開編輯器的工具欄\"}}},\"open_this_keyboard_shortcuts_dialog_9658b83a\":\"打開此鍵盤的快捷鍵對話框\"}}});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./public/javascripts/translations/editor.keyboard_shortcuts.js\n// module id = RvshI2/tvL\n// module chunks = 27 32 36 38 41 47 52 61 73 76 85 97 103 120","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport I18n from 'i18nObj'\nimport $ from 'jquery'\n  $.extend(true, I18n, {translations: {\"ar\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"التاريخ\",\"details\":\"التفاصيل\"},\"syllabus\":{\"hide_specific_dates\":\"إخفاء التواريخ الخاصة بالشخص والمجموعة والقسم\",\"show_specific_dates\":\"عرض تواريخ خاصة بالشخص والمجموعة والقسم\"}}},\"due_by_c263dc10\":\"مستحق بحلول\",\"to_c4c44f4b\":\"إلى\"},\"da\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Dato\",\"details\":\"Nærmere oplysninger\"},\"syllabus\":{\"hide_specific_dates\":\"Skjul sektion, gruppe og personlige datoer\",\"show_specific_dates\":\"Vis sektion, gruppe og personlige datoer\"}}},\"due_by_c263dc10\":\"forfalder\",\"to_c4c44f4b\":\"til\"},\"de\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Datum\",\"details\":\"Details\"},\"syllabus\":{\"hide_specific_dates\":\"Abschnitt, Gruppe und personenspezifische Daten ausblenden\",\"show_specific_dates\":\"Abschnitt, Gruppe und personenspezifische Daten anzeigen\"}}},\"due_by_c263dc10\":\"fällig um\",\"to_c4c44f4b\":\"bis/an/um\"},\"en-AU\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Date\",\"details\":\"Details\"},\"syllabus\":{\"hide_specific_dates\":\"Hide section, group, and person specific dates\",\"show_specific_dates\":\"Show section, group, and person specific dates\"}}},\"due_by_c263dc10\":\"due by\",\"to_c4c44f4b\":\"to\"},\"en-CA\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Date\",\"details\":\"Details\"},\"syllabus\":{\"hide_specific_dates\":\"Hide section, group, and person specific dates\",\"show_specific_dates\":\"Show section, group, and person specific dates\"}}},\"due_by_c263dc10\":\"due by\",\"to_c4c44f4b\":\"to\"},\"en-GB\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Date\",\"details\":\"Details\"},\"syllabus\":{\"hide_specific_dates\":\"Hide section, group, and person specific dates\",\"show_specific_dates\":\"Show section, group, and person specific dates\"}}},\"due_by_c263dc10\":\"due by\",\"to_c4c44f4b\":\"to\"},\"en-GB-x-lbs\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Date\",\"details\":\"Details\"},\"syllabus\":{\"hide_specific_dates\":\"Hide section, group, and person specific dates\",\"show_specific_dates\":\"Show section, group, and person specific dates\"}}},\"due_by_c263dc10\":\"due by\",\"to_c4c44f4b\":\"to\"},\"en-GB-x-ukhe\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Date\",\"details\":\"Details\"},\"syllabus\":{\"hide_specific_dates\":\"Hide section, group, and person specific dates\",\"show_specific_dates\":\"Show section, group, and person specific dates\"}}},\"due_by_c263dc10\":\"due by\",\"to_c4c44f4b\":\"to\"},\"es\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Fecha\",\"details\":\"Detalles\"},\"syllabus\":{\"hide_specific_dates\":\"Ocultar fechas específicas de sección, grupo y persona\",\"show_specific_dates\":\"Mostrar fechas específicas de sección, grupo y persona\"}}},\"due_by_c263dc10\":\"fecha límite:\",\"to_c4c44f4b\":\"hasta\"},\"fa\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"تاریخ\",\"details\":\"اطلاعات بیشتر\"},\"syllabus\":{\"hide_specific_dates\":\"مخفی کردن بخش، گروه و تاریخ های خاص شخص\",\"show_specific_dates\":\"نمایش بخش، گروه و تاریخ های خاص شخص\"}}},\"due_by_c263dc10\":\"مهلت\",\"to_c4c44f4b\":\"تا\"},\"fr\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Date\",\"details\":\"Détails\"},\"syllabus\":{\"hide_specific_dates\":\"Masquer la section, le groupe et les dates qui ne concernent que la personne\",\"show_specific_dates\":\"Afficher la section, le groupe et les dates qui ne concernent que la personne\"}}},\"due_by_c263dc10\":\"À rendre pour le\",\"to_c4c44f4b\":\"à\"},\"fr-CA\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Date\",\"details\":\"Informations\"},\"syllabus\":{\"hide_specific_dates\":\"Masquer la section, le groupe et les dates qui ne concernent que la personne\",\"show_specific_dates\":\"Afficher la section, le groupe et les dates qui ne concernent que la personne\"}}},\"due_by_c263dc10\":\"À rendre pour le\",\"to_c4c44f4b\":\"à\"},\"he\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"תאריך\",\"details\":\"פרטים\"},\"syllabus\":{\"hide_specific_dates\":\"הסתרת תאריכים ספציפיים להקבצה, קבוצה, ואדם\",\"show_specific_dates\":\"הצגת תאריכים ספציפיים להקבצה, קבוצה, ואדם \"}}},\"due_by_c263dc10\":\"תאריך יעד עד\",\"to_c4c44f4b\":\"עבור\"},\"ht\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Dat\",\"details\":\"Detay\"},\"syllabus\":{\"hide_specific_dates\":\"Kache seksyon, gwoup ak dat pou yon moun an patikilye\",\"show_specific_dates\":\"Afiche seksyon, gwoup ak dat pou yon moun an patikilye\"}}},\"due_by_c263dc10\":\"delè pou\",\"to_c4c44f4b\":\"pou\"},\"hy\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Ամսաթիվ\",\"details\":\"Մանրամասներ\"},\"syllabus\":{\"hide_specific_dates\":\"Թաքցնել որեւէ բաժնին, խմբին և անձին վերաբերող որոշակի ամսաթվեր \",\"show_specific_dates\":\"Ցույց տալ որեւէ բաժնին, խմբին և անձին վերաբերող որոշակի ամսաթվերը\"}}},\"due_by_c263dc10\":\"կատարել մինչև\",\"to_c4c44f4b\":\"Ում\"},\"is\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Dagsetning\",\"details\":\"Upplýsingar\"},\"syllabus\":{\"hide_specific_dates\":\"Fela sértækar dagsetningar fyrir hluta, hóp og einstaklinga\",\"show_specific_dates\":\"Sýna sértækar dagsetningar fyrir hluta, hóp og einstaklinga\"}}},\"due_by_c263dc10\":\"Skil fyrir\",\"to_c4c44f4b\":\"til\"},\"it\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Data\",\"details\":\"Dettagli\"},\"syllabus\":{\"hide_specific_dates\":\"Nascondi date specifiche di sezioni, gruppi e persone\",\"show_specific_dates\":\"Mostra date specifiche di sezioni, gruppi e persone\"}}},\"due_by_c263dc10\":\"scadenza entro\",\"to_c4c44f4b\":\"a\"},\"ja\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"日付\",\"details\":\"詳細\"},\"syllabus\":{\"hide_specific_dates\":\"セクション、グループ、個人に関する日付を非表示にする\",\"show_specific_dates\":\"セクション、グループ、個人に関する日付を表示する\"}}},\"due_by_c263dc10\":\"期限\",\"to_c4c44f4b\":\"移動先\"},\"ko\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"날짜\",\"details\":\"세부 정보\"},\"syllabus\":{\"hide_specific_dates\":\"섹션, 그룹, 사람에 특정한 날짜 숨기기\",\"show_specific_dates\":\"섹션, 그룹, 사람에 특정한 날짜 표시하기\"}}},\"to_c4c44f4b\":\"다음 요일로\"},\"mi\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Rā\",\"details\":\"Ngā Taipitopito\"},\"syllabus\":{\"hide_specific_dates\":\"Huna wāhanga, rōpū, me te tangata rā motuhake\",\"show_specific_dates\":\"Whakaaturia wāhanga, rōpū, me te tangata rā motuhake\"}}},\"due_by_c263dc10\":\"e tika ana i te\",\"to_c4c44f4b\":\"ki\"},\"nb\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Dato\",\"details\":\"Detaljer\"},\"syllabus\":{\"hide_specific_dates\":\"Skjul seksjon-, gruppe- og personspesifikke datoer\",\"show_specific_dates\":\"Vis seksjon-, gruppe- og personspesifikke datoer\"}}},\"due_by_c263dc10\":\"Frist ved\",\"to_c4c44f4b\":\"til\"},\"nl\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Datum\",\"details\":\"Details\"},\"syllabus\":{\"hide_specific_dates\":\"Datums verbergen die specifiek zijn voor sectie, groep of persoon\",\"show_specific_dates\":\"Datums tonen die specifiek zijn voor sectie, groep of persoon\"}}},\"due_by_c263dc10\":\"inleveren om\",\"to_c4c44f4b\":\"naar\"},\"nn\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Dato\",\"details\":\"Detaljar\"},\"syllabus\":{\"hide_specific_dates\":\"Skjul spesifikke datoar for seksjonar, gruppe og person\",\"show_specific_dates\":\"Vis spesifikke datoar for seksjonar, gruppe og person\"}}},\"due_by_c263dc10\":\"frist innan:\",\"to_c4c44f4b\":\"til\"},\"pl\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Data\",\"details\":\"Informacje szczegółowe\"},\"syllabus\":{\"hide_specific_dates\":\"Ukryj sekcję, grupę i indywidualne daty\",\"show_specific_dates\":\"Pokaż sekcję, grupę i indywidualne daty\"}}},\"due_by_c263dc10\":\"termin dostarczenia\",\"to_c4c44f4b\":\"do\"},\"pt\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Data\",\"details\":\"Detalhes\"},\"syllabus\":{\"hide_specific_dates\":\"Ocultar secção, grupo e datas específicas de pessoas\",\"show_specific_dates\":\"Mostrar secção, grupo e datas específicas de pessoas\"}}},\"due_by_c263dc10\":\"prazo de entrega\",\"to_c4c44f4b\":\"para\"},\"pt-BR\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Data\",\"details\":\"Detalhes\"},\"syllabus\":{\"hide_specific_dates\":\"Ocultar datas específicas de seção, grupo e pessoa\",\"show_specific_dates\":\"Exibir datas específicas de seção, grupo e pessoa\"}}},\"due_by_c263dc10\":\"vencimento:\",\"to_c4c44f4b\":\"para\"},\"ru\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Дата\",\"details\":\"Сведения\"},\"syllabus\":{\"hide_specific_dates\":\"Скрыть разделы, группы и конкретные персональные даты\",\"show_specific_dates\":\"Отобразить разделы, группы и конкретные персональные даты\"}}},\"due_by_c263dc10\":\"выполнить до\",\"to_c4c44f4b\":\"к\"},\"sv\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Datum\",\"details\":\"Detaljer\"},\"syllabus\":{\"hide_specific_dates\":\"Dölj sektion, grupp och person specifika datum\",\"show_specific_dates\":\"Visa sektion, grupp och person specifika datum\"}}},\"due_by_c263dc10\":\"färdig den: \",\"to_c4c44f4b\":\"till\"},\"tr\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"Tarih\",\"details\":\"Ayrıntılar\"},\"syllabus\":{\"hide_specific_dates\":\"Belirtilen tarihteki grup, bölüm ve kişileri gizle\",\"show_specific_dates\":\"Belirtilen tarihteki grup, bölüm ve kişileri göster\"}}},\"due_by_c263dc10\":\"son tarih\",\"to_c4c44f4b\":\"ile\"},\"zh-Hans\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"日期\",\"details\":\"详细信息\"},\"syllabus\":{\"hide_specific_dates\":\"隐藏特定于班级、小组和个人的日期\",\"show_specific_dates\":\"显示特定于班级、小组和个人的日期\"}}},\"due_by_c263dc10\":\"到期时间\",\"to_c4c44f4b\":\"到\"},\"zh-Hant\":{\"courses\":{\"syllabus\":{\"headers\":{\"date\":\"日期\",\"details\":\"詳細資料\"},\"syllabus\":{\"hide_specific_dates\":\"隱藏班別、群組和個人具體日期\",\"show_specific_dates\":\"顯示班別、群組和個人具體日期\"}}},\"due_by_c263dc10\":\"截止日期\",\"to_c4c44f4b\":\"至\"}}});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./public/javascripts/translations/courses.syllabus.js\n// module id = Tz5YLSzjnZ\n// module chunks = 120","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport I18n from 'i18nObj'\nimport $ from 'jquery'\nimport './jquery.instructure_date_and_time'\nimport './jquery.templateData' /* fillTemplateData */\nimport 'jqueryui/datepicker'\n\nconst monthNames = I18n.lookup('date.month_names')\n\nfunction makeDate (date) {\n  return {\n    day: date.getDate(),\n    month: date.getMonth(),\n    year: date.getFullYear()\n  }\n}\n\nexport function changeMonth ($month, change) {\n  const monthData = $month.data('calendar_objects')\n  var data = {}\n  var current = null\n  if (typeof (change) === 'string') {\n    var current = $.datepicker.oldParseDate('mm/dd/yy', change)\n    if (current) {\n      current.setDate(1)\n    }\n  }\n  if (!current) {\n    var month = parseInt($month.find('.month_number').text(), 10)\n    var year = parseInt($month.find('.year_number').text(), 10)\n    var current = new Date(year, month + change - 1, 1)\n  }\n  var data = {\n    month_name: monthNames[current.getMonth() + 1],\n    month_number: current.getMonth() + 1,\n    year_number: current.getFullYear()\n  }\n  $month.fillTemplateData({data})\n  let date = new Date()\n  const today = makeDate(date)\n  const firstDayOfMonth = makeDate(current)\n  date = current\n  date.setDate(0)\n  date.setDate(date.getDate() - date.getDay())\n  const firstDayOfSquare = makeDate(date)\n  let lastDayOfPreviousMonth = null\n  if (firstDayOfMonth.day != firstDayOfSquare.day) {\n    date.setDate(1)\n    date.setMonth(date.getMonth() + 1)\n    date.setDate(0)\n    lastDayOfPreviousMonth = {\n      day: date.getDate(),\n      month: firstDayOfSquare.month,\n      year: firstDayOfSquare.year\n    }\n    date.setDate(1)\n    date.setMonth(date.getMonth() + 1)\n  }\n  date.setMonth(current.getMonth() + 1)\n  date.setDate(0)\n  const lastDayOfMonth = {\n    day: date.getDate(),\n    month: firstDayOfMonth.month,\n    year: firstDayOfMonth.yearh\n  }\n  date.setDate(date.getDate() + 1)\n  date.setDate(date.getDate() + (6 - date.getDay()))\n  date.setDate(date.getDate() + 7)\n  const lastDayOfSquare = makeDate(date)\n  let $days = $month.data('days')\n  if (!$days) {\n    $days = $month.find('.calendar_day_holder')\n    $month.data('days', $days)\n  }\n  if ($month.hasClass('mini_month')) {\n    $days = $month.find('.day')\n  }\n  $month.find('.calendar_event').remove()\n  let idx = 0\n  let day = firstDayOfSquare.day\n  var month = firstDayOfSquare.month\n  var year = firstDayOfSquare.year\n  while (day <= lastDayOfSquare.day || month != lastDayOfSquare.month) {\n    var $day = $days.eq(idx)\n    if ($day.length > 0) {\n      const classes = $day.attr('class').split(' ')\n      const class_names = []\n      for (let i = 0; i < classes.length; i++) {\n        if (classes[i].indexOf('date_') == 0) {\n        } else {\n          class_names.push(classes[i])\n        }\n      }\n      $day.attr('class', class_names.join(' '))\n    }\n    $day.show().addClass('visible').parents('tr').show().addClass('visible')\n    var data = {\n      day_number: day\n    }\n    const month_number = month < 9 ? `0${month + 1}` : (month + 1)\n    const day_number = day < 10 ? `0${day}` : day\n    let id = `day_${year}_${month_number}_${day_number}`\n    if ($month.hasClass('mini_month')) {\n      id = `mini_${id}`\n    }\n    $day.attr('id', id)\n      .addClass(`date_${month_number}_${day_number}_${year}`)\n      .find('.day_number').text(day).attr('title', `${month_number}/${day_number}/${year}`)\n      .addClass(`date_${month_number}_${day_number}_${year}`) // left here because I don't know what it'll break...\n    let $div = $day.children('div')\n    if ($month.hasClass('mini_month')) {\n      $div = $day\n    }\n    $div.removeClass('current_month other_month next_month previous_month today')\n    if (month == firstDayOfMonth.month) {\n      $div.addClass('current_month')\n    } else {\n      $div.addClass('other_month')\n      if (firstDayOfMonth.month == (month + 1) % 12) {\n        $div.addClass('previous_month')\n      } else {\n        $div.addClass('next_month')\n      }\n    }\n    if (month == today.month && day == today.day && year == today.year) {\n      $div.addClass('today')\n    }\n    day++\n    idx++\n    if ((lastDayOfPreviousMonth && day > lastDayOfPreviousMonth.day && month == lastDayOfPreviousMonth.month)\n          || (day > lastDayOfMonth.day && month == lastDayOfMonth.month)) {\n      month += 1\n      if (month >= 12) {\n        month -= 12\n        year++\n      }\n      day = 1\n    }\n  }\n  while (idx < $days.length) {\n    var $day = $days.eq(idx)\n    $day.parents('tr').hide().removeClass('visible')\n    $day.hide().removeClass('visible')\n    idx++\n  }\n  if (!$month.hasClass('mini_month')) {\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/calendar_move.js","#\n# Copyright (C) 2013 - present Instructure, Inc.\n#\n# This file is part of Canvas.\n#\n# Canvas is free software: you can redistribute it and/or modify it under\n# the terms of the GNU Affero General Public License as published by the Free\n# Software Foundation, version 3 of the License.\n#\n# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n# details.\n#\n# You should have received a copy of the GNU Affero General Public License along\n# with this program. If not, see <http://www.gnu.org/licenses/>.\n#\n\ndefine [\n  'jquery'\n  'Backbone'\n], ($, Backbone) ->\n\n  class SyllabusCollection extends Backbone.Collection\n    # Attach to externally provided collections\n    #\n    # This cannot be the initialize method as that would cause the\n    # collections to be passed to backbone as if they were model\n    # instances... ungoodness.\n    constructor: (collections) ->\n      super()\n\n      for collection in collections\n        collection.on 'add', (model, collection, options) => @add model, options\n        collection.on 'remove', (model, collection, options) => @remove model, options\n        collection.on 'reset', (collection, options) =>\n          find_collection_models = (memo, model) ->\n            if model.get('collection') == collection\n              memo.push model\n            else\n              memo\n\n          for model in @reduce find_collection_models, []\n            @remove model\n\n          for model in collection.models\n            @add model\n\n    # No-op fetch\n    #\n    # This fetch should never do anything; this collection is\n    # populated with models from other collections (see initialize).\n    fetch: ->\n\n    # Gives a \"natural feeling\" sort order to syllabus events\n    #\n    # Because this collection is an amalgamation of several types of\n    # models, not all models will have the same fields. Additionally,\n    # some events may not have a date at all. So we must account for\n    # these discrepancies here.\n    #\n    # Sort conditions:\n    #   1) start_at (oldest first)\n    #      When start_at times match, sorted by end_at (youngest first)\n    #\n    #      For example, an appointment being sorted above an\n    #      appointment group while the other appointments are sorted\n    #      below the appointment group.\n    #\n    #   2) title (alphabetically)\n    #      Gives a consistent ordering when start_at and end_at times\n    #      on both items match.\n    #\n    comparator: (model1, model2) ->\n      m1start_at = model1.get('start_at')\n      m2start_at = model2.get('start_at')\n      m1end_at = model1.get('end_at')\n      m2end_at = model2.get('end_at')\n      m1title = model1.get('title')\n      m2title = model2.get('title')\n\n      m1title = m1title.toLowerCase() if m1title\n      m2title = m2title.toLowerCase() if m2title\n\n      # if the start_at times are different\n      if m1start_at != m2start_at\n        # if one of the start_at times is missing\n        if not m1start_at\n          return 1\n        if not m2start_at\n          return -1\n\n        if m1start_at < m2start_at\n          return -1\n        else\n          return 1\n\n      # if the end_at times are different\n      else if m1end_at != m2end_at\n        # if one of the end_at times is missing (shouldn't be)\n        if not m1end_at\n          return 1\n        if not m2end_at\n          return -1\n\n        # This may seem backwards, but is intentional!\n        # we sort longer running events first to give a better \"feel\" to\n        # the sort order (for overlapping time spans)\n        if m1end_at < m2end_at\n          return 1\n        else\n          return -1\n\n      if m1title < m2title\n        return -1\n      else if m1title > m2title\n        return 1\n\n      return 0\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/collections/SyllabusCollection.coffee","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport SyllabusBehaviors from 'compiled/behaviors/SyllabusBehaviors'\nimport SyllabusCollection from 'compiled/collections/SyllabusCollection'\nimport SyllabusCalendarEventsCollection from 'compiled/collections/SyllabusCalendarEventsCollection'\nimport SyllabusAppointmentGroupsCollection from 'compiled/collections/SyllabusAppointmentGroupsCollection'\nimport SyllabusView from 'compiled/views/courses/SyllabusView'\n\n// Setup the collections\nconst collections = [\n  new SyllabusCalendarEventsCollection([ENV.context_asset_string], 'event'),\n  new SyllabusCalendarEventsCollection([ENV.context_asset_string], 'assignment')\n]\n\n// Don't show appointment groups for non-logged in users\nif (ENV.current_user_id) {\n  collections.push(new SyllabusAppointmentGroupsCollection([ENV.context_asset_string], 'reservable'))\n  collections.push(new SyllabusAppointmentGroupsCollection([ENV.context_asset_string], 'manageable'))\n}\n\n// Perform a fetch on each collection\n//   The fetch continues fetching until no next link is returned\nconst deferreds = _.map(collections, (collection) => {\n  const deferred = $.Deferred()\n\n  const error = () => deferred.reject()\n\n  const success = () => {\n    if (collection.canFetch('next')) {\n      return collection.fetch({page: 'next', success, error })\n    } else {\n      return deferred.resolve()\n    }\n  }\n\n  collection.fetch({\n    data: {\n      per_page: ENV.SYLLABUS_PER_PAGE || 50\n    },\n    success,\n    error\n  })\n\n  return deferred\n})\n\n// Create the aggregation collection and view\nconst acollection = new SyllabusCollection(collections)\nconst view = new SyllabusView({\n  el: '#syllabusContainer',\n  collection: acollection,\n  can_read: ENV.CAN_READ,\n  is_valid_user: !!ENV.current_user_id\n})\n\n// When all of the fetches have completed, render the view and bind behaviors\n$.when.apply(this, deferreds).then(() => {\n  view.render()\n  SyllabusBehaviors.bindToSyllabus()\n})\n\n// Add the loading indicator now that the collections are fetching\n$('#loading_indicator').replaceWith('<img src=\"/images/ajax-reload-animated.gif\">')\n\n// Binding to the mini calendar must take place after sidebar initializes,\n// so this must be done on dom ready\n$(() => {\n  SyllabusBehaviors.bindToEditSyllabus()\n  SyllabusBehaviors.bindToMiniCalendar()\n})\n\n\n\n\n// WEBPACK FOOTER //\n// ./app/jsx/bundles/syllabus.js","\n    define('jst/courses/Syllabus', [\"handlebars/runtime\",\"compiled/util/brandableCss\",\"i18n!courses.syllabus\",\"coffeescripts/handlebars_helpers.coffee\"], function(Handlebars){\n      Handlebars = Handlebars.default\n      var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};\n      var name = 'courses/Syllabus';\n      templates[name] = template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", stack1, helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \"\", helper, options;\n  buffer += \"\\n    <a id=\\\"toggle_special_dates_in_syllabus\\\" class=\\\"shown\\\" href=\\\"#\\\">\\n      <span class=\\\"hide\\\">\"\n    + escapeExpression((helper = helpers.t || (depth0 && depth0.t),options={hash:{\n    'scope': (\"courses.syllabus\")\n  },data:data},helper ? helper.call(depth0, \"syllabus.hide_specific_dates\", \"Hide section, group, and person specific dates\", options) : helperMissing.call(depth0, \"t\", \"syllabus.hide_specific_dates\", \"Hide section, group, and person specific dates\", options)))\n    + \"</span>\\n      <span class=\\\"show\\\">\"\n    + escapeExpression((helper = helpers.t || (depth0 && depth0.t),options={hash:{\n    'scope': (\"courses.syllabus\")\n  },data:data},helper ? helper.call(depth0, \"syllabus.show_specific_dates\", \"Show section, group, and person specific dates\", options) : helperMissing.call(depth0, \"t\", \"syllabus.show_specific_dates\", \"Show section, group, and person specific dates\", options)))\n    + \"</span>\\n    </a>\\n  \";\n  return buffer;\n  }\n\nfunction program3(depth0,data) {\n  \n  \n  return \"\\n    &nbsp;\\n  \";\n  }\n\nfunction program5(depth0,data) {\n  \n  var buffer = \"\", stack1;\n  buffer += \"\\n    <tr class=\\\"date\";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.passed), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.date), {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\\">\\n      <td scope=\\\"row\\\" valign=\\\"top\\\" class=\\\"day_date\\\" data-date=\\\"\";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.date), {hash:{},inverse:self.noop,fn:self.program(10, program10, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\\">\\n        \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.date), {hash:{},inverse:self.noop,fn:self.program(12, program12, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n      </td>\\n      <td class=\\\"details\\\">\\n        <table class=\\\"detail_list\\\">\\n          \";\n  stack1 = helpers.each.call(depth0, (depth0 && depth0.events), {hash:{},inverse:self.noop,fn:self.program(14, program14, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n        </table>\\n      </td>\\n    </tr>\\n    \";\n  return buffer;\n  }\nfunction program6(depth0,data) {\n  \n  \n  return \" date_passed\";\n  }\n\nfunction program8(depth0,data) {\n  \n  var buffer = \"\", helper, options;\n  buffer += \" events_\"\n    + escapeExpression((helper = helpers.strftime || (depth0 && depth0.strftime),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.date), \"%Y_%m_%d\", options) : helperMissing.call(depth0, \"strftime\", (depth0 && depth0.date), \"%Y_%m_%d\", options)));\n  return buffer;\n  }\n\nfunction program10(depth0,data) {\n  \n  var helper, options;\n  return escapeExpression((helper = helpers.strftime || (depth0 && depth0.strftime),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.date), \"%Y_%m_%d\", options) : helperMissing.call(depth0, \"strftime\", (depth0 && depth0.date), \"%Y_%m_%d\", options)));\n  }\n\nfunction program12(depth0,data) {\n  \n  var buffer = \"\", stack1, helper, options;\n  buffer += \"\\n          \";\n  stack1 = (helper = helpers.unfudge || (depth0 && depth0.unfudge),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.date), options) : helperMissing.call(depth0, \"unfudge\", (depth0 && depth0.date), options));\n  buffer += escapeExpression((helper = helpers.tDateToString || (depth0 && depth0.tDateToString),options={hash:{},data:data},helper ? helper.call(depth0, stack1, \"medium_with_weekday\", options) : helperMissing.call(depth0, \"tDateToString\", stack1, \"medium_with_weekday\", options)))\n    + \"\\n        \";\n  return buffer;\n  }\n\nfunction program14(depth0,data) {\n  \n  var buffer = \"\", stack1, helper, options;\n  buffer += \"\\n          <tr class=\\\"syllabus_\";\n  if (helper = helpers.type) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.type); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \" related-\";\n  if (helper = helpers.related_id) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.related_id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1);\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.override), {hash:{},inverse:self.noop,fn:self.program(15, program15, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\\">\\n            <td class=\\\"name\";\n  stack1 = helpers.unless.call(depth0, (depth0 && depth0.last), {hash:{},inverse:self.noop,fn:self.program(17, program17, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\\">\\n              \";\n  stack1 = (helper = helpers.ifEqual || (depth0 && depth0.ifEqual),options={hash:{},inverse:self.program(21, program21, data),fn:self.program(19, program19, data),data:data},helper ? helper.call(depth0, (depth0 && depth0.type), \"assignment\", options) : helperMissing.call(depth0, \"ifEqual\", (depth0 && depth0.type), \"assignment\", options));\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n              \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.html_url), {hash:{},inverse:self.program(25, program25, data),fn:self.program(23, program23, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n              \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.override), {hash:{},inverse:self.noop,fn:self.program(27, program27, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n            </td>\\n            <td class=\\\"dates\";\n  stack1 = helpers.unless.call(depth0, (depth0 && depth0.last), {hash:{},inverse:self.noop,fn:self.program(17, program17, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\\">\\n              \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.start_at), {hash:{},inverse:self.program(38, program38, data),fn:self.program(29, program29, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n            </td>\\n          </tr>\\n          \";\n  return buffer;\n  }\nfunction program15(depth0,data) {\n  \n  \n  return \" special_date\";\n  }\n\nfunction program17(depth0,data) {\n  \n  \n  return \" not_last\";\n  }\n\nfunction program19(depth0,data) {\n  \n  var buffer = \"\", helper, options;\n  buffer += \"\\n                \"\n    + escapeExpression((helper = helpers.addIcon || (depth0 && depth0.addIcon),options={hash:{},data:data},helper ? helper.call(depth0, \"assignment\", options) : helperMissing.call(depth0, \"addIcon\", \"assignment\", options)))\n    + \"\\n              \";\n  return buffer;\n  }\n\nfunction program21(depth0,data) {\n  \n  var buffer = \"\", helper, options;\n  buffer += \"\\n                \"\n    + escapeExpression((helper = helpers.addIcon || (depth0 && depth0.addIcon),options={hash:{},data:data},helper ? helper.call(depth0, \"calendar-month\", options) : helperMissing.call(depth0, \"addIcon\", \"calendar-month\", options)))\n    + \"\\n              \";\n  return buffer;\n  }\n\nfunction program23(depth0,data) {\n  \n  var buffer = \"\", stack1, helper;\n  buffer += \"\\n                <a href=\\\"\";\n  if (helper = helpers.html_url) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.html_url); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"\\\">\";\n  if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"</a>\\n              \";\n  return buffer;\n  }\n\nfunction program25(depth0,data) {\n  \n  var buffer = \"\", stack1, helper;\n  buffer += \"\\n                \";\n  if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"\\n              \";\n  return buffer;\n  }\n\nfunction program27(depth0,data) {\n  \n  var buffer = \"\", stack1;\n  buffer += \"\\n                <div class=\\\"special_date_title\\\">(\"\n    + escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.override)),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))\n    + \")</div>\\n              \";\n  return buffer;\n  }\n\nfunction program29(depth0,data) {\n  \n  var buffer = \"\", stack1;\n  buffer += \"\\n                \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.due_at), {hash:{},inverse:self.program(32, program32, data),fn:self.program(30, program30, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n              \";\n  return buffer;\n  }\nfunction program30(depth0,data) {\n  \n  var buffer = \"\", stack1, helper, options;\n  buffer += \"\\n                  \"\n    + escapeExpression((helper = helpers.t || (depth0 && depth0.t),options={hash:{\n    'scope': (\"courses.syllabus\")\n  },data:data},helper ? helper.call(depth0, \"due by\", options) : helperMissing.call(depth0, \"t\", \"due by\", options)))\n    + \" <span \";\n  stack1 = (helper = helpers.unfudge || (depth0 && depth0.unfudge),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.due_at), options) : helperMissing.call(depth0, \"unfudge\", (depth0 && depth0.due_at), options));\n  buffer += escapeExpression((helper = helpers.contextSensitiveDatetimeTitle || (depth0 && depth0.contextSensitiveDatetimeTitle),options={hash:{},data:data},helper ? helper.call(depth0, stack1, options) : helperMissing.call(depth0, \"contextSensitiveDatetimeTitle\", stack1, options)))\n    + \" >\"\n    + escapeExpression((helper = helpers.tTimeHours || (depth0 && depth0.tTimeHours),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.due_at), options) : helperMissing.call(depth0, \"tTimeHours\", (depth0 && depth0.due_at), options)))\n    + \"</span>\\n                \";\n  return buffer;\n  }\n\nfunction program32(depth0,data) {\n  \n  var buffer = \"\", stack1, helper, options;\n  buffer += \"\\n                  <span \";\n  stack1 = (helper = helpers.unfudge || (depth0 && depth0.unfudge),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.start_at), options) : helperMissing.call(depth0, \"unfudge\", (depth0 && depth0.start_at), options));\n  buffer += escapeExpression((helper = helpers.contextSensitiveDatetimeTitle || (depth0 && depth0.contextSensitiveDatetimeTitle),options={hash:{},data:data},helper ? helper.call(depth0, stack1, options) : helperMissing.call(depth0, \"contextSensitiveDatetimeTitle\", stack1, options)))\n    + \" >\"\n    + escapeExpression((helper = helpers.tTimeHours || (depth0 && depth0.tTimeHours),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.start_at), options) : helperMissing.call(depth0, \"tTimeHours\", (depth0 && depth0.start_at), options)))\n    + \"</span>\\n                  \";\n  stack1 = helpers.unless.call(depth0, (depth0 && depth0.same_time), {hash:{},inverse:self.noop,fn:self.program(33, program33, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n                \";\n  return buffer;\n  }\nfunction program33(depth0,data) {\n  \n  var buffer = \"\", stack1, helper, options;\n  buffer += \"\\n                    \"\n    + escapeExpression((helper = helpers.t || (depth0 && depth0.t),options={hash:{\n    'scope': (\"courses.syllabus\")\n  },data:data},helper ? helper.call(depth0, \"to\", options) : helperMissing.call(depth0, \"t\", \"to\", options)))\n    + \"\\n                    <span \";\n  stack1 = (helper = helpers.unfudge || (depth0 && depth0.unfudge),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.end_at), options) : helperMissing.call(depth0, \"unfudge\", (depth0 && depth0.end_at), options));\n  buffer += escapeExpression((helper = helpers.contextSensitiveDatetimeTitle || (depth0 && depth0.contextSensitiveDatetimeTitle),options={hash:{},data:data},helper ? helper.call(depth0, stack1, options) : helperMissing.call(depth0, \"contextSensitiveDatetimeTitle\", stack1, options)))\n    + \" >\\n                      \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.same_day), {hash:{},inverse:self.program(36, program36, data),fn:self.program(34, program34, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n                   </span>\\n                  \";\n  return buffer;\n  }\nfunction program34(depth0,data) {\n  \n  var buffer = \"\", helper, options;\n  buffer += \"\\n                        \"\n    + escapeExpression((helper = helpers.tTimeHours || (depth0 && depth0.tTimeHours),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.end_at), options) : helperMissing.call(depth0, \"tTimeHours\", (depth0 && depth0.end_at), options)))\n    + \"\\n                      \";\n  return buffer;\n  }\n\nfunction program36(depth0,data) {\n  \n  var buffer = \"\", helper, options;\n  buffer += \"\\n                        \"\n    + escapeExpression((helper = helpers.tEventToString || (depth0 && depth0.tEventToString),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.end_at), \"short\", \"tiny_on_the_hour\", options) : helperMissing.call(depth0, \"tEventToString\", (depth0 && depth0.end_at), \"short\", \"tiny_on_the_hour\", options)))\n    + \"\\n                      \";\n  return buffer;\n  }\n\nfunction program38(depth0,data) {\n  \n  \n  return \"\\n                &nbsp;\\n              \";\n  }\n\n  buffer += \"<div id=\\\"syllabus_links\\\">\\n  \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.overrides_present), {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n</div>\\n<table id=\\\"syllabus\\\" class=\\\"ic-Table ic-Table--condensed\\\">\\n  <thead>\\n    <tr>\\n      <th scope=\\\"col\\\" style=\\\"width: 25%;\\\">\"\n    + escapeExpression((helper = helpers.t || (depth0 && depth0.t),options={hash:{\n    'scope': (\"courses.syllabus\")\n  },data:data},helper ? helper.call(depth0, \"headers.date\", \"Date\", options) : helperMissing.call(depth0, \"t\", \"headers.date\", \"Date\", options)))\n    + \"</th>\\n      <th scope=\\\"col\\\" style=\\\"width: 75%;\\\">\\n        <div style=\\\"float: right;\\\"></div>\\n        \"\n    + escapeExpression((helper = helpers.t || (depth0 && depth0.t),options={hash:{\n    'scope': (\"courses.syllabus\")\n  },data:data},helper ? helper.call(depth0, \"headers.details\", \"Details\", options) : helperMissing.call(depth0, \"t\", \"headers.details\", \"Details\", options)))\n    + \"\\n      </th>\\n    </tr>\\n  </thead>\\n  <tbody>\\n    \";\n  stack1 = helpers.each.call(depth0, (depth0 && depth0.dates), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n  </tbody>\\n</table>\\n\";\n  return buffer;\n  });\n      ;\n      \n    var brandableCss = arguments[1];\n    brandableCss.loadStylesheet('jst/courses/Syllabus', {\"new_styles_normal_contrast\":{\"combinedChecksum\":\"9ede0e26e9\"},\"new_styles_high_contrast\":{\"combinedChecksum\":\"63ad1b3ab9\"},\"responsive_layout_normal_contrast\":{\"combinedChecksum\":\"9ede0e26e9\"},\"responsive_layout_high_contrast\":{\"combinedChecksum\":\"63ad1b3ab9\"},\"new_styles_normal_contrast_rtl\":{\"combinedChecksum\":\"4871ff0db3\"},\"new_styles_high_contrast_rtl\":{\"combinedChecksum\":\"83af08245b\"},\"responsive_layout_normal_contrast_rtl\":{\"combinedChecksum\":\"4871ff0db3\"},\"responsive_layout_high_contrast_rtl\":{\"combinedChecksum\":\"83af08245b\"}}[brandableCss.getCssVariant()]);\n  ;\n      return templates[name];\n    });\n  \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./app/views/jst/courses/Syllabus.handlebars\n// module id = Z0JhogiLkK\n// module chunks = 120","#\n# Copyright (C) 2012 - present Instructure, Inc.\n#\n# This file is part of Canvas.\n#\n# Canvas is free software: you can redistribute it and/or modify it under\n# the terms of the GNU Affero General Public License as published by the Free\n# Software Foundation, version 3 of the License.\n#\n# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n# details.\n#\n# You should have received a copy of the GNU Affero General Public License along\n# with this program. If not, see <http://www.gnu.org/licenses/>.\n#\n\ndefine [\n  'underscore'\n  '../collections/PaginatedCollection'\n], (_, PaginatedCollection) ->\n\n  class SyllabusAppointmentGroupsCollection extends PaginatedCollection\n    url: '/api/v1/appointment_groups'\n\n    initialize: (@context_codes, @scope = 'reservable') ->\n      super\n\n    fetch: (options) ->\n      options ?= {}\n      options.remove ?= false\n\n      options['data'] ?= {}\n      options['data']['scope'] = @scope\n      options['data']['context_codes'] = @context_codes\n      options['data']['include_past_appointments'] ?= '1'\n\n      super options\n\n    # Overridden to make the id unique when aggregated in\n    # a collection with other models\n    parse: (resp) ->\n      _.each super, (ev) ->\n        ev.related_id = ev.id = \"appointment_group_#{ev.id}\"\n      resp\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/collections/SyllabusAppointmentGroupsCollection.coffee","#\n# Copyright (C) 2014 - present Instructure, Inc.\n#\n# This file is part of Canvas.\n#\n# Canvas is free software: you can redistribute it and/or modify it under\n# the terms of the GNU Affero General Public License as published by the Free\n# Software Foundation, version 3 of the License.\n#\n# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n# details.\n#\n# You should have received a copy of the GNU Affero General Public License along\n# with this program. If not, see <http://www.gnu.org/licenses/>.\n\ndefine [\n  'underscore'\n  'i18n!editor.keyboard_shortcuts'\n  'jquery'\n  'Backbone'\n  'jst/editor/KeyboardShortcuts'\n], (_, I18n, $, Backbone, Template) ->\n  HELP_KEYCODES = [\n    48 # regular 0 (not numpad 0)\n    119 # F8\n  ]\n\n  ##\n  # A dialog that lists available keybindings for TinyMCE.\n  #\n  # The dialog can be launched by pressing ALT+0, or by clicking a little ? icon\n  # in the editor action bar.\n  KeyboardShortcuts = Backbone.View.extend\n    className: 'tinymce-keyboard-shortcuts-toggle'\n    tagName: 'a'\n    events:\n      'click': 'openDialog'\n\n    keybindings: [\n      {\n        key: 'ALT+F9',\n        description: I18n.t('keybindings.open_menubar', 'Open the editor\\'s menubar')\n      },\n      {\n        key: 'ALT+F10',\n        description: I18n.t('keybindings.open_toolbar', 'Open the editor\\'s toolbar')\n      },\n      {\n        key: 'ESC',\n        description: I18n.t('keybindings.close_submenu', 'Close menu or dialog, also gets you back to editor area')\n      },\n      {\n        key: 'TAB/Arrows',\n        description: I18n.t('keybindings.navigate_toolbar', 'Navigate left/right through menu/toolbar')\n      },\n      {\n        key: 'ALT+F8',\n        description: I18n.t('Open this keyboard shortcuts dialog')\n      }\n    ]\n\n    template: Template\n\n    initialize: ->\n      this.el.href = '#' # for keyboard accessibility\n      $(this.el).attr(\"title\", I18n.t('dialog_title', 'Keyboard Shortcuts'))\n\n      $('<i class=\"icon-keyboard-shortcuts\" aria-hidden=\"true\" />').appendTo(this.el)\n      $('<span class=\"screenreader-only\" />')\n        .text(I18n.t('dialog_title', 'Keyboard Shortcuts'))\n        .appendTo(this.el)\n\n    render: () ->\n      templateData = {\n        keybindings: this.keybindings\n      }\n\n      this.$dialog = $(this.template(templateData)).dialog({\n        title: I18n.t('dialog_title', 'Keyboard Shortcuts'),\n        width: 600,\n        resizable: true\n        autoOpen: false\n      })\n\n      @bindEvents()\n\n      return this\n\n    bindEvents: ()->\n      $(document).on('keyup.tinymce_keyboard_shortcuts', @openDialogByKeybinding.bind(this))\n\n      #special event for keyups in the editor iframe, fired from \"setupAndFocusTinyMCEConfig.js\"\n      $(document).on('editorKeyUp', ((e, originalEvent)->\n        @openDialogByKeybinding(originalEvent)\n      ).bind(this))\n\n\n    remove: () ->\n      $(document).off('keyup.tinymce_keyboard_shortcuts')\n      $(document).off('editorKeyUp')\n      this.$dialog.dialog('destroy')\n\n    openDialog: ->\n      unless this.$dialog.dialog('isOpen')\n        this.$dialog.dialog('open')\n\n    openDialogByKeybinding: (e) ->\n      if HELP_KEYCODES.indexOf(e.keyCode) > -1 && e.altKey\n        this.openDialog()\n\n  KeyboardShortcuts\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/views/editor/KeyboardShortcuts.coffee","\n    define(['i18nObj', 'translations/courses.syllabus', 'translations/_core', 'translations/_core_en'], function(I18n) {\n      return I18n.scoped('courses.syllabus')\n    });\n  \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./frontend_build/i18n.js?courses.syllabus!./public/javascripts/dummyI18nResource.js\n// module id = eddxvlDqyL\n// module chunks = 120","#\n# Copyright (C) 2013 - present Instructure, Inc.\n#\n# This file is part of Canvas.\n#\n# Canvas is free software: you can redistribute it and/or modify it under\n# the terms of the GNU Affero General Public License as published by the Free\n# Software Foundation, version 3 of the License.\n#\n# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n# details.\n#\n# You should have received a copy of the GNU Affero General Public License along\n# with this program. If not, see <http://www.gnu.org/licenses/>.\n#\n\ndefine [\n  'jquery'\n  'underscore'\n  'Backbone'\n  'jst/courses/Syllabus'\n], ($, _, Backbone, template) ->\n\n  class SyllabusView extends Backbone.View\n    template: template\n\n    initialize: ({@can_read, @is_valid_user}) ->\n      super\n\n    # Normalizes the JSON for all of the aggregated event types\n    # into something simpler for the template to consume\n    #\n    # Example output:\n    # {\n    #    // Array of the date objects\n    #    \"dates\": [ ... ]\n    # }\n    #\n    # Example date object:\n    # {\n    #   // Date object for the date at midnight (null for undated events)\n    #   \"date\": new Date(),\n    #\n    #   // Indicates whether the date is in the past\n    #   \"passed\": true,\n    #\n    #   // Array of event objects that start on this day\n    #   \"events\": [ ... ]\n    # }\n    #\n    # Example event object:\n    # {\n    #    // Identifier to associate related events\n    #    \"related_id\": \"assignment_1\",\n    #\n    #    // Assignment or other type of event\n    #    \"type\": \"assignment|event\",\n    #\n    #    // Title of the event\n    #    \"title\": \"Event title\",\n    #\n    #    // URL for the user to access details on the assignment/event\n    #    \"html_url\": \"http://...\",\n    #\n    #    // Date the event begins (this is the due_at date for assignments)\n    #    \"start_at\": \"2012-01-01T23:59:00-07:00\",\n    #\n    #    // Date the event ends (this is the due_at date for assignments)\n    #    \"end_at\": \"2012-01-01T23:59:00-07:00\",\n    #\n    #    // Date the event is due (null for non-assignment events)\n    #    \"due_at\": \"2012-01-01T23:59:00-07:00\",\n    #\n    #    // Indicates that the start and end times are on the same day\n    #    \"same_day\": true,\n    #\n    #    // Indicates that the start and end times are the same time\n    #    \"same_time\": true,\n    #\n    #    // Indicates that this event is the last on the same day\n    #    \"last\": false,\n    #\n    #    // Override information associated with this event (null for non-overwritten)\n    #    \"override\": {\n    #        // Title for the override\n    #        \"title\": \"Overridden for James\"\n    #    }\n    #\n    #    // The original JSON from the model\n    #    \"json\": { ... }\n    # }\n    toJSON: ->\n      now = new Date\n      today = new Date now.getFullYear(), now.getMonth(), now.getDate()\n      html_url_for_assignment = @can_read\n      html_url_for_event = @can_read && @is_valid_user # since the calendar page doesn't support anonymous access yet\n\n      relatedEvents = {}\n      lastDate = null\n      lastEvent = null\n      dateCollator = (memo, json) ->\n        related_id = json['related_id']\n        related_id ?= json['id']\n        if json['type'] == 'assignment'\n          html_url = json['html_url'] if html_url_for_assignment\n        else\n          html_url = json['html_url'] if html_url_for_event\n        title = json['title']\n        start_at = $.fudgeDateForProfileTimezone(Date.parse(json['start_at'])) if json['start_at']\n        end_at = $.fudgeDateForProfileTimezone(Date.parse(json['end_at'])) if json['end_at']\n        due_at = start_at if json['type'] == 'assignment'\n\n        override = null\n        _.each json.assignment_overrides ? [], (ov) ->\n          override ?= {}\n          override.title = ov.title\n\n        start_date = null\n        if start_at\n          start_date = new Date start_at.getFullYear(), start_at.getMonth(), start_at.getDate()\n\n        end_date = null\n        if end_at\n          end_date = new Date end_at.getFullYear(), end_at.getMonth(), end_at.getDate()\n\n        if not lastDate or lastDate['date']?.getTime() != start_date?.getTime()\n          lastDate =\n            'date': start_date\n            'passed': start_date and start_date < today\n            'events': []\n\n          memo.push lastDate\n          lastEvent = null\n        else\n          lastEvent['last'] = false if lastEvent\n\n        lastEvent =\n          'related_id': related_id\n          'type': json['type']\n          'title': title\n          'html_url': html_url\n          'start_at': start_at\n          'end_at': end_at\n          'due_at': due_at\n          'same_day': start_date?.getTime() == end_date?.getTime()\n          'same_time': start_at?.getTime() == end_at?.getTime()\n          'last': true\n          'override': override\n          'json': json\n\n        lastDate['events'].push lastEvent\n\n        relatedEvents[related_id] = [] if related_id not of relatedEvents\n        relatedEvents[related_id].push lastEvent\n\n        memo\n\n      # Get the dates and events\n      dates = _.reduce super, dateCollator, []\n\n      # Remove extraneous override information for single events\n      overrides_present = false\n      for id, events of relatedEvents\n        if events.length == 1\n          events[0]['override'] = null\n        else\n          for event in events\n            overrides_present |= event['override'] != null\n\n      # Return the dates and events in a handlebars friendly way\n      dates: dates\n      overrides_present: overrides_present\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/views/courses/SyllabusView.coffee","\n    define('jst/editor/KeyboardShortcuts', [\"handlebars/runtime\",\"compiled/util/brandableCss\",\"coffeescripts/handlebars_helpers.coffee\"], function(Handlebars){\n      Handlebars = Handlebars.default\n      var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};\n      var name = 'editor/KeyboardShortcuts';\n      templates[name] = template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", stack1, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \"\", stack1, helper;\n  buffer += \"\\n    <li>\\n      <code>\";\n  if (helper = helpers.key) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.key); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"</code>\\n      <span>\";\n  if (helper = helpers.description) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.description); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"</span>\\n    </li>\\n  \";\n  return buffer;\n  }\n\n  buffer += \"<ul class=\\\"tinymce-keyboard-shortcuts\\\">\\n  \";\n  stack1 = helpers.each.call(depth0, (depth0 && depth0.keybindings), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n</ul>\\n\";\n  return buffer;\n  });\n      ;\n      \n    var brandableCss = arguments[1];\n    brandableCss.loadStylesheet('jst/editor/KeyboardShortcuts', {\"new_styles_normal_contrast\":{\"combinedChecksum\":\"f4493af988\"},\"new_styles_high_contrast\":{\"combinedChecksum\":\"f4493af988\"},\"responsive_layout_normal_contrast\":{\"combinedChecksum\":\"f4493af988\"},\"responsive_layout_high_contrast\":{\"combinedChecksum\":\"f4493af988\"},\"new_styles_normal_contrast_rtl\":{\"combinedChecksum\":\"9b568bbcaf\"},\"new_styles_high_contrast_rtl\":{\"combinedChecksum\":\"9b568bbcaf\"},\"responsive_layout_normal_contrast_rtl\":{\"combinedChecksum\":\"9b568bbcaf\"},\"responsive_layout_high_contrast_rtl\":{\"combinedChecksum\":\"9b568bbcaf\"}}[brandableCss.getCssVariant()]);\n  ;\n      return templates[name];\n    });\n  \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./app/views/jst/editor/KeyboardShortcuts.handlebars\n// module id = oPZCoKLtFa\n// module chunks = 27 32 36 38 41 47 52 61 73 76 85 97 103 120","//\n// Copyright (C) 2013 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n//\n\nimport $ from 'jquery'\nimport {changeMonth} from 'calendar_move' // calendarMonths\nimport RichContentEditor from 'jsx/shared/rce/RichContentEditor'\nimport KeyboardShortcuts from '../views/editor/KeyboardShortcuts'\nimport 'jquery.instructure_date_and_time' // dateString, datepicker\nimport 'jquery.instructure_forms' // formSubmit, formErrors\nimport 'jquery.instructure_misc_plugins' // ifExists, showIf\nimport 'jquery.loadingImg'\nimport 'vendor/jquery.scrollTo'\nimport 'jqueryui/datepicker'\nimport * as mathml from 'mathml'\n\nlet specialDatesAreHidden = false\n\nRichContentEditor.preloadRemoteModule()\n\n// Highlight mini calendar days matching syllabus events\n//    Queries the syllabus event list and highlights the\n//    corresponding mini calendar dates.\nfunction highlightDaysWithEvents () {\n  const $mini_month = $('.mini_month')\n  const $syllabus = $('#syllabus')\n  if (!$mini_month || !$syllabus) return\n\n  let events = $mini_month.find('.day.has_event')\n  events.removeClass('has_event')\n  let wrapper = events.find('.day_wrapper')\n  wrapper.removeAttr('role')\n  wrapper.removeAttr('tabindex')\n\n  $syllabus.find('tr.date:visible').each(function () {\n    const date = $(this).find('.day_date').attr('data-date')\n    events = $mini_month.find(`#mini_day_${date}`)\n    events.addClass('has_event')\n    wrapper = events.find('.day_wrapper')\n    wrapper.attr('role', 'link')\n    wrapper.attr('tabindex', '0')\n  })\n}\n\n// Sets highlighting on a given date\n//    Removes all highlighting then highlights the given\n//    date, if provided.\nfunction highlightDate (date) {\n  const $mini_month = $('.mini_month')\n  const $syllabus = $('#syllabus')\n\n  $('tr.date.related, .day.related').removeClass('related')\n  if (date) {\n    if ($mini_month) $mini_month.find(`#mini_day_${date}`).addClass('related')\n    if ($syllabus) $syllabus.find(`tr.date.events_${date}`).addClass('related')\n  }\n}\n\nfunction highlightRelated (related_id, self) {\n  const $syllabus = $('#syllabus')\n\n  $syllabus.find('.detail_list tr.related_event').removeClass('related_event')\n  if (related_id && $syllabus) {\n    $syllabus.find(`.detail_list tr.related-${related_id}`).not(self).addClass('related_event')\n  }\n}\n\n\n// Toggles whether special events/days are displayed\nfunction toggleSpecialDates () {\n  $('.special_date').each(function () {\n    const $specialEvent = $(this)\n    let $elementToHide = $specialEvent\n\n    // If all of the events on this day are special/overridden, hide the entire day\n    if (!$specialEvent.siblings().not('.special_date').length) {\n      $elementToHide = $specialEvent.closest('tr.date')\n    }\n\n    $elementToHide.toggle(specialDatesAreHidden)\n  })\n\n  const $toggle_special_dates = $('#toggle_special_dates_in_syllabus')\n  $toggle_special_dates.removeClass('hidden').removeClass('shown')\n  $toggle_special_dates.addClass(specialDatesAreHidden ? 'shown' : 'hidden')\n  specialDatesAreHidden = !specialDatesAreHidden\n\n  highlightDaysWithEvents()\n}\n\n// Binds to #syllabus dom events\n//    Called to bind behaviors to #syllabus after it's rendered.\nfunction bindToSyllabus () {\n  const $syllabus = $('#syllabus')\n  $syllabus.on('mouseenter mouseleave', 'tr.date', function (ev) {\n    let date\n    if (ev.type === 'mouseenter') date = $(this).find('.day_date').attr('data-date')\n    highlightDate(date)\n  })\n\n  $syllabus.on('mouseenter mouseleave', 'tr.date .detail_list tr', function (ev) {\n    let related_id = null\n    if (ev.type === 'mouseenter') {\n      const classNames = ($(this).attr('class') || '').split(/\\s+/)\n      classNames.some((c) => {\n        if (c.substr(0, 8) === 'related-') {\n          return related_id = c.substr(8)\n        }\n      })\n    }\n\n    highlightRelated(related_id, this)\n  })\n\n  const $toggleSpecialDatesInSyllabus = $('#toggle_special_dates_in_syllabus')\n  $toggleSpecialDatesInSyllabus.on('click', (ev) => {\n    ev.preventDefault()\n    toggleSpecialDates()\n  })\n\n  highlightDaysWithEvents()\n\n  const todayString = $.datepicker.formatDate('yy_mm_dd', new Date())\n  highlightDate(todayString)\n}\n\nfunction selectRow ($row) {\n  if ($row.length > 0) {\n    $('tr.selected').removeClass('selected')\n    $row.addClass('selected')\n    $('html, body').scrollTo($row)\n    $row.find('a').first().focus()\n  }\n}\n\nfunction selectDate (date) {\n  $('.mini_month .day.selected').removeClass('selected')\n  $('.mini_month').find(`#mini_day_${date}`).addClass('selected')\n}\n\n// Binds to mini calendar dom events\nfunction bindToMiniCalendar () {\n  const $mini_month = $('.mini_month')\n\n  const prev_next_links = $mini_month.find('.next_month_link, .prev_month_link')\n  prev_next_links.on('click', function (ev) {\n    ev.preventDefault()\n    changeMonth($mini_month, $(this).hasClass('next_month_link') ? 1 : -1)\n    highlightDaysWithEvents()\n  })\n\n  const miniCalendarDayClick = function (ev) {\n    ev.preventDefault()\n    const date = $(ev.target).closest('.mini_calendar_day')[0].id.slice(9)\n    const [year, month, day] = Array.from(date.split('_'))\n    changeMonth($mini_month, `${month}/${day}/${year}`)\n    highlightDaysWithEvents()\n    selectDate(date)\n    $(`.events_${date}`).ifExists($events => setTimeout(() => selectRow($events), 0)) // focus race condition hack. why do you do this to me, IE?\n  }\n\n  $mini_month.on('keypress', '.day_wrapper', (ev) => {\n    if (ev.which === 13 || ev.which === 32) miniCalendarDayClick(ev)\n  })\n\n  $mini_month.on('click', '.day_wrapper', miniCalendarDayClick)\n\n  $mini_month.on('focus blur mouseover mouseout', '.day_wrapper', (ev) => {\n    let date\n    if (ev.type !== 'mouseout' && ev.type !== 'blur') {\n      date = $(ev.target).closest('.mini_calendar_day')[0].id.slice(9)\n    }\n    highlightDate(date)\n  })\n\n  $('.jump_to_today_link').on('click', (ev) => {\n    ev.preventDefault()\n    const todayString = $.datepicker.formatDate('yy_mm_dd', new Date())\n    let $lastBefore\n    $('tr.date').each(function () {\n      const dateString = $(this).find('.day_date').attr('data-date')\n      if (!dateString || dateString > todayString) return false\n      $lastBefore = $(this)\n    })\n\n    changeMonth($mini_month, $.datepicker.formatDate('mm/dd/yy', new Date()))\n    highlightDaysWithEvents()\n\n    if (!$lastBefore) $lastBefore = $('tr.date:first')\n\n    selectDate(todayString)\n    selectRow($lastBefore)\n  })\n}\n\n// Binds to edit syllabus dom events\nconst bindToEditSyllabus = function () {\n  const $course_syllabus = $('#course_syllabus')\n  $course_syllabus.data('syllabus_body', ENV.SYLLABUS_BODY)\n  const $edit_syllabus_link = $('.edit_syllabus_link')\n\n  // if there's no edit link, don't need to (and shouldn't) do the rest of\n  // this. the edit link is included on the page if and only if the user has\n  // :manage_content permission on the course (see assignments'\n  // syllabus_right_side view)\n  if (!$edit_syllabus_link.length) return\n\n  // Add the backbone view for keyboardshortup help here\n  $('.toggle_views_link').first().before(new KeyboardShortcuts().render().$el)\n\n  function resetToggleLinks () {\n    $('.toggle_html_editor_link').show()\n    $('.toggle_rich_editor_link').hide()\n  }\n\n  const $edit_course_syllabus_form = $('#edit_course_syllabus_form')\n  let $course_syllabus_body = $('#course_syllabus_body')\n  const $course_syllabus_details = $('#course_syllabus_details')\n\n  RichContentEditor.initSidebar({\n    show () {\n      $('#sidebar_content, #course_show_secondary').hide()\n    },\n    hide () {\n      $('#sidebar_content, #course_show_secondary').show()\n    },\n  })\n\n  $edit_course_syllabus_form.on('edit', () => {\n    $edit_course_syllabus_form.show()\n    $edit_syllabus_link.hide()\n    $course_syllabus.hide()\n    $course_syllabus_details.hide()\n    $course_syllabus_body = RichContentEditor.freshNode($course_syllabus_body)\n    $course_syllabus_body.val($course_syllabus.data('syllabus_body'))\n    RichContentEditor.loadNewEditor($course_syllabus_body, {\n      focus: true,\n      manageParent: true,\n    })\n\n    $('.jump_to_today_link').focus()\n  }) // a11y: Set focus so it doesn't get lost.\n\n  function recreateCourseSyllabusBody() {\n    $(\"#tinymce-parent-of-course_syllabus_body\").append(\n      $course_syllabus_body\n    )\n  }\n\n  $edit_course_syllabus_form.on('hide_edit', () => {\n    $edit_course_syllabus_form.hide()\n    $edit_syllabus_link.show()\n    $course_syllabus.show()\n    const text = $.trim($course_syllabus.html())\n    $course_syllabus_details.showIf(!text)\n    RichContentEditor.destroyRCE($course_syllabus_body)\n    recreateCourseSyllabusBody()\n    resetToggleLinks()\n    $edit_syllabus_link.focus()\n  })\n\n  $edit_syllabus_link.on('click', (ev) => {\n    ev.preventDefault()\n    $edit_course_syllabus_form.triggerHandler('edit')\n  })\n\n  $edit_course_syllabus_form.on('click', '.toggle_views_link', (ev) => {\n    ev.preventDefault()\n    RichContentEditor.callOnRCE($course_syllabus_body, 'toggle')\n    // hide the clicked link, and show the other toggle link.\n    // todo: replace .andSelf with .addBack when JQuery is upgraded.\n    $(ev.currentTarget).siblings('.toggle_views_link').andSelf().toggle()\n  })\n\n  $edit_course_syllabus_form.on('click', '.cancel_button', (ev) => {\n    ev.preventDefault()\n    $edit_course_syllabus_form.triggerHandler('hide_edit')\n  })\n\n  return $edit_course_syllabus_form.formSubmit({\n    object_name: 'course',\n\n    processData (data) {\n      const syllabus_body = RichContentEditor.callOnRCE($course_syllabus_body, 'get_code')\n      data['course[syllabus_body]'] = syllabus_body\n      return data\n    },\n\n    beforeSubmit (data) {\n      $edit_course_syllabus_form.triggerHandler('hide_edit')\n      $course_syllabus_details.hide()\n      $course_syllabus.loadingImage()\n    },\n\n    success (data) {\n      /*\n      xsslint safeString.property syllabus_body\n      */\n      $course_syllabus.loadingImage('remove').html(data.course.syllabus_body)\n      $course_syllabus.data('syllabus_body', data.course.syllabus_body)\n      $course_syllabus_details.hide()\n      if (mathml.isMathMLOnPage()) {\n        if (mathml.isMathJaxLoaded()) {\n          mathml.reloadElement('content')\n        } else {\n          mathml.loadMathJax('MML_HTMLorMML.js')\n        }\n      }\n    },\n\n    error (data) {\n      return $edit_course_syllabus_form.triggerHandler('edit').formErrors(data)\n    }\n  })\n}\n\nexport default {\n  bindToEditSyllabus,\n  bindToMiniCalendar,\n  bindToSyllabus\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/SyllabusBehaviors.js","\n    define(['i18nObj', 'translations/editor.keyboard_shortcuts', 'translations/_core', 'translations/_core_en'], function(I18n) {\n      return I18n.scoped('editor.keyboard_shortcuts')\n    });\n  \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./frontend_build/i18n.js?editor.keyboard_shortcuts!./public/javascripts/dummyI18nResource.js\n// module id = zxVxU0UN3I\n// module chunks = 27 32 36 38 41 47 52 61 73 76 85 97 103 120"],"sourceRoot":""}