aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2025-07-14 09:36:18 +0200
committerRon Lucke <lucke@elan-ev.de>2025-07-14 09:36:18 +0200
commit4355ded9bc56e0b06fbceffe61ddc37061cc3bc7 (patch)
tree348493b6b0fd1286b86f213e5077413b97cf9747
parent1e59dd2dacc51b3313d7780b66d4bf72e0484f86 (diff)
Color-Themes-System, fixes #5361
Closes #5361 Merge request studip/studip!4038
-rw-r--r--app/controllers/admin/courses.php4
-rw-r--r--app/controllers/admin/layout.php40
-rw-r--r--app/controllers/course/contentmodules.php3
-rw-r--r--app/controllers/course/members.php2
-rw-r--r--app/controllers/course/room_requests.php4
-rw-r--r--app/controllers/course/wiki.php4
-rw-r--r--app/controllers/materialien/files.php2
-rw-r--r--app/controllers/messages.php8
-rw-r--r--app/controllers/oer/admin.php4
-rw-r--r--app/views/admin/autoinsert/index.php2
-rw-r--r--app/views/admin/banner/index.php8
-rw-r--r--app/views/admin/configuration/edit_configuration.php4
-rw-r--r--app/views/admin/configuration/table-row.php4
-rw-r--r--app/views/admin/course_wizard_steps/edit.php2
-rw-r--r--app/views/admin/course_wizard_steps/index.php2
-rw-r--r--app/views/admin/courseplanning/nonconform.php2
-rw-r--r--app/views/admin/cronjobs/logs/index.php10
-rw-r--r--app/views/admin/cronjobs/schedules/index.php12
-rw-r--r--app/views/admin/cronjobs/tasks/index.php8
-rw-r--r--app/views/admin/datafields/index.php22
-rw-r--r--app/views/admin/domain/index.php4
-rw-r--r--app/views/admin/holidays/index.php2
-rw-r--r--app/views/admin/ilias_interface/edit_server.php4
-rw-r--r--app/views/admin/ilias_interface/index.php4
-rw-r--r--app/views/admin/licenses/index.php4
-rw-r--r--app/views/admin/lockrules/index.php2
-rw-r--r--app/views/admin/login_style/newpic.php2
-rw-r--r--app/views/admin/overlapping/conflicts.php2
-rw-r--r--app/views/admin/overlapping/courses.php2
-rw-r--r--app/views/admin/plugin/index.php2
-rw-r--r--app/views/admin/plugin/upload-drag-and-drop.php2
-rw-r--r--app/views/admin/role/assign_role.php2
-rw-r--r--app/views/admin/role/index.php2
-rw-r--r--app/views/admin/sem_classes/_sem_type.php6
-rw-r--r--app/views/admin/sem_classes/details.php8
-rw-r--r--app/views/admin/sem_classes/overview.php4
-rw-r--r--app/views/admin/specification/index.php4
-rw-r--r--app/views/admin/user/_results.php2
-rw-r--r--app/views/admin/user/activities.php2
-rw-r--r--app/views/admin/user/edit.php6
-rw-r--r--app/views/admission/courseset/index.php8
-rw-r--r--app/views/admission/courseset/institutes.php4
-rw-r--r--app/views/admission/ruleadministration/index.php4
-rw-r--r--app/views/blubber/compose.php14
-rw-r--r--app/views/blubber/private_to_studygroup.php6
-rw-r--r--app/views/calendar/calendar/share_select.php4
-rw-r--r--app/views/calendar/contentbox/_termin.php12
-rw-r--r--app/views/calendar/contentbox/display.php6
-rw-r--r--app/views/calendar/date/_add_edit_form.php2
-rw-r--r--app/views/calendar/schedule/course_info.php4
-rw-r--r--app/views/consultation/overview/booked.php2
-rw-r--r--app/views/consultation/overview/index.php6
-rw-r--r--app/views/consultation/overview/ungrouped.php6
-rw-r--r--app/views/contents/courseware/courses_overview.php2
-rw-r--r--app/views/contents/overview/index.php2
-rw-r--r--app/views/course/basicdata/view.php8
-rw-r--r--app/views/course/contentmodules/info.php2
-rw-r--r--app/views/course/dates/_date_row-exdate.php2
-rw-r--r--app/views/course/dates/_date_row.php2
-rw-r--r--app/views/course/dates/_topic_li.php4
-rw-r--r--app/views/course/dates/current_day_dates.php2
-rw-r--r--app/views/course/details/index.php2
-rw-r--r--app/views/course/forum/discussion_types/index.php2
-rw-r--r--app/views/course/ilias_interface/add_object.php2
-rw-r--r--app/views/course/management/index.php2
-rw-r--r--app/views/course/statusgroups/_group.php4
-rw-r--r--app/views/course/studygroup/_members_gallery.php2
-rw-r--r--app/views/course/studygroup/_members_list.php2
-rw-r--r--app/views/course/studygroup/_members_options.php6
-rw-r--r--app/views/course/studygroup/members.php6
-rw-r--r--app/views/course/studygroup/widget.php4
-rw-r--r--app/views/course/timesrooms/_regularEvents.php2
-rw-r--r--app/views/course/timesrooms/_roomRequest.php2
-rw-r--r--app/views/course/timesrooms/editDate.php2
-rw-r--r--app/views/course/topics/edit.php8
-rw-r--r--app/views/course/topics/index.php8
-rw-r--r--app/views/course/wiki/ask_deleting.php4
-rw-r--r--app/views/course/wiki/blame.php4
-rw-r--r--app/views/course/wiki/history.php8
-rw-r--r--app/views/course/wiki/import.php4
-rw-r--r--app/views/course/wiki/newpages.php2
-rw-r--r--app/views/course/wiki/search.php2
-rw-r--r--app/views/event_log/show.php2
-rw-r--r--app/views/fachabschluss/abschluesse/details.php2
-rw-r--r--app/views/fachabschluss/abschluesse/index.php4
-rw-r--r--app/views/fachabschluss/faecher/details.php2
-rw-r--r--app/views/fachabschluss/faecher/details_fachbereich.php2
-rw-r--r--app/views/fachabschluss/faecher/fach.php2
-rw-r--r--app/views/fachabschluss/faecher/index.php4
-rw-r--r--app/views/fachabschluss/kategorien/index.php4
-rw-r--r--app/views/file/_terms_of_use_select.php6
-rw-r--r--app/views/file/add_files_window.php18
-rw-r--r--app/views/file/add_from_library.php6
-rw-r--r--app/views/file/choose_file.php10
-rw-r--r--app/views/file/choose_file_from_course.php2
-rw-r--r--app/views/file/choose_folder.php10
-rw-r--r--app/views/file/new_edit_folder_form.php6
-rw-r--r--app/views/file/oer_post_upload.php18
-rw-r--r--app/views/file/suggest_oer.php2
-rw-r--r--app/views/file/unzipquestion.php2
-rw-r--r--app/views/file/upload_window.php6
-rw-r--r--app/views/files/_fileref_tr.php8
-rw-r--r--app/views/files/_folder_tr.php2
-rw-r--r--app/views/files/configure.php2
-rw-r--r--app/views/files_dashboard/_input-group-search.php2
-rw-r--r--app/views/files_dashboard/_search_tr.php8
-rw-r--r--app/views/help_content/admin_overview.php4
-rw-r--r--app/views/institute/extern/new.php2
-rw-r--r--app/views/login/index.php4
-rw-r--r--app/views/lti/_link_user_info.php4
-rw-r--r--app/views/lti/_tool_info.php6
-rw-r--r--app/views/lvgruppen/lvgruppen/details.php4
-rw-r--r--app/views/materialien/files/add_dokument.php14
-rw-r--r--app/views/materialien/files/index.php4
-rw-r--r--app/views/messages/_message_row.php4
-rw-r--r--app/views/messages/overview.php10
-rw-r--r--app/views/messages/read.php10
-rw-r--r--app/views/messages/write.php26
-rw-r--r--app/views/module/module/modul.php8
-rw-r--r--app/views/module/module/module.php4
-rw-r--r--app/views/module/module/modulteil.php2
-rw-r--r--app/views/multipersonsearch/js_form.php4
-rw-r--r--app/views/my_courses/_deputy_bosses.php6
-rw-r--r--app/views/my_courses/archive.php14
-rw-r--r--app/views/my_courses/waiting_list.php6
-rw-r--r--app/views/my_ilias_accounts/my_courses.php6
-rw-r--r--app/views/my_institutes/index.php4
-rw-r--r--app/views/my_studygroups/_course.php8
-rw-r--r--app/views/news/display.php10
-rw-r--r--app/views/oer/admin/hosts.php10
-rw-r--r--app/views/oer/embed/_link.php2
-rw-r--r--app/views/oer/embed/standard.php2
-rw-r--r--app/views/oer/market/_details_file.php4
-rw-r--r--app/views/oer/market/_material_short.php2
-rw-r--r--app/views/oer/market/add_to_course.php2
-rw-r--r--app/views/oer/market/add_to_course_select_class.php2
-rw-r--r--app/views/oer/market/details.php24
-rw-r--r--app/views/oer/market/discussion.php2
-rw-r--r--app/views/oer/mymaterial/_material_list.php22
-rw-r--r--app/views/oer/mymaterial/edit.php4
-rw-r--r--app/views/privacy/landing.php2
-rw-r--r--app/views/profile_modules/index.php2
-rw-r--r--app/views/public_courses/index.php2
-rw-r--r--app/views/questionnaire/_answer_description_container.php2
-rw-r--r--app/views/questionnaire/_overview_questionnaire.php2
-rw-r--r--app/views/questionnaire/_question.php16
-rw-r--r--app/views/questionnaire/_widget_questionnaire.php4
-rw-r--r--app/views/questionnaire/add_to_context.php6
-rw-r--r--app/views/questionnaire/context.php12
-rw-r--r--app/views/questionnaire/question_types/automated_data/_evaluation_part.php2
-rw-r--r--app/views/questionnaire/question_types/likert/likert_evaluation.php2
-rw-r--r--app/views/questionnaire/question_types/rangescale/rangescale_evaluation.php2
-rw-r--r--app/views/questionnaire/question_types/vote/vote_evaluation.php2
-rw-r--r--app/views/questionnaire/widget.php10
-rw-r--r--app/views/resources/_common/_resource_tr.php2
-rw-r--r--app/views/resources/admin/properties.php2
-rw-r--r--app/views/resources/admin/user_permissions.php10
-rw-r--r--app/views/resources/booking/_add_edit_form.php16
-rw-r--r--app/views/resources/booking/index.php4
-rw-r--r--app/views/resources/building/index.php2
-rw-r--r--app/views/resources/category/_add_edit_form.php2
-rw-r--r--app/views/resources/category/details.php2
-rw-r--r--app/views/resources/location/index.php2
-rw-r--r--app/views/resources/messages/index.php4
-rw-r--r--app/views/resources/resource/_standard_properties_display_part.php4
-rw-r--r--app/views/resources/resource/files.php2
-rw-r--r--app/views/resources/room_request/overview.php2
-rw-r--r--app/views/resources/room_request/resolve.php2
-rw-r--r--app/views/resources/room_request/resolve_room_tr.php16
-rw-r--r--app/views/room_management/overview/index.php2
-rw-r--r--app/views/room_management/planning/copy_bookings.php2
-rw-r--r--app/views/score/index.php10
-rw-r--r--app/views/search/globalsearch/index.php10
-rw-r--r--app/views/search/module/_drill_down_list.php4
-rw-r--r--app/views/search/module/_modul.php2
-rw-r--r--app/views/search/stgtable/index.php2
-rw-r--r--app/views/search/studiengaenge/mehrfach.php4
-rw-r--r--app/views/search/studiengaenge/verlauf.php2
-rw-r--r--app/views/settings/categories.php12
-rw-r--r--app/views/settings/messaging.php2
-rw-r--r--app/views/settings/statusgruppen/index.php8
-rw-r--r--app/views/settings/statusgruppen/modify.php4
-rw-r--r--app/views/settings/statusgruppen/modify_institute.php2
-rw-r--r--app/views/settings/userdomains.php2
-rw-r--r--app/views/shared/filter.php2
-rw-r--r--app/views/shared/form_dokumente.php6
-rw-r--r--app/views/shared/info_search.php2
-rw-r--r--app/views/shared/inst_chooser.php25
-rw-r--r--app/views/shared/language_chooser.php2
-rw-r--r--app/views/shared/version/_versionmodule.php2
-rw-r--r--app/views/siteinfo/markup/uniContact.php2
-rw-r--r--app/views/start/_widget.php6
-rw-r--r--app/views/studiengaenge/fachbereichestgteile/index.php2
-rw-r--r--app/views/studiengaenge/faecher/index.php2
-rw-r--r--app/views/studiengaenge/informationen/degree.php2
-rw-r--r--app/views/studiengaenge/informationen/index.php2
-rw-r--r--app/views/studiengaenge/stgteilbezeichnungen/index.php2
-rw-r--r--app/views/studiengaenge/studiengaenge/aufbaustg_table.php2
-rw-r--r--app/views/studiengaenge/studiengaenge/studiengaenge.php2
-rw-r--r--app/views/studiengaenge/studiengaenge/studiengang.php4
-rw-r--r--app/views/studiengaenge/studiengangteile/details_grouped.php2
-rw-r--r--app/views/studiengaenge/studiengangteile/stgteil.php2
-rw-r--r--app/views/studiengaenge/versionen/details_abschnitt.php4
-rw-r--r--app/views/studiengaenge/versionen/modulteile.php2
-rw-r--r--app/views/studiengaenge/versionen/versionen.php4
-rw-r--r--app/views/userfilter/filter/configure.php2
-rw-r--r--app/views/vips/exam_mode/index.php2
-rw-r--r--app/views/vips/exercises/ClozeTask/correct.php8
-rw-r--r--app/views/vips/exercises/ClozeTask/print.php6
-rw-r--r--app/views/vips/exercises/MatchingTask/correct.php8
-rw-r--r--app/views/vips/exercises/MatchingTask/print.php8
-rw-r--r--app/views/vips/exercises/MatrixChoiceTask/correct.php4
-rw-r--r--app/views/vips/exercises/MatrixChoiceTask/print.php4
-rw-r--r--app/views/vips/exercises/MultipleChoiceTask/correct.php4
-rw-r--r--app/views/vips/exercises/MultipleChoiceTask/print.php4
-rw-r--r--app/views/vips/exercises/SequenceTask/correct.php8
-rw-r--r--app/views/vips/exercises/SequenceTask/print.php8
-rw-r--r--app/views/vips/exercises/SingleChoiceTask/correct.php4
-rw-r--r--app/views/vips/exercises/SingleChoiceTask/print.php4
-rw-r--r--app/views/vips/exercises/TextLineTask/correct.php8
-rw-r--r--app/views/vips/exercises/TextLineTask/print.php6
-rw-r--r--app/views/vips/exercises/TextTask/correct.php2
-rw-r--r--app/views/vips/exercises/TextTask/solve.php6
-rw-r--r--app/views/vips/sheets/add_exercise_dialog.php10
-rw-r--r--app/views/vips/sheets/content_bar_icons.php8
-rw-r--r--app/views/vips/sheets/copy_assignment_dialog.php2
-rw-r--r--app/views/vips/sheets/copy_exercise_dialog.php2
-rw-r--r--app/views/vips/sheets/edit_assignment.php8
-rw-r--r--app/views/vips/sheets/edit_exercise.php8
-rw-r--r--app/views/vips/sheets/show_assignment.php8
-rw-r--r--app/views/vips/sheets/show_exercise_link.php2
-rw-r--r--app/views/vips/solutions/assignment_solutions.php8
-rw-r--r--app/views/vips/solutions/assignments_list.php4
-rw-r--r--app/views/vips/solutions/edit_solution.php20
-rw-r--r--app/views/vips/solutions/feedback_files_table.php2
-rw-r--r--app/views/vips/solutions/student_assignment_solutions.php4
-rw-r--r--db/migrations/6.1.13_add_themes_config.php57
-rw-r--r--db/migrations/6.1.14_add_themes_table.php76
-rw-r--r--lib/admissionrules/coursememberadmission/templates/info.php2
-rw-r--r--lib/classes/Icon.php100
-rw-r--r--lib/classes/JsonApi/RouteMap.php10
-rw-r--r--lib/classes/JsonApi/Routes/Themes/Authority.php32
-rw-r--r--lib/classes/JsonApi/Routes/Themes/ThemesCreate.php55
-rw-r--r--lib/classes/JsonApi/Routes/Themes/ThemesDelete.php28
-rw-r--r--lib/classes/JsonApi/Routes/Themes/ThemesIndex.php29
-rw-r--r--lib/classes/JsonApi/Routes/Themes/ThemesShow.php26
-rw-r--r--lib/classes/JsonApi/Routes/Themes/ThemesUpdate.php86
-rw-r--r--lib/classes/JsonApi/SchemaMap.php1
-rw-r--r--lib/classes/JsonApi/Schemas/Theme.php62
-rw-r--r--lib/classes/PageLayout.php27
-rw-r--r--lib/classes/forms/Link.php2
-rw-r--r--lib/classes/globalsearch/GlobalSearchCourses.php6
-rw-r--r--lib/classes/globalsearch/GlobalSearchStudygroups.php6
-rw-r--r--lib/classes/sidebar/CourseManagementSelectWidget.php2
-rw-r--r--lib/classes/sidebar/LinkElement.php35
-rw-r--r--lib/ilias_interface/IliasModule.php2
-rw-r--r--lib/models/OERReview.php10
-rw-r--r--lib/models/Theme.php95
-rw-r--r--lib/models/resources/ResourcePropertyDefinition.php2
-rw-r--r--lib/navigation/AdminNavigation.php9
-rw-r--r--lib/navigation/Navigation.php2
-rw-r--r--lib/statusgruppe.inc.php2
-rw-r--r--package-lock.json3540
-rw-r--r--package.json1
-rw-r--r--public/assets/stylesheets/theme.php37
-rw-r--r--resources/assets/javascripts/bootstrap/inline-editing.js48
-rw-r--r--resources/assets/javascripts/entry-base.js1
-rw-r--r--resources/assets/javascripts/init.js2
-rw-r--r--resources/assets/javascripts/lib/course_wizard.js94
-rw-r--r--resources/assets/javascripts/lib/fullcalendar.js22
-rw-r--r--resources/assets/javascripts/lib/icon-loader.ts97
-rw-r--r--resources/assets/javascripts/lib/inline-editing.js138
-rw-r--r--resources/assets/javascripts/lib/members.js15
-rw-r--r--resources/assets/javascripts/mvv.js6
-rw-r--r--resources/assets/javascripts/mvv_course_wizard.js8
-rw-r--r--resources/assets/stylesheets/fullcalendar.scss17
-rw-r--r--resources/assets/stylesheets/highcontrast.scss6
-rw-r--r--resources/assets/stylesheets/mixins/colors.scss56
-rw-r--r--resources/assets/stylesheets/mixins/misc.scss55
-rw-r--r--resources/assets/stylesheets/mixins/studip.scss22
-rw-r--r--resources/assets/stylesheets/print.scss6
-rw-r--r--resources/assets/stylesheets/scss/actionmenu.scss22
-rw-r--r--resources/assets/stylesheets/scss/admin-courses.scss34
-rw-r--r--resources/assets/stylesheets/scss/admin.scss29
-rw-r--r--resources/assets/stylesheets/scss/article.scss7
-rw-r--r--resources/assets/stylesheets/scss/buttons.scss104
-rw-r--r--resources/assets/stylesheets/scss/calendar.scss18
-rw-r--r--resources/assets/stylesheets/scss/colorpicker.scss99
-rw-r--r--resources/assets/stylesheets/scss/contentbar.scss14
-rw-r--r--resources/assets/stylesheets/scss/contents.scss20
-rw-r--r--resources/assets/stylesheets/scss/courseware.scss10
-rw-r--r--resources/assets/stylesheets/scss/courseware/blockadder.scss86
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/audio.scss18
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/biography.scss12
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/blubber.scss12
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/canvas.scss87
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/code.scss12
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/confirm.scss2
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/default-block.scss30
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/dialog-cards.scss43
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/document.scss14
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/files.scss96
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/gallery.scss20
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/headline.scss161
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/iframe.scss4
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/keypoint.scss4
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/link.scss34
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/lti.scss8
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/table-of-contents.scss14
-rw-r--r--resources/assets/stylesheets/scss/courseware/blocks/timeline.scss59
-rw-r--r--resources/assets/stylesheets/scss/courseware/comments.scss6
-rw-r--r--resources/assets/stylesheets/scss/courseware/containers/accordion.scss2
-rw-r--r--resources/assets/stylesheets/scss/courseware/containers/default-container.scss10
-rw-r--r--resources/assets/stylesheets/scss/courseware/containers/list.scss2
-rw-r--r--resources/assets/stylesheets/scss/courseware/containers/tabs.scss2
-rw-r--r--resources/assets/stylesheets/scss/courseware/dashboard.scss2
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/call-to-action.scss9
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/collapsible.scss14
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/companion.scss26
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/import-zip.scss4
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/progress.scss16
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/radioset.scss14
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/ribbon.scss102
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/tabs.scss48
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/tile.scss20
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/tree-units.scss6
-rw-r--r--resources/assets/stylesheets/scss/courseware/layouts/tree.scss52
-rw-r--r--resources/assets/stylesheets/scss/courseware/shelf.scss6
-rw-r--r--resources/assets/stylesheets/scss/courseware/sortable.scss8
-rw-r--r--resources/assets/stylesheets/scss/courseware/structural-element.scss18
-rw-r--r--resources/assets/stylesheets/scss/courseware/tasks.scss12
-rw-r--r--resources/assets/stylesheets/scss/courseware/toolbar.scss24
-rw-r--r--resources/assets/stylesheets/scss/courseware/variables.scss19
-rw-r--r--resources/assets/stylesheets/scss/courseware/widgets.scss62
-rw-r--r--resources/assets/stylesheets/scss/courseware/wizards.scss17
-rw-r--r--resources/assets/stylesheets/scss/css_tree.scss3
-rw-r--r--resources/assets/stylesheets/scss/dashboard.scss8
-rw-r--r--resources/assets/stylesheets/scss/dialog.scss88
-rw-r--r--resources/assets/stylesheets/scss/documents.scss6
-rw-r--r--resources/assets/stylesheets/scss/files.scss20
-rw-r--r--resources/assets/stylesheets/scss/forms.scss28
-rw-r--r--resources/assets/stylesheets/scss/forum.scss102
-rw-r--r--resources/assets/stylesheets/scss/fullscreen.scss4
-rw-r--r--resources/assets/stylesheets/scss/globalsearch.scss24
-rw-r--r--resources/assets/stylesheets/scss/header.scss26
-rw-r--r--resources/assets/stylesheets/scss/helpbar.scss19
-rw-r--r--resources/assets/stylesheets/scss/icons.scss26
-rw-r--r--resources/assets/stylesheets/scss/index.scss9
-rw-r--r--resources/assets/stylesheets/scss/jquery-ui/custom.scss26
-rw-r--r--resources/assets/stylesheets/scss/jquery-ui/studip.scss9
-rw-r--r--resources/assets/stylesheets/scss/layouts.scss2
-rw-r--r--resources/assets/stylesheets/scss/links.scss18
-rw-r--r--resources/assets/stylesheets/scss/messagebox.scss77
-rw-r--r--resources/assets/stylesheets/scss/messages.scss37
-rw-r--r--resources/assets/stylesheets/scss/mvv.scss4
-rw-r--r--resources/assets/stylesheets/scss/my_courses.scss24
-rw-r--r--resources/assets/stylesheets/scss/navigation-hoverborder.scss10
-rw-r--r--resources/assets/stylesheets/scss/navigation.scss26
-rw-r--r--resources/assets/stylesheets/scss/oer.scss7
-rw-r--r--resources/assets/stylesheets/scss/opengraph.scss16
-rw-r--r--resources/assets/stylesheets/scss/pagination.scss9
-rw-r--r--resources/assets/stylesheets/scss/personal-notifications.scss43
-rw-r--r--resources/assets/stylesheets/scss/progress_indicator.scss3
-rw-r--r--resources/assets/stylesheets/scss/questionnaire.scss4
-rw-r--r--resources/assets/stylesheets/scss/quicksearch.scss19
-rw-r--r--resources/assets/stylesheets/scss/raumzeit.scss21
-rw-r--r--resources/assets/stylesheets/scss/report.scss94
-rw-r--r--resources/assets/stylesheets/scss/resources.scss14
-rw-r--r--resources/assets/stylesheets/scss/responsive.scss4
-rw-r--r--resources/assets/stylesheets/scss/root.scss48
-rw-r--r--resources/assets/stylesheets/scss/scroll-to-top.scss10
-rw-r--r--resources/assets/stylesheets/scss/search.scss18
-rw-r--r--resources/assets/stylesheets/scss/select.scss9
-rw-r--r--resources/assets/stylesheets/scss/selects.scss27
-rw-r--r--resources/assets/stylesheets/scss/sidebar.scss90
-rw-r--r--resources/assets/stylesheets/scss/start.scss2
-rw-r--r--resources/assets/stylesheets/scss/studip-cke-ui.scss100
-rw-r--r--resources/assets/stylesheets/scss/studip-selection.scss18
-rw-r--r--resources/assets/stylesheets/scss/system-notifications.scss44
-rw-r--r--resources/assets/stylesheets/scss/table_of_contents.scss10
-rw-r--r--resources/assets/stylesheets/scss/tables.scss106
-rw-r--r--resources/assets/stylesheets/scss/tabs.scss16
-rw-r--r--resources/assets/stylesheets/scss/themes.scss249
-rw-r--r--resources/assets/stylesheets/scss/tree.scss11
-rw-r--r--resources/assets/stylesheets/scss/typography.scss4
-rw-r--r--resources/assets/stylesheets/scss/variables.scss24
-rw-r--r--resources/assets/stylesheets/scss/vips.scss26
-rw-r--r--resources/assets/stylesheets/scss/wiki.scss17
-rw-r--r--resources/assets/stylesheets/scss/wizard.scss34
-rw-r--r--resources/assets/stylesheets/studip.scss31
-rw-r--r--resources/vue/apps/ThemeSettings.vue52
-rw-r--r--resources/vue/components/ContentModulesEditTiles.vue22
-rw-r--r--resources/vue/components/ContentmodulesEditTable.vue15
-rw-r--r--resources/vue/components/FilesTable.vue3
-rw-r--r--resources/vue/components/StudipDialog.vue75
-rw-r--r--resources/vue/components/StudipFileChooser.vue2
-rw-r--r--resources/vue/components/StudipIcon.vue144
-rw-r--r--resources/vue/components/StudipModalLeave.vue94
-rw-r--r--resources/vue/components/StudipSquareButton.vue31
-rw-r--r--resources/vue/components/avatar/AvatarApp.vue7
-rw-r--r--resources/vue/components/colorPicker/ColorPicker.vue92
-rw-r--r--resources/vue/components/colorPicker/colorPalette.ts13
-rw-r--r--resources/vue/components/courseware/blocks/CoursewareCanvasBlock.vue1
-rw-r--r--resources/vue/components/courseware/blocks/CoursewareHeadlineBlock.vue97
-rw-r--r--resources/vue/components/courseware/blocks/CoursewareKeyPointBlock.vue13
-rw-r--r--resources/vue/components/courseware/structural-element/CoursewareRootContent.vue2
-rw-r--r--resources/vue/components/courseware/structural-element/CoursewareStructuralElement.vue6
-rw-r--r--resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogAddChooser.vue11
-rw-r--r--resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogExportChooser.vue11
-rw-r--r--resources/vue/components/courseware/structural-element/CoursewareToolsContents.vue8
-rw-r--r--resources/vue/components/courseware/structural-element/CoursewareToolsUnitsItem.vue4
-rw-r--r--resources/vue/components/courseware/structural-element/CoursewareTreeItemAdder.vue17
-rw-r--r--resources/vue/components/courseware/tasks/CoursewareDashboardTasks.vue8
-rw-r--r--resources/vue/components/courseware/tasks/TaskGroup.vue6
-rw-r--r--resources/vue/components/courseware/tasks/TaskGroupTaskItem.vue2
-rw-r--r--resources/vue/components/courseware/toolbar/CoursewareContainerAdderItem.vue14
-rw-r--r--resources/vue/components/courseware/toolbar/CoursewareToolbarBlocks.vue2
-rw-r--r--resources/vue/components/courseware/unit/CoursewareShelfDialogAddChooser.vue11
-rw-r--r--resources/vue/components/courseware/widgets/CoursewareExportWidget.vue95
-rw-r--r--resources/vue/components/courseware/widgets/CoursewareImportWidget.vue60
-rw-r--r--resources/vue/components/courseware/widgets/CoursewareTasksActionWidget.vue25
-rw-r--r--resources/vue/components/file-chooser/FileChooserBox.vue14
-rw-r--r--resources/vue/components/file-chooser/FileChooserBreadcrumb.vue6
-rw-r--r--resources/vue/components/file-chooser/FileChooserDialog.vue34
-rw-r--r--resources/vue/components/file-chooser/FileChooserToolbar.vue11
-rw-r--r--resources/vue/components/file-chooser/FileChooserTree.vue77
-rw-r--r--resources/vue/components/my-courses/ColorPicker.vue9
-rw-r--r--resources/vue/components/responsive/ResponsiveContentBar.vue6
-rw-r--r--resources/vue/components/theme/ThemeAddCopyDialog.vue73
-rw-r--r--resources/vue/components/theme/ThemeAddDialog.vue60
-rw-r--r--resources/vue/components/theme/ThemeAddImportDialog.vue125
-rw-r--r--resources/vue/components/theme/ThemeDeleteDialog.vue14
-rw-r--r--resources/vue/components/theme/ThemeEditor.vue308
-rw-r--r--resources/vue/components/theme/ThemeExport.vue44
-rw-r--r--resources/vue/components/theme/ThemeList.vue91
-rw-r--r--resources/vue/mixins/courseware/colors.js16
-rw-r--r--resources/vue/store/theme-settings.module.js124
-rw-r--r--templates/admin/topLinks.php12
-rw-r--r--templates/blubber/coursegroup_context.php4
-rw-r--r--templates/blubber/disable-notifications.php8
-rw-r--r--templates/blubber/global_context.php6
-rw-r--r--templates/blubber/private_context.php18
-rw-r--r--templates/blubber/public_context.php6
-rw-r--r--templates/contact/header-groups.php2
-rw-r--r--templates/contentbar/contentbar.php4
-rw-r--r--templates/forms/form.php2
-rw-r--r--templates/header-navigation-item.php2
-rw-r--r--templates/header.php12
-rw-r--r--templates/helpbar/helpbar.php12
-rw-r--r--templates/layouts/base.php4
-rw-r--r--templates/mail/notification_html.php2
-rw-r--r--templates/multipersonsearch/link.php2
-rw-r--r--templates/online/user.php18
-rw-r--r--templates/personal_notifications/notification.php4
-rw-r--r--templates/quicksearch/inputfield.php2
-rw-r--r--templates/shared/action-menu-single.php4
-rw-r--r--templates/shared/action-menu.php4
-rw-r--r--templates/shared/content_box.php2
-rw-r--r--templates/shared/index_box.php4
-rw-r--r--templates/sidebar/list-widget.php7
-rw-r--r--templates/sidebar/resource-tree-widget.php4
-rw-r--r--templates/sidebar/resources_individual_booking_plan_sidebar.php2
-rw-r--r--templates/sidebar/room-clipboard-item.php4
-rw-r--r--templates/sidebar/room-search-criteria-templates.php8
-rw-r--r--templates/sidebar/room-search-tree-widget.php4
-rw-r--r--templates/start/contents.php2
-rw-r--r--templates/tabs.php6
-rw-r--r--templates/toc/_toc-item-list.php2
-rw-r--r--templates/toc/generic-toc-list.php2
-rw-r--r--templates/userfilter/display.php2
-rw-r--r--tests/unit/lib/classes/IconClassTest.php195
471 files changed, 5689 insertions, 6101 deletions
diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index 7765a2d..16e735c 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -634,7 +634,7 @@ class Admin_CoursesController extends AuthenticatedController
$d['name'] = '<a href="'.URLHelper::getLink('dispatch.php/course/basicdata/view', ['cid' => $course->id]).'">'
. htmlReady($course->name)
.'</a> '
- .'<a href="'.URLHelper::getLink('dispatch.php/course/details/index/'. $course->id).'" data-dialog><button class="undecorated">'.Icon::create('info-circle', Icon::ROLE_INACTIVE)->asImg($params).'</button></a> '
+ .'<a href="'.URLHelper::getLink('dispatch.php/course/details/index/'. $course->id).'" data-dialog><button class="undecorated">'.Icon::create('info-circle', Icon::ROLE_INACTIVE)->asSvg($params).'</button></a> '
.(!$course->visible ? _('(versteckt)') : '');
}
if (in_array('number', $activated_fields)) {
@@ -705,7 +705,7 @@ class Admin_CoursesController extends AuthenticatedController
foreach ($icons as $icon) {
$d['contents'] .= '<li class="my-courses-navigation-item '. ($icon->getImage()->signalsAttention() ? 'my-courses-navigation-important' : '').'">
<a href="'. URLHelper::getLink('dispatch.php/course/go', ['to' => $course->id, 'redirect_to' => $icon->getURL()]).'"'. ($icon->getTitle() ? ' title="'.htmlReady($icon->getTitle()).'"' : '') .'>
- '. $icon->getImage()->asImg() .'
+ '. $icon->getImage()->asSvg() .'
</a>
</li>';
}
diff --git a/app/controllers/admin/layout.php b/app/controllers/admin/layout.php
new file mode 100644
index 0000000..bd91497
--- /dev/null
+++ b/app/controllers/admin/layout.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * admin/layout.php - Layout for Stud.IP
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * @author Ron Lucke <lucke@elan-ev.de>
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
+ * @category Stud.IP
+ * @package admin
+ * @since 6.1
+ */
+
+class Admin_LayoutController extends AuthenticatedController
+{
+ public function before_filter(&$action, &$args)
+ {
+ parent::before_filter($action, $args);
+ $GLOBALS['perm']->check('root');
+ PageLayout::setTitle(_('Darstellung'));
+ Navigation::activateItem('/admin/locations/layout');
+ }
+
+ public function index_action()
+ {
+ $this->render_vue_app(
+ Studip\VueApp::create('ThemeSettings')
+ ->withVuexStore(
+ 'theme-settings.module.js',
+ 'theme-settings-module',
+ [
+ 'setUserId' => User::findCurrent()->id,
+ ]
+ )
+ );
+ }
+}
diff --git a/app/controllers/course/contentmodules.php b/app/controllers/course/contentmodules.php
index bbda1b3..66fa2c5 100644
--- a/app/controllers/course/contentmodules.php
+++ b/app/controllers/course/contentmodules.php
@@ -300,7 +300,6 @@ class Course_ContentmodulesController extends AuthenticatedController
$visibility = $tool ? $tool->getVisibilityPermission() : 'nobody';
$metadata = $plugin->getMetadata();
- $icon = $this->getIconFromMetadata($metadata, $plugin);
$list[$plugin_id] = [
'id' => $plugin_id,
'moduleclass' => get_class($plugin),
@@ -309,7 +308,7 @@ class Course_ContentmodulesController extends AuthenticatedController
'displayname' => $displayname,
'visibility' => $visibility,
'active' => (bool) $tool,
- 'icon' => $icon ? $icon->asImagePath() : null,
+ 'icon' => $this->getIconFromMetadata($metadata, $plugin),
'summary' => $metadata['summary'] ?? null,
'mandatory' => $this->sem_class->isModuleMandatory(get_class($plugin)),
'highlighted' => (bool) $plugin->isHighlighted(),
diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php
index 22c6b1e..adeb4a8 100644
--- a/app/controllers/course/members.php
+++ b/app/controllers/course/members.php
@@ -205,7 +205,7 @@ class Course_MembersController extends AuthenticatedController
$results = SimpleCollection::createFromArray($members)->pluck('email');
if (!empty($results)) {
- return sprintf('<a href="mailto:%s">%s</a>', htmlReady(join(',', $results)), Icon::create('mail', attributes: ['title' => sprintf('E-Mail an alle %s versenden',$textStatus)])->asImg());
+ return sprintf('<a href="mailto:%s">%s</a>', htmlReady(join(',', $results)), Icon::create('mail', attributes: ['title' => sprintf('E-Mail an alle %s versenden',$textStatus)])->asSvg());
} else {
return null;
}
diff --git a/app/controllers/course/room_requests.php b/app/controllers/course/room_requests.php
index df21a2a..85d7a70 100644
--- a/app/controllers/course/room_requests.php
+++ b/app/controllers/course/room_requests.php
@@ -625,7 +625,7 @@ class Course_RoomRequestsController extends AuthenticatedController
}
if ($request_dates_booked === 0) {
$this->available_room_icons[$room->id] =
- Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg(
+ Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asSvg(
[
'class' => 'text-bottom',
'title' => _('freier Raum')
@@ -633,7 +633,7 @@ class Course_RoomRequestsController extends AuthenticatedController
);
$available_rooms[] = $room;
} elseif ($request_dates_booked < $request_time_intervals) {
- $this->available_room_icons[$room->id] = Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asImg([
+ $this->available_room_icons[$room->id] = Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asSvg([
'class' => 'text-bottom',
'title' => _('teilweise belegter Raum')
]);
diff --git a/app/controllers/course/wiki.php b/app/controllers/course/wiki.php
index 81d933e..1dad1d0 100644
--- a/app/controllers/course/wiki.php
+++ b/app/controllers/course/wiki.php
@@ -59,8 +59,8 @@ class Course_WikiController extends AuthenticatedController
'<a href="%s">%s</a>',
URLHelper::getLink('dispatch.php/course/wiki/edit_toc'),
$toc_content_empty
- ? Icon::create('add')->asImg(['title' => _('Erstellen')])
- : Icon::create('edit')->asImg(['title' => _('Bearbeiten')])
+ ? Icon::create('add')->asSvg(['title' => _('Erstellen')])
+ : Icon::create('edit')->asSvg(['title' => _('Bearbeiten')])
);
$widget->setExtra($extra);
}
diff --git a/app/controllers/materialien/files.php b/app/controllers/materialien/files.php
index a8d4823..57aed1b 100644
--- a/app/controllers/materialien/files.php
+++ b/app/controllers/materialien/files.php
@@ -424,7 +424,7 @@ class Materialien_FilesController extends MVVController
}
$output['document_id'] = $file->id;
- $output['icon'] = $file->getIcon(Icon::ROLE_CLICKABLE)->asImg(['class' => 'text-bottom']);
+ $output['icon'] = $file->getIcon(Icon::ROLE_CLICKABLE)->asSvg(['class' => 'text-bottom']);
$this->render_json($output);
}
diff --git a/app/controllers/messages.php b/app/controllers/messages.php
index 65a5cea..3c374b2 100644
--- a/app/controllers/messages.php
+++ b/app/controllers/messages.php
@@ -198,7 +198,7 @@ class MessagesController extends AuthenticatedController {
if ($this->default_message->attachment_folder) {
foreach ($this->default_message->attachment_folder->getTypedFolder()->getFiles() as $filetype) {
$this->default_attachments[] = [
- 'icon' => $filetype->getIcon('info')->asImg(['class' => 'text-bottom']),
+ 'icon' => $filetype->getIcon('info')->asSvg(['class' => 'text-bottom']),
'name' => $filetype->getFilename(),
'document_id' => $filetype->getId(),
'size' => $filetype->getSize()
@@ -507,7 +507,7 @@ class MessagesController extends AuthenticatedController {
if ($new_attachment_file_ref->store()) {
$icon = FileManager::getIconForFileRef($new_attachment_file_ref);
$this->default_attachments[] = [
- 'icon' => $icon->asImg(['class' => 'text-bottom']),
+ 'icon' => $icon->asSvg(['class' => 'text-bottom']),
'name' => $new_attachment_file_ref->name,
'document_id' => $new_attachment_file_ref->id,
'size' => relsize($new_attachment_file_ref->size, false)
@@ -876,7 +876,7 @@ class MessagesController extends AuthenticatedController {
$output['document_id'] = $uploaded['files'][0]->getId();
- $output['icon'] = $uploaded['files'][0]->getIcon(Icon::ROLE_CLICKABLE)->asImg(['class' => 'text-bottom']);
+ $output['icon'] = $uploaded['files'][0]->getIcon(Icon::ROLE_CLICKABLE)->asSvg(['class' => 'text-bottom']);
$this->render_json($output);
}
@@ -975,7 +975,7 @@ class MessagesController extends AuthenticatedController {
if ($action === 'overview') {
if (MessageUser::countBySQL("snd_rec = 'rec' AND user_id = :id AND deleted != 1 LIMIT 1", ['id' => $GLOBALS['user']->id])) {
$message = sprintf(
- _("Möchten Sie wirklich alle Nachrichten im Posteingang löschen? Es werden %u Nachrichten endgültig gelöscht."),
+ _('Möchten Sie wirklich alle Nachrichten im Posteingang löschen? Es werden %u Nachrichten endgültig gelöscht.'),
MessageUser::countBySQL("snd_rec = 'rec' AND user_id = :id AND deleted != 1", ['id' => $GLOBALS['user']->id])
);
$actions->addLink(
diff --git a/app/controllers/oer/admin.php b/app/controllers/oer/admin.php
index c394556..3404e54 100644
--- a/app/controllers/oer/admin.php
+++ b/app/controllers/oer/admin.php
@@ -129,7 +129,7 @@ class Oer_AdminController extends AuthenticatedController
}
$this->render_text((
- Icon::create("checkbox-".(Request::int("active") ? "" : "un")."checked")->asImg()
+ Icon::create("checkbox-".(Request::int("active") ? "" : "un")."checked")->asSvg()
));
}
@@ -144,7 +144,7 @@ class Oer_AdminController extends AuthenticatedController
}
$this->render_text((
- Icon::create("checkbox-".(Request::int("active") ? "" : "un")."checked")->asImg()
+ Icon::create('checkbox-'.(Request::int('active') ? '' : 'un').'checked')->asSvg()
));
}
diff --git a/app/views/admin/autoinsert/index.php b/app/views/admin/autoinsert/index.php
index 33dfdcf..5773537 100644
--- a/app/views/admin/autoinsert/index.php
+++ b/app/views/admin/autoinsert/index.php
@@ -93,7 +93,7 @@
<?= $this->render_partial("admin/autoinsert/_status.php", ['status' => 'autor', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?>
<td class="actions">
<a href="<?= $controller->delete($auto_sem['seminar_id'] ) ?>">
- <?= Icon::create('trash')->asImg([
+ <?= Icon::create('trash')->asSvg([
'title' => _('Veranstaltung entfernen'),
'class' => 'text-top',
]) ?>
diff --git a/app/views/admin/banner/index.php b/app/views/admin/banner/index.php
index 11f9d8e..620f7a5 100644
--- a/app/views/admin/banner/index.php
+++ b/app/views/admin/banner/index.php
@@ -61,16 +61,16 @@
<td><?= $banner->priority ?> (<?= $banner->getViewProbability() ?>)</td>
<td class="actions">
<a class="load-in-new-row" href="<?= $controller->info($banner, ['path' => $banner->banner_path]) ?>">
- <?= Icon::create('info')->asImg(['title' => _('Eigenschaften')]) ?>
+ <?= Icon::create('info')->asSvg(['title' => _('Eigenschaften')]) ?>
</a>
<a href="<?= $controller->edit($banner, ['path' => $banner->banner_path]) ?>" data-dialog="size=auto">
- <?= Icon::create('edit')->asImg(['title' => _('Banner bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Banner bearbeiten')]) ?>
</a>
<a href="<?= $controller->reset($banner) ?>">
- <?= Icon::create('refresh')->asImg(['title' => _('Klicks/Views zurücksetzen')]) ?>
+ <?= Icon::create('refresh')->asSvg(['title' => _('Klicks/Views zurücksetzen')]) ?>
</a>
<a href="<?= $controller->delete($banner) ?>">
- <?= Icon::create('trash')->asImg(['title' => _('Banner löschen')]) ?>
+ <?= Icon::create('trash')->asSvg(['title' => _('Banner löschen')]) ?>
</a>
</td>
</tr>
diff --git a/app/views/admin/configuration/edit_configuration.php b/app/views/admin/configuration/edit_configuration.php
index aa4c574..6d8354f 100644
--- a/app/views/admin/configuration/edit_configuration.php
+++ b/app/views/admin/configuration/edit_configuration.php
@@ -28,9 +28,9 @@
<?= _('Standard') ?>
<? if ($config['is_default'] === '1'): ?>
- <?= Icon::create('checkbox-checked', Icon::ROLE_INFO)->asImg(['title' => _('Ja')]) ?>
+ <?= Icon::create('checkbox-checked', Icon::ROLE_INFO)->asSvg(['title' => _('Ja')]) ?>
<? elseif ($config['is_default'] === '0'): ?>
- <?= Icon::create('checkbox-unchecked', Icon::ROLE_INFO)->asImg(['title' => _('Nein')]) ?>
+ <?= Icon::create('checkbox-unchecked', Icon::ROLE_INFO)->asSvg(['title' => _('Nein')]) ?>
<? elseif ($config['is_default'] === null): ?>
<em>- <?= _('kein Eintrag vorhanden') ?> -</em>
<? endif ?>
diff --git a/app/views/admin/configuration/table-row.php b/app/views/admin/configuration/table-row.php
index a0725a5..3f7ae89 100644
--- a/app/views/admin/configuration/table-row.php
+++ b/app/views/admin/configuration/table-row.php
@@ -37,10 +37,10 @@
<td class="actions">
<? if (!Config::get()->fromEnv($field)): ?>
<a data-dialog="size=auto" href="<?= $controller->link_for($linkchunk, compact('field')) ?>">
- <?= Icon::create('edit')->asImg(['title' => _('Konfigurationsparameter bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Konfigurationsparameter bearbeiten')]) ?>
</a>
<? else: ?>
- <?= Icon::create('ufo', Icon::ROLE_INFO)->asImg([
+ <?= Icon::create('ufo', Icon::ROLE_INFO)->asSvg([
'title' => _('Wert wurde über eine Umgebungsvariable gesetzt und kann an dieser Stelle nicht verändert werden.'),
]) ?>
<? endif; ?>
diff --git a/app/views/admin/course_wizard_steps/edit.php b/app/views/admin/course_wizard_steps/edit.php
index 067ff2e..f25005c 100644
--- a/app/views/admin/course_wizard_steps/edit.php
+++ b/app/views/admin/course_wizard_steps/edit.php
@@ -25,7 +25,7 @@
<? foreach ($availableClasses as $className) : ?>
<li>
<a href="#" onClick="jQuery('input[name=classname]').val('<?= htmlReady($className) ?>');">
- <?= Icon::create('arr_2up', 'info')->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('arr_2up', 'info')->asSvg(['class' => "text-bottom"]) ?>
<?= htmlReady($className) ?>
</a>
</li>
diff --git a/app/views/admin/course_wizard_steps/index.php b/app/views/admin/course_wizard_steps/index.php
index b951e21..d57d7ea 100644
--- a/app/views/admin/course_wizard_steps/index.php
+++ b/app/views/admin/course_wizard_steps/index.php
@@ -15,7 +15,7 @@
<?= _('Vorhandene Schritte im Anlegeassistenten für Veranstaltungen') ?>
<span class="actions">
<a href="<?= $controller->url_for('admin/coursewizardsteps/edit') ?>" data-dialog="size=auto">
- <?= Icon::create('add')->asImg(tooltip2(_('Neuen Schritt hinzufügen'))) ?>
+ <?= Icon::create('add')->asSvg(tooltip2(_('Neuen Schritt hinzufügen'))) ?>
</a>
</span>
</caption>
diff --git a/app/views/admin/courseplanning/nonconform.php b/app/views/admin/courseplanning/nonconform.php
index 08a128a..2ddda05 100644
--- a/app/views/admin/courseplanning/nonconform.php
+++ b/app/views/admin/courseplanning/nonconform.php
@@ -23,7 +23,7 @@
<td>
<?= htmlReady($ncd['name']) ?>
<a href="<?= $controller->link_for('course/details/index/' . $ncd['cid']) ?>" data-dialog="size=auto">
- <?= Icon::create('info-circle')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('info-circle')->asSvg(['class' => 'text-bottom']) ?>
</a>
</td>
<td><?= htmlReady($ncd['start']) ?></td>
diff --git a/app/views/admin/cronjobs/logs/index.php b/app/views/admin/cronjobs/logs/index.php
index d76e153..b1f0195 100644
--- a/app/views/admin/cronjobs/logs/index.php
+++ b/app/views/admin/cronjobs/logs/index.php
@@ -114,19 +114,19 @@ use Studip\Button, Studip\LinkButton;
<td><?= htmlReady($log->schedule->title ?: $log->schedule->task->name) ?></td>
<td>
<? if ($log->duration == -1): ?>
- <?= Icon::create('question', Icon::ROLE_INACTIVE)->asImg(['title' => _('Läuft noch')]) ?>
+ <?= Icon::create('question', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Läuft noch')]) ?>
<? elseif ($log->exception === null): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('Ja')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('Ja')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('Nein')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('Nein')]) ?>
<? endif; ?>
</td>
<td style="text-align: right">
<a data-dialog href="<?= $controller->display($log, $pagination->getCurrentPage()) ?>">
- <?= Icon::create('admin')->asImg(['title' => _('Logeintrag anzeigen')]) ?>
+ <?= Icon::create('admin')->asSvg(['title' => _('Logeintrag anzeigen')]) ?>
</a>
<a href="<?= $controller->delete($log, $pagination->getCurrentPage()) ?>">
- <?= Icon::create('trash')->asImg(['title' => _('Logeintrag löschen')]) ?>
+ <?= Icon::create('trash')->asSvg(['title' => _('Logeintrag löschen')]) ?>
</a>
</td>
</tr>
diff --git a/app/views/admin/cronjobs/schedules/index.php b/app/views/admin/cronjobs/schedules/index.php
index 12180a6..1872ff6 100644
--- a/app/views/admin/cronjobs/schedules/index.php
+++ b/app/views/admin/cronjobs/schedules/index.php
@@ -97,29 +97,29 @@ use Studip\Button, Studip\LinkButton;
<td style="text-align: center;"
data-sort-value="'<?= (int)($schedule->active && $schedule->task->active) ?>'">
<? if (!$schedule->task->active): ?>
- <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE)->asImg(['title' => _('Cronjob kann nicht aktiviert werden, da die zugehörige ' . 'Aufgabe deaktiviert ist.')]) ?>
+ <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Cronjob kann nicht aktiviert werden, da die zugehörige ' . 'Aufgabe deaktiviert ist.')]) ?>
<? elseif ($schedule->active): ?>
<a href="<?= $controller->deactivate($schedule) ?>"
data-behaviour="ajax-toggle">
- <?= Icon::create('checkbox-checked')->asImg(['title' => _('Cronjob deaktivieren')]) ?>
+ <?= Icon::create('checkbox-checked')->asSvg(['title' => _('Cronjob deaktivieren')]) ?>
</a>
<? else: ?>
<a href="<?= $controller->activate($schedule) ?>"
data-behaviour="ajax-toggle">
- <?= Icon::create('checkbox-unchecked')->asImg(['title' => _('Cronjob aktivieren')]) ?>
+ <?= Icon::create('checkbox-unchecked')->asSvg(['title' => _('Cronjob aktivieren')]) ?>
</a>
<? endif; ?>
</td>
<?= $this->render_partial('admin/cronjobs/schedules/periodic-schedule', $schedule->toArray() + ['display' => 'table-cells']) ?>
<td style="text-align: right">
<a data-dialog href="<?= $controller->display($schedule) ?>">
- <?= Icon::create('admin')->asImg(['title' => _('Cronjob anzeigen')]) ?>
+ <?= Icon::create('admin')->asSvg(['title' => _('Cronjob anzeigen')]) ?>
</a>
<a href="<?= $controller->edit($schedule) ?>">
- <?= Icon::create('edit')->asImg(['title' => _('Cronjob bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Cronjob bearbeiten')]) ?>
</a>
<a href="<?= $controller->link_for('admin/cronjobs/logs/schedule', $schedule) ?>">
- <?= Icon::create('log')->asImg(['title' => _('Log anzeigen')]) ?>
+ <?= Icon::create('log')->asSvg(['title' => _('Log anzeigen')]) ?>
</a>
<?= Icon::create('trash')->asInput([
'data-confirm' => _('Wollen Sie den ausgewählten Cronjob wirklich löschen?'),
diff --git a/app/views/admin/cronjobs/tasks/index.php b/app/views/admin/cronjobs/tasks/index.php
index 9f2602d..ab510b0 100644
--- a/app/views/admin/cronjobs/tasks/index.php
+++ b/app/views/admin/cronjobs/tasks/index.php
@@ -50,22 +50,22 @@ use Studip\Button;
<td style="text-align: center;" data-sort-value="'<?= (int) $task->active ?>'">
<? if ($task->active): ?>
<a href="<?= $controller->deactivate($task) ?>" data-behaviour="ajax-toggle">
- <?= Icon::create('checkbox-checked')->asImg(['title' => _('Aufgabe deaktivieren')]) ?>
+ <?= Icon::create('checkbox-checked')->asSvg(['title' => _('Aufgabe deaktivieren')]) ?>
</a>
<? else: ?>
<a href="<?= $controller->activate($task) ?>" data-behaviour="ajax-toggle">
- <?= Icon::create('checkbox-unchecked')->asImg(['title' => _('Aufgabe aktivieren')]) ?>
+ <?= Icon::create('checkbox-unchecked')->asSvg(['title' => _('Aufgabe aktivieren')]) ?>
</a>
<? endif; ?>
</td>
<td style="text-align: right">
<? if ($task->valid): ?>
<a data-dialog href="<?= $controller->execute($task) ?>">
- <?= Icon::create('play')->asImg(['title' => _('Aufgabe ausführen')]) ?>
+ <?= Icon::create('play')->asSvg(['title' => _('Aufgabe ausführen')]) ?>
</a>
<? endif; ?>
<a href="<?= $controller->link_for('admin/cronjobs/logs/task', $task) ?>">
- <?= Icon::create('log')->asImg(['title' => _('Log anzeigen')]) ?>
+ <?= Icon::create('log')->asSvg(['title' => _('Log anzeigen')]) ?>
</a>
<?= Icon::create('trash')->asInput([
'data-confirm' => _('Wollen Sie die ausgewählte Aufgabe wirklich löschen?'),
diff --git a/app/views/admin/datafields/index.php b/app/views/admin/datafields/index.php
index 5d959d7..5441e24 100644
--- a/app/views/admin/datafields/index.php
+++ b/app/views/admin/datafields/index.php
@@ -89,7 +89,7 @@
<td>
<? if (in_array($val->type, words('selectbox selectboxmultiple radio combo'))): ?>
<a data-dialog="size=auto" href="<?= $controller->url_for('admin/datafields/config/'. $val->id) ?>">
- <?= Icon::create('edit')->asImg(['class'=> 'text-top', 'title' => 'Einträge bearbeiten']) ?>
+ <?= Icon::create('edit')->asSvg(['class'=> 'text-top', 'title' => 'Einträge bearbeiten']) ?>
</a>
<? endif; ?>
<span><?= htmlReady($val->type) ?></span>
@@ -131,31 +131,31 @@
<? if ($key === 'user'): ?>
<td>
<? if ($val->system): ?>
- <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asImg() ?>
+ <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asSvg() ?>
<? else: ?>
- <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asImg() ?>
+ <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asSvg() ?>
<? endif; ?>
</td>
<td>
<? if ($val->is_userfilter): ?>
- <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asImg() ?>
+ <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asSvg() ?>
<? else: ?>
- <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asImg() ?>
+ <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asSvg() ?>
<? endif; ?>
</td>
<? elseif ($key === 'sem'): ?>
<td>
<? if ($val->is_required): ?>
- <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asImg() ?>
+ <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asSvg() ?>
<? else: ?>
- <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asImg() ?>
+ <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asSvg() ?>
<? endif; ?>
</td>
<td>
<? if (trim($val->description)): ?>
- <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asImg() ?>
+ <?= Icon::create('checkbox-checked', Icon::ROLE_INACTIVE, ['title' => _('Ja')])->asSvg() ?>
<? else: ?>
- <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asImg() ?>
+ <?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE, ['title' => _('Nein')])->asSvg() ?>
<? endif; ?>
</td>
<? else: ?>
@@ -165,10 +165,10 @@
<td style="text-align: right;"><?= count($val) ?></td>
<td class="actions">
<a href="<?=$controller->url_for('admin/datafields/edit/' . $val->id)?>" data-dialog>
- <?= Icon::create('edit')->asImg(['title' => 'Datenfeld ändern']) ?>
+ <?= Icon::create('edit')->asSvg(['title' => 'Datenfeld ändern']) ?>
</a>
<a href="<?=$controller->url_for('admin/datafields/delete/' . $val->id)?>">
- <?= Icon::create('trash')->asImg(['title' => 'Datenfeld löschen']) ?>
+ <?= Icon::create('trash')->asSvg(['title' => 'Datenfeld löschen']) ?>
</a>
</td>
</tr>
diff --git a/app/views/admin/domain/index.php b/app/views/admin/domain/index.php
index 4b709d7..74c6a2b 100644
--- a/app/views/admin/domain/index.php
+++ b/app/views/admin/domain/index.php
@@ -38,7 +38,7 @@
<td><?= $domain->countCourses() ?></td>
<td class="actions">
<a href="<?= $controller->link_for("admin/domain/edit/{$domain->id}") ?>" data-dialog="size=auto">
- <?= Icon::create('edit')->asImg(tooltip2(_('bearbeiten'))) ?>
+ <?= Icon::create('edit')->asSvg(tooltip2(_('bearbeiten'))) ?>
</a>
<? if ($domain->countUsers() === 0): ?>
<?= Icon::create('trash')->asInput(tooltip2(_('löschen')) + [
@@ -47,7 +47,7 @@
'data-confirm' => _('Wollen Sie die Nutzerdomäne wirklich löschen?')
]) ?>
<? else: ?>
- <?= Icon::create('trash', Icon::ROLE_INACTIVE)->asImg(['title' => _('Domänen, denen noch Personen zugewiesen sind, können nicht gelöscht werden.')]) ?>
+ <?= Icon::create('trash', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Domänen, denen noch Personen zugewiesen sind, können nicht gelöscht werden.')]) ?>
<? endif; ?>
</td>
</tr>
diff --git a/app/views/admin/holidays/index.php b/app/views/admin/holidays/index.php
index 98aa72e..4c523d3 100644
--- a/app/views/admin/holidays/index.php
+++ b/app/views/admin/holidays/index.php
@@ -58,7 +58,7 @@
</td>
<td class="actions">
<a data-dialog="size=auto" href="<?= $controller->url_for('admin/holidays/edit/' . $holiday->id) ?>">
- <?= Icon::create('edit')->asImg(['title' => _('Ferienangaben bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Ferienangaben bearbeiten')]) ?>
</a>
<?= Icon::create('trash')->asInput([
'title' => _('Ferien löschen'),
diff --git a/app/views/admin/ilias_interface/edit_server.php b/app/views/admin/ilias_interface/edit_server.php
index 18c648a..803670a 100644
--- a/app/views/admin/ilias_interface/edit_server.php
+++ b/app/views/admin/ilias_interface/edit_server.php
@@ -82,9 +82,9 @@
<?=$ldap_options;?>
</select><br>
<?=_("Authentifizierungsplugin (nur LDAP/Shibboleth) beim Anlegen von externen Accounts übernehmen.");?>
- <?=Icon::create('info-circle', Icon::ROLE_INACTIVE)->asImg(['title' => _("Wählen Sie hier ein Authentifizierungsplugin, damit neu angelegte ILIAS-Accounts den entsprechenden Authentifizierungsmodus erhalten, wenn dieser Modus auch für den vorhandenen Stud.IP-Account gilt. Andernfalls erhalten alle ILIAS-Accounts den default-Modus")]);?>
+ <?=Icon::create('info-circle', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Wählen Sie hier ein Authentifizierungsplugin, damit neu angelegte ILIAS-Accounts den entsprechenden Authentifizierungsmodus erhalten, wenn dieser Modus auch für den vorhandenen Stud.IP-Account gilt. Andernfalls erhalten alle ILIAS-Accounts den default-Modus')]);?>
<? else : ?>
- <br><?=_("(Um diese Einstellung zu nutzen muss zumindest ein Authentifizierungsplugin aktiviert sein.)");?>
+ <br><?=_('(Um diese Einstellung zu nutzen, muss zumindest ein Authentifizierungsplugin aktiviert sein.)');?>
<input type="hidden" name="ilias_ldap_enable" value="">
<? endif ?>
</label>
diff --git a/app/views/admin/ilias_interface/index.php b/app/views/admin/ilias_interface/index.php
index 00e4f36..fce9464 100644
--- a/app/views/admin/ilias_interface/index.php
+++ b/app/views/admin/ilias_interface/index.php
@@ -11,7 +11,7 @@
<?= _('Angebundene ILIAS-Installationen') ?>
<span class="actions">
<a href="<?= $controller->url_for('admin/ilias_interface/edit_server/new') ?>" data-dialog="size=auto">
- <?= Icon::create('add')->asImg(tooltip2(_('Neue ILIAS-Installation hinzufügen'))) ?>
+ <?= Icon::create('add')->asSvg(tooltip2(_('Neue ILIAS-Installation hinzufügen'))) ?>
</a>
</span>
</caption>
@@ -44,7 +44,7 @@
}
?>
<a href="<?= $controller->url_for('admin/ilias_interface/'.$cmd.'/'.$ilias_index) ?>">
- <?= Icon::create($img)->asImg(['title' => $text]) ?>
+ <?= Icon::create($img)->asSvg(['title' => $text]) ?>
</a>
</td>
<td><?= htmlReady($ilias_config['name']) ?></td>
diff --git a/app/views/admin/licenses/index.php b/app/views/admin/licenses/index.php
index e72536a..e6d162d 100644
--- a/app/views/admin/licenses/index.php
+++ b/app/views/admin/licenses/index.php
@@ -34,9 +34,9 @@
</td>
<td class="actions">
<a href="<?= $controller->link_for("admin/licenses/edit", ['identifier' => $license['identifier']]) ?>" data-dialog>
- <?= Icon::create('edit')->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('edit')->asSvg(['class' => "text-bottom"]) ?>
</a>
- <form action="<?= $controller->link_for("admin/licenses/delete", ['identifier' => $license->getId()]) ?>"
+ <form action="<?= $controller->link_for('admin/licenses/delete', ['identifier' => $license->getId()]) ?>"
method="post"
data-confirm="<?= _("Wirklich löschen?") ?>"
class="inline">
diff --git a/app/views/admin/lockrules/index.php b/app/views/admin/lockrules/index.php
index 1214d83..b439b94 100644
--- a/app/views/admin/lockrules/index.php
+++ b/app/views/admin/lockrules/index.php
@@ -43,7 +43,7 @@
</td>
<td class="actions">
<a href="<?= $controller->url_for('admin/lockrules/edit/' . $rule->lock_id) ?>">
- <?= Icon::create('edit')->asImg(['title' => _('Diese Regel bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Diese Regel bearbeiten')]) ?>
</a>
<?
diff --git a/app/views/admin/login_style/newpic.php b/app/views/admin/login_style/newpic.php
index c5f7fbf..fe8948b 100644
--- a/app/views/admin/login_style/newpic.php
+++ b/app/views/admin/login_style/newpic.php
@@ -17,7 +17,7 @@
accept="image/gif,image/jpeg,image/png"
required
multiple>
- <?= Icon::create('upload')->asImg(['class' => 'text-bottom upload']) ?>
+ <?= Icon::create('upload')->asSvg(['class' => 'text-bottom upload']) ?>
</label>
<label>
diff --git a/app/views/admin/overlapping/conflicts.php b/app/views/admin/overlapping/conflicts.php
index f1cd914..9923a9d 100644
--- a/app/views/admin/overlapping/conflicts.php
+++ b/app/views/admin/overlapping/conflicts.php
@@ -78,7 +78,7 @@
<div class="mvv-ovl-title">
<?= htmlReady($comp_cycle->comp_course->VeranstaltungsNummer) ?>
<a href="<?= $controller->course_info($comp_cycle->id) ?>" data-dialog>
- <?= Icon::create('info-circle', Icon::ROLE_INFO)->asImg(['style' => 'vertical-align: text-bottom;', 'title' => _('Veranstaltungsdetails')]) ?>
+ <?= Icon::create('info-circle', Icon::ROLE_INFO)->asSvg(['style' => 'vertical-align: text-bottom;', 'title' => _('Veranstaltungsdetails')]) ?>
</a>
<?= htmlReady($comp_cycle->comp_course->getFullName('type-name')) ?>
<? if ($comp_cycle->comp_course->admission_turnout) : ?>
diff --git a/app/views/admin/overlapping/courses.php b/app/views/admin/overlapping/courses.php
index 5cb0a7d..22c4a49 100644
--- a/app/views/admin/overlapping/courses.php
+++ b/app/views/admin/overlapping/courses.php
@@ -30,7 +30,7 @@
<? if ($course_obj->admission_turnout) : ?>
<?= sprintf(_('(erw. TN %s)'), htmlReady($course_obj->admission_turnout)) ?>
<? endif; ?>
- <?= Icon::create('date-cycle', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('date-cycle', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= sprintf('%s (%sx)', $cycle->toString('short'), count($dates)); ?>
</div>
<ul>
diff --git a/app/views/admin/plugin/index.php b/app/views/admin/plugin/index.php
index fb56d15..66e1a81 100644
--- a/app/views/admin/plugin/index.php
+++ b/app/views/admin/plugin/index.php
@@ -75,7 +75,7 @@ use Studip\Button, Studip\LinkButton;
<td <? if (!$plugin['enabled']) echo 'class="quiet"'; ?>>
<?= htmlReady($update_info[$pluginid]['version'] ?? '') ?>
<? if ($plugin['automatic_update_url']): ?>
- <?= Icon::create('install', Icon::ROLE_STATUS_RED)->asImg([
+ <?= Icon::create('install', Icon::ROLE_STATUS_RED)->asSvg([
'title' => _('Automatische Updates sind eingerichtet'),
'style' => 'vertical-align: text-bottom',
]) ?>
diff --git a/app/views/admin/plugin/upload-drag-and-drop.php b/app/views/admin/plugin/upload-drag-and-drop.php
index efa9923..dc0bc3c 100644
--- a/app/views/admin/plugin/upload-drag-and-drop.php
+++ b/app/views/admin/plugin/upload-drag-and-drop.php
@@ -9,7 +9,7 @@
<?= CSRFProtection::tokenTag() ?>
<input type="hidden" name="studip_ticket" value="<?= get_ticket() ?>">
- <?= _('Plugin auswählen oder via Drag and Drop installieren') ?>
+ <span><?= _('Plugin auswählen oder via Drag and Drop installieren') ?></span>
<input type="file" name="upload_file">
</form>
</div> \ No newline at end of file
diff --git a/app/views/admin/role/assign_role.php b/app/views/admin/role/assign_role.php
index 8215f41..ab85070 100644
--- a/app/views/admin/role/assign_role.php
+++ b/app/views/admin/role/assign_role.php
@@ -133,7 +133,7 @@ use Studip\Button, Studip\LinkButton;
</td>
<td class="actions">
<a href="<?= $controller->action_link('assign_role_institutes/' . $assignedrole->getRoleid() . '/' . $currentuser->id) ?>" data-dialog="size=auto;reload-on-close">
- <?= Icon::create('edit')->asImg(['title' => _('Einrichtungszuordnung bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Einrichtungszuordnung bearbeiten')]) ?>
</a>
</td>
</tr>
diff --git a/app/views/admin/role/index.php b/app/views/admin/role/index.php
index 80f5f23..54b25d8 100644
--- a/app/views/admin/role/index.php
+++ b/app/views/admin/role/index.php
@@ -60,7 +60,7 @@
<td class="actions">
<? if (!$role->getSystemtype()): ?>
<a href="<?= $controller->link_for('admin/role/ask_remove_role', $role_id) ?>">
- <?= Icon::create('trash')->asImg(tooltip2(_('Rolle löschen'))) ?>
+ <?= Icon::create('trash')->asSvg(tooltip2(_('Rolle löschen'))) ?>
</a>
<? endif ?>
</td>
diff --git a/app/views/admin/sem_classes/_sem_type.php b/app/views/admin/sem_classes/_sem_type.php
index c61257b..9ee57d6 100644
--- a/app/views/admin/sem_classes/_sem_type.php
+++ b/app/views/admin/sem_classes/_sem_type.php
@@ -27,12 +27,12 @@ $id = $sem_type['id'];
</span>
</span>
(<?= sprintf(_("%s Veranstaltungen"), $number_of_seminars ?: _("keine")) ?>)
- <a href="#" class="sem_type_edit" onClick="jQuery(this).closest('li').find('.name_container').children().toggle().find('input').focus(); return false;" title="<?= _("Veranstaltungstyp umbenennen") ?>">
- <?= Icon::create('edit')->asImg(['class' => "text-bottom"]) ?>
+ <a href="#" class="sem_type_edit" onClick="jQuery(this).closest('li').find('.name_container').children().toggle().find('input').focus(); return false;" title="<?= _('Veranstaltungstyp umbenennen') ?>">
+ <?= Icon::create('edit')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? if ($number_of_seminars == 0) : ?>
<a href="#" class="sem_type_delete" onClick="return false;" title="<?= _("Veranstaltungstyp löschen") ?>">
- <?= Icon::create('trash')->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
</li>
diff --git a/app/views/admin/sem_classes/details.php b/app/views/admin/sem_classes/details.php
index 5f7de1b..c5553d6 100644
--- a/app/views/admin/sem_classes/details.php
+++ b/app/views/admin/sem_classes/details.php
@@ -26,7 +26,7 @@
<div>
<span class="name"><?= htmlReady($sem_class['name']) ?></span>
<a href="#" class="sem_class_edit" onClick="jQuery(this).closest('label').children().toggle().find('input:visible').focus(); return false;">
- <?= Icon::create('edit')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('edit')->asSvg(['class' => 'text-bottom']) ?>
</a>
</div>
@@ -42,7 +42,7 @@
<div>
<span class="description"><?= htmlReady($sem_class['description']) ?></span>
<a href="#" class="sem_class_edit" onClick="jQuery(this).closest('label').children().toggle().find('input:visible').focus(); return false;">
- <?= Icon::create('edit')->asImg(['class' => 'text-bottom']) ?></a>
+ <?= Icon::create('edit')->asSvg(['class' => 'text-bottom']) ?></a>
</div>
<div class="description_input" style="display: none;">
<input id="sem_class_description" type="text" value="<?= htmlReady($sem_class['description']) ?>" onBlur="jQuery(this).closest('label.sem_class_name').children().toggle().find('.description').text(this.value);" style="width: 80%;">
@@ -60,11 +60,11 @@
<div class="add">
<div style="display: none; margin-left: 37px;">
<input type="text" id="new_sem_type" onBlur="if (!this.value) jQuery(this).closest('.add').children().toggle();">
- <a href="" onClick="STUDIP.admin_sem_class.add_sem_type(); return false;"><?= Icon::create('arr_2up', 'sort')->asImg(['class' => "text-bottom", "title" => _("hinzufügen")]) ?></a>
+ <a href="" onClick="STUDIP.admin_sem_class.add_sem_type(); return false;"><?= Icon::create('arr_2up', 'sort')->asSvg(['class' => 'text-bottom', 'title' => _('hinzufügen')]) ?></a>
</div>
<div style="margin-left: 21px;">
<a href="#" onClick="jQuery(this).closest('.add').children().toggle(); jQuery('#new_sem_type').focus(); return false;">
- <?= Icon::create('add')->asImg([
+ <?= Icon::create('add')->asSvg([
'class' => 'text-bottom',
'title' => _('Veranstaltungstyp hinzufügen'),
]) ?>
diff --git a/app/views/admin/sem_classes/overview.php b/app/views/admin/sem_classes/overview.php
index 1369b0c..5cae59c 100644
--- a/app/views/admin/sem_classes/overview.php
+++ b/app/views/admin/sem_classes/overview.php
@@ -31,8 +31,8 @@
<td><?= $sem_class->countSeminars() ?></td>
<td><?= date("j.n.Y H:i", $sem_class['chdate']) ?> <?= _("Uhr") ?></td>
<td class="actions">
- <a href="<?= URLHelper::getLink("dispatch.php/admin/sem_classes/details", ['id' => $id]) ?>" title="<?= _("Editieren dieser Veranstaltungskategorie") ?>">
- <?= Icon::create('edit')->asImg(['class' => 'text-bottom']) ?>
+ <a href="<?= URLHelper::getLink('dispatch.php/admin/sem_classes/details', ['id' => $id]) ?>" title="<?= _('Editieren dieser Veranstaltungskategorie') ?>">
+ <?= Icon::create('edit')->asSvg(['class' => 'text-bottom']) ?>
</a>
</td>
</tr>
diff --git a/app/views/admin/specification/index.php b/app/views/admin/specification/index.php
index 4538b6a..9933cce 100644
--- a/app/views/admin/specification/index.php
+++ b/app/views/admin/specification/index.php
@@ -43,10 +43,10 @@
</td>
<td class="actions">
<a href="<?= $controller->edit($rule) ?>">
- <?= Icon::create('edit')->asImg(['title' => _('Regel bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Regel bearbeiten')]) ?>
</a>
<? if (count($rule->courses) > 0): ?>
- <?= Icon::create('trash', Icon::ROLE_INACTIVE)->asImg(
+ <?= Icon::create('trash', Icon::ROLE_INACTIVE)->asSvg(
tooltip2(_('Die Regel kann nicht gelöscht werden, da sie noch verwendet wird.'))
) ?>
<? else: ?>
diff --git a/app/views/admin/user/_results.php b/app/views/admin/user/_results.php
index 1541907..6fe0ad0 100644
--- a/app/views/admin/user/_results.php
+++ b/app/views/admin/user/_results.php
@@ -82,7 +82,7 @@
<?= htmlReady($user->username) ?>
</a>
<? if ($user->locked) : ?>
- <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asImg(tooltip2(sprintf(_('%s ist gesperrt'), htmlReady($user->getFullName())))) ?>
+ <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asSvg(tooltip2(sprintf(_('%s ist gesperrt'), htmlReady($user->getFullName())))) ?>
<? endif ?>
</td>
<td>
diff --git a/app/views/admin/user/activities.php b/app/views/admin/user/activities.php
index 0357b86..fce928f 100644
--- a/app/views/admin/user/activities.php
+++ b/app/views/admin/user/activities.php
@@ -32,7 +32,7 @@
<? if (!empty($query['details'])) : ?>
<a href="<?= $controller->url_for('admin/user/activities/' . $user['user_id'], ['view' => $query['details']] + $params) ?>"
<?= Request::isXhr() ? 'data-dialog="size=50%"' : ''?>>
- <?= Icon::create('info-circle')->asImg(['title' => _('Übersicht anzeigen')]) ?>
+ <?= Icon::create('info-circle')->asSvg(['title' => _('Übersicht anzeigen')]) ?>
</a>
<? endif ?>
</td>
diff --git a/app/views/admin/user/edit.php b/app/views/admin/user/edit.php
index b56bd69..d808a5b 100644
--- a/app/views/admin/user/edit.php
+++ b/app/views/admin/user/edit.php
@@ -266,7 +266,7 @@ use Studip\Button, Studip\LinkButton;
</label>
<label class="col-2">
- <?= Icon::create('accept', Icon::ROLE_ACCEPT)->asImg([
+ <?= Icon::create('accept', Icon::ROLE_ACCEPT)->asSvg([
'id' => 'pw_success',
'style' => 'display: none',
]) ?>
@@ -574,10 +574,10 @@ use Studip\Button, Studip\LinkButton;
<li>
<?= htmlReady($inst_membership->institute->name) ?>
- <? if ($GLOBALS['perm']->have_studip_perm("admin", $inst_membership->institut_id)) : ?>
+ <? if ($GLOBALS['perm']->have_studip_perm('admin', $inst_membership->institut_id)) : ?>
<a data-dialog="size=auto"
href="<?= $controller->url_for('admin/user/edit_institute/' . $user->user_id . '/' . $inst_membership->institut_id) ?>">
- <?= Icon::create('edit')->asImg([
+ <?= Icon::create('edit')->asSvg([
'class' => 'text-bottom',
'title' => _('Diese Einrichtung bearbeiten'),
]) ?>
diff --git a/app/views/admission/courseset/index.php b/app/views/admission/courseset/index.php
index 70033af..656b5ba 100644
--- a/app/views/admission/courseset/index.php
+++ b/app/views/admission/courseset/index.php
@@ -57,18 +57,18 @@ if ($coursesets) {
</td>
<td class="actions">
<a class="load-in-new-row" href="<?= $controller->link_for('', ['course_set_details' => $courseset->getId()]); ?>">
- <?= Icon::create('info')->asImg(['title' => _('Weitere Informationen einblenden')]) ?>
+ <?= Icon::create('info')->asSvg(['title' => _('Weitere Informationen einblenden')]) ?>
</a>
<? if ($courseset->isUserAllowedToEdit($GLOBALS['user']->id)) : ?>
<a href="<?= $controller->link_for('admission/courseset/copy/'.$courseset->getId()); ?>">
- <?= Icon::create('clipboard')->asImg(['title' => _('Anmeldeset kopieren'), "alt" => _('Anmeldeset kopieren')]); ?>
+ <?= Icon::create('clipboard')->asSvg(['title' => _('Anmeldeset kopieren'), "alt" => _('Anmeldeset kopieren')]); ?>
</a>
<a href="<?= $controller->link_for('admission/courseset/configure/'.$courseset->getId()); ?>">
- <?= Icon::create('edit')->asImg(['title' => _('Anmeldeset bearbeiten')]) ?>
+ <?= Icon::create('edit')->asSvg(['title' => _('Anmeldeset bearbeiten')]) ?>
</a>
<a href="<?= $controller->link_for('admission/courseset/delete/'. $courseset->getId(), ['really' => 1]) ?>"
data-confirm="<?= sprintf(_('Soll das Anmeldeset %s wirklich gelöscht werden?'), htmlReady($courseset->getName())) ?>">
- <?= Icon::create('trash')->asImg(['title' => _('Anmeldeset löschen')]) ?>
+ <?= Icon::create('trash')->asSvg(['title' => _('Anmeldeset löschen')]) ?>
</a>
<? endif ?>
</td>
diff --git a/app/views/admission/courseset/institutes.php b/app/views/admission/courseset/institutes.php
index 30b78c3..30f10ba 100644
--- a/app/views/admission/courseset/institutes.php
+++ b/app/views/admission/courseset/institutes.php
@@ -5,7 +5,7 @@
* @var array $selectedInstitutes
*/
?>
-<?= Icon::create('arr_2down', Icon::ROLE_SORT)->asImg([
+<?= Icon::create('arr_2down', Icon::ROLE_SORT)->asSvg([
'title' => _('Einrichtung hinzufügen'),
'onclick' => "STUDIP.Admission.updateInstitutes($('input[name=\"institute_id\"]').val(), '" . $controller->url_for('admission/courseset/institutes', !empty($courseset) ? $courseset->getId() : '') . "', '" . $controller->url_for('admission/courseset/instcourses', !empty($courseset) ? $courseset->getId() : '') . "', 'add')",
]) ?>
@@ -19,7 +19,7 @@
<span class="hover_box">
<?= htmlReady($data['Name']) ?>
<span class="action_icons">
- <?= Icon::create('trash')->asImg([
+ <?= Icon::create('trash')->asSvg([
'title' => _('Einrichtung entfernen'),
'onclick' => "STUDIP.Admission.updateInstitutes('{$institute}', '" . $controller->url_for('admission/courseset/institutes',$institute) . "', '" . $controller->url_for('admission/courseset/instcourses',$institute)."', 'delete')"
]); ?>
diff --git a/app/views/admission/ruleadministration/index.php b/app/views/admission/ruleadministration/index.php
index ef3fa1b..94d9f86 100644
--- a/app/views/admission/ruleadministration/index.php
+++ b/app/views/admission/ruleadministration/index.php
@@ -19,14 +19,14 @@
<td>
<a href="<?= $controller->toggle_activation($type) ?>" role="button">
<? if ($details['active']): ?>
- <?= Icon::create('checkbox-checked')->asImg([
+ <?= Icon::create('checkbox-checked')->asSvg([
'title' => sprintf(
_('Die Regel "%s" ist aktiv. Klicken Sie hier, um sie zu deaktivieren.'),
$details['name']
)
]) ?>
<? else: ?>
- <?= Icon::create('checkbox-unchecked')->asImg([
+ <?= Icon::create('checkbox-unchecked')->asSvg([
'title' => sprintf(
_('Die Regel "%s" ist inaktiv. Klicken Sie hier, um sie zu aktivieren.'),
$details['name']
diff --git a/app/views/blubber/compose.php b/app/views/blubber/compose.php
index 67ba605..2cdb89b 100644
--- a/app/views/blubber/compose.php
+++ b/app/views/blubber/compose.php
@@ -14,19 +14,19 @@
<div>
<a href="#"
onclick="$('.file_select_possibilities').hide(); $('.private_blubber_composer').show(); return false;">
- <?= Icon::create('group3')->asImg(50) ?>
+ <?= Icon::create('group3')->asSvg(50) ?>
<?= _('Kontakte') ?>
</a>
<a href="<?= $controller->link_for('blubber/index/global') ?>">
- <?= Icon::create('globe')->asImg(50) ?>
+ <?= Icon::create('globe')->asSvg(50) ?>
<?= _('Öffentlich') ?>
</a>
<? if (!$GLOBALS['perm']->have_perm('admin')) : ?>
<a href="#"
onclick="$('.file_select_possibilities').hide(); $('.course_blubber_composer').show(); return false;">
- <?= Icon::create('seminar')->asImg(50) ?>
+ <?= Icon::create('seminar')->asSvg(50) ?>
<?= _('Veranstaltung') ?>
</a>
<? endif ?>
@@ -67,10 +67,10 @@
</span>
<a href="" onClick="$('#blubber_contacts').trigger('focus').select2('open'); return false;">
- <?= Icon::create('search')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('search')->asSvg(['class' => 'text-bottom']) ?>
</a>
<a href="" onClick="$('#blubber_contacts').val(null).trigger('change'); return false;">
- <?= Icon::create('decline')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('decline')->asSvg(['class' => 'text-bottom']) ?>
</a>
</div>
<? endif ?>
@@ -113,10 +113,10 @@
->fireJSFunctionOnSelect('STUDIP.Blubber.Composer.vue.addUser')->render() ?>
<a href="" onClick="$('input[name=search_user_id_parameter]').trigger('focus'); return false;">
- <?= Icon::create('search')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('search')->asSvg(['class' => 'text-bottom']) ?>
</a>
<a href="" onClick="STUDIP.Blubber.Composer.vue.clearUsers(); return false;">
- <?= Icon::create('decline')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('decline')->asSvg(['class' => 'text-bottom']) ?>
</a>
</div>
</div>
diff --git a/app/views/blubber/private_to_studygroup.php b/app/views/blubber/private_to_studygroup.php
index 5e04599..6c49a40 100644
--- a/app/views/blubber/private_to_studygroup.php
+++ b/app/views/blubber/private_to_studygroup.php
@@ -4,9 +4,9 @@
enctype="multipart/form-data">
<div style="display: flex; justify-content: center; align-items: center">
- <?= Icon::create('blubber', Icon::ROLE_INFO)->asImg(50, ['style' => "margin-right: 50px;"]) ?>
- <?= Icon::create('arr_2right', Icon::ROLE_INFO)->asImg(['style' => "margin-right: 50px;"]) ?>
- <?= Icon::create('studygroup', Icon::ROLE_INFO)->asImg(50) ?>
+ <?= Icon::create('blubber', Icon::ROLE_INFO)->asSvg(50, ['style' => 'margin-right: 50px;']) ?>
+ <?= Icon::create('arr_2right', Icon::ROLE_INFO)->asSvg(['style' => 'margin-right: 50px;']) ?>
+ <?= Icon::create('studygroup', Icon::ROLE_INFO)->asSvg(50) ?>
</div>
<label>
diff --git a/app/views/calendar/calendar/share_select.php b/app/views/calendar/calendar/share_select.php
index 1f30a62..07de565 100644
--- a/app/views/calendar/calendar/share_select.php
+++ b/app/views/calendar/calendar/share_select.php
@@ -7,12 +7,12 @@
<div>
<a href="<?= $controller->link_for('calendar/calendar/share') ?>"
data-dialog="size=default">
- <?= Icon::create('group2')->asImg(50) ?>
+ <?= Icon::create('group2')->asSvg(50) ?>
<?= _('Mit Nutzenden teilen') ?>
</a>
<a href="<?= $controller->link_for('calendar/calendar/publish') ?>"
data-dialog="size=auto">
- <?= Icon::create('permalink')->asImg(50) ?>
+ <?= Icon::create('permalink')->asSvg(50) ?>
<?= _('Link zu diesem Kalender') ?>
</a>
</div>
diff --git a/app/views/calendar/contentbox/_termin.php b/app/views/calendar/contentbox/_termin.php
index b6334e0..963116d 100644
--- a/app/views/calendar/contentbox/_termin.php
+++ b/app/views/calendar/contentbox/_termin.php
@@ -11,7 +11,7 @@
<header>
<h1>
<a href="<?= ContentBoxHelper::href($termin->getObjectId()) ?>">
- <?= Icon::create('date', Icon::ROLE_INACTIVE)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('date', Icon::ROLE_INACTIVE)->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($titles[$termin->getObjectId()] ?? $termin->getTitle()) ?>
</a>
</h1>
@@ -26,19 +26,19 @@
<? if ($admin && $isProfile && $termin->getObjectClass() === 'CalendarDateAssignment') : ?>
<a href="<?= URLHelper::getLink('dispatch.php/calendar/calendar') ?>"
title="<?= _('Zum Kalender') ?>" aria-label="<?= _('Zum Kalender') ?>">
- <?= Icon::create('schedule')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('schedule')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? if ($termin->calendar_date->isWritable($GLOBALS['user']->id)) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/calendar/date/edit/' . $termin->getPrimaryObjectId()) ?>"
title="<?= _('Termin bearbeiten') ?>" aria-label="<?= _('Termin bearbeiten') ?>"
data-dialog>
- <?= Icon::create('edit')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('edit')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
<? elseif (!$course_range && in_array($termin->getObjectClass(), [CalendarCourseDate::class, CalendarCourseExDate::class])) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/course/dates', ['cid' => $termin->getPrimaryObjectId()]) ?>"
title="<?= _('Zur Veranstaltung') ?>" aria-label="<?= _('Zur Veranstaltung') ?>">
- <?= Icon::create('seminar')->asImg(['class'=> 'text-bottom']) ?>
+ <?= Icon::create('seminar')->asSvg(['class'=> 'text-bottom']) ?>
</a>
<? endif ?>
</nav>
@@ -63,7 +63,7 @@
<? if (count($themen)) : ?>
<? foreach ($themen as $thema) : ?>
<h3>
- <?= Icon::create('topic', Icon::ROLE_INFO)->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('topic', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($thema['title']) ?>
</h3>
<div>
@@ -91,7 +91,7 @@
<? if (!$course_range && in_array($termin->getObjectClass(), [CalendarCourseDate::class, CalendarCourseExDate::class])) : ?>
<div>
<a href="<?= URLHelper::getLink('dispatch.php/course/dates', ['cid' => $termin->getPrimaryObjectId()]) ?>">
- <?= Icon::create('link-intern')->asImg(['class'=> 'text-bottom']) ?>
+ <?= Icon::create('link-intern')->asSvg(['class'=> 'text-bottom']) ?>
<?= _('Zur Veranstaltung') ?>
</a>
</div>
diff --git a/app/views/calendar/contentbox/display.php b/app/views/calendar/contentbox/display.php
index 902df33..1c86a97 100644
--- a/app/views/calendar/contentbox/display.php
+++ b/app/views/calendar/contentbox/display.php
@@ -2,7 +2,7 @@
<article class="studip">
<header>
<h1>
- <?= Icon::create('schedule', 'info')->asImg() ?>
+ <?= Icon::create('schedule', 'info')->asSvg() ?>
<?= htmlReady($title) ?>
</h1>
<nav>
@@ -11,12 +11,12 @@
<a href="<?= URLHelper::getLink('dispatch.php/calendar/date/add') ?>"
data-dialog="reload-on-close"
title="<?= _('Neuen Termin anlegen') ?>" aria-label="<?= _('Neuen Termin anlegen') ?>">
- <?= Icon::create('add')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('add')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? else: ?>
<a href="<?= URLHelper::getLink("dispatch.php/course/timesrooms", ['cid' => $range_id]) ?>"
title="<?= _('Neuen Termin anlegen') ?>" aria-label="<?= _('Neuen Termin anlegen') ?>">
- <?= Icon::create('admin')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('admin')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
<? endif ?>
diff --git a/app/views/calendar/date/_add_edit_form.php b/app/views/calendar/date/_add_edit_form.php
index 74dc955..fb5596e 100644
--- a/app/views/calendar/date/_add_edit_form.php
+++ b/app/views/calendar/date/_add_edit_form.php
@@ -33,7 +33,7 @@
class="validation_notes studip">
<header>
<h1>
- <?= Icon::create('info-circle', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom validation_notes_icon']) ?>
+ <?= Icon::create('info-circle', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom validation_notes_icon']) ?>
<?= _('Hinweise zum Ausfüllen des Formulars') ?>
</h1>
</header>
diff --git a/app/views/calendar/schedule/course_info.php b/app/views/calendar/schedule/course_info.php
index c87e4cd..a9e0c02 100644
--- a/app/views/calendar/schedule/course_info.php
+++ b/app/views/calendar/schedule/course_info.php
@@ -58,12 +58,12 @@
<? if ($GLOBALS['perm']->have_studip_perm('user', $course->id)) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/course/overview', ['cid' => $course->id]) ?>">
<?= _('Direkt zur Veranstaltung') ?>
- <?= Icon::create('link-intern')->asImg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-intern')->asSvg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
</a>
<? else : ?>
<a href="<?= URLHelper::getLink('dispatch.php/course/details', ['sem_id' => $course->id]) ?>">
<?= _('Direkt zur Veranstaltung') ?>
- <?= Icon::create('link-intern')->asImg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-intern')->asSvg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
</a>
<? endif ?>
</section>
diff --git a/app/views/consultation/overview/booked.php b/app/views/consultation/overview/booked.php
index 69a0cd9..ebe5a35 100644
--- a/app/views/consultation/overview/booked.php
+++ b/app/views/consultation/overview/booked.php
@@ -46,7 +46,7 @@
</td>
<td class="actions">
<a href="<?= $controller->cancel($slot->block, $slot, 1) ?>" data-dialog="size=auto">
- <?= Icon::create('trash')->asImg(tooltip2(_('Termin absagen'))) ?>
+ <?= Icon::create('trash')->asSvg(tooltip2(_('Termin absagen'))) ?>
</a>
</td>
</tr>
diff --git a/app/views/consultation/overview/index.php b/app/views/consultation/overview/index.php
index ef7f208..63f35ba 100644
--- a/app/views/consultation/overview/index.php
+++ b/app/views/consultation/overview/index.php
@@ -54,14 +54,14 @@
<td class="actions">
<? if ($slot->isOccupied($GLOBALS['user']->id)): ?>
<a href="<?= $controller->cancel($block, $slot) ?>" data-dialog="size=auto">
- <?= Icon::create('trash')->asImg(tooltip2(_('Termin absagen'))) ?>
+ <?= Icon::create('trash')->asSvg(tooltip2(_('Termin absagen'))) ?>
</a>
<? elseif ($slot->userMayCreateBookingForSlot()): ?>
<a href="<?= $controller->book($block, $slot) ?>" data-dialog="size=auto">
- <?= Icon::create('add')->asImg(tooltip2(_('Termin reservieren'))) ?>
+ <?= Icon::create('add')->asSvg(tooltip2(_('Termin reservieren'))) ?>
</a>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_INACTIVE)->asImg(tooltip2(_('Dieser Termin ist für Buchungen gesperrt.'))) ?>
+ <?= Icon::create('decline', Icon::ROLE_INACTIVE)->asSvg(tooltip2(_('Dieser Termin ist für Buchungen gesperrt.'))) ?>
<? endif; ?>
</td>
</tr>
diff --git a/app/views/consultation/overview/ungrouped.php b/app/views/consultation/overview/ungrouped.php
index c9eb519..023d499 100644
--- a/app/views/consultation/overview/ungrouped.php
+++ b/app/views/consultation/overview/ungrouped.php
@@ -84,14 +84,14 @@
<td class="actions">
<? if ($slot->isOccupied($GLOBALS['user']->id)): ?>
<a href="<?= $controller->cancel($block, $slot) ?>" data-dialog="size=auto">
- <?= Icon::create('trash')->asImg(tooltip2(_('Termin absagen'))) ?>
+ <?= Icon::create('trash')->asSvg(tooltip2(_('Termin absagen'))) ?>
</a>
<? elseif ($slot->userMayCreateBookingForSlot()): ?>
<a href="<?= $controller->book($block, $slot) ?>" data-dialog="size=auto">
- <?= Icon::create('add')->asImg(tooltip2(_('Termin reservieren'))) ?>
+ <?= Icon::create('add')->asSvg(tooltip2(_('Termin reservieren'))) ?>
</a>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_INACTIVE)->asImg(tooltip2(_('Dieser Termin ist für Buchungen gesperrt.'))) ?>
+ <?= Icon::create('decline', Icon::ROLE_INACTIVE)->asSvg(tooltip2(_('Dieser Termin ist für Buchungen gesperrt.'))) ?>
<? endif; ?>
</td>
</tr>
diff --git a/app/views/contents/courseware/courses_overview.php b/app/views/contents/courseware/courses_overview.php
index 61fba02..b866fb2 100644
--- a/app/views/contents/courseware/courses_overview.php
+++ b/app/views/contents/courseware/courses_overview.php
@@ -25,7 +25,7 @@
<li class="tile <?= htmlReady($element['payload']['color'])?>">
<a href="<?= URLHelper::getLink('dispatch.php/course/courseware/?cid='.$element['range_id'].'#/structural_element/'.$element['id']) ?>">
<? if ($element->getImageUrl() === null) : ?>
- <div class="preview-image default-image" style="<?= Icon::create('courseware')->asCSS(112) ?>">
+ <div class="preview-image default-image" style="background-image: url(<?= Icon::create('courseware')->asImagePath() ?>); background-size: 112px" >
</div>
<? else : ?>
<div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
diff --git a/app/views/contents/overview/index.php b/app/views/contents/overview/index.php
index 7f79113..37c81e9 100644
--- a/app/views/contents/overview/index.php
+++ b/app/views/contents/overview/index.php
@@ -5,7 +5,7 @@
<a href="<?= URLHelper::getLink($navigation->getURL()) ?>" class="content-item-link">
<div class="content-item-img-wrapper">
<? if ($navigation->getImage()): ?>
- <?= $navigation->getImage()->asImg(64, $navigation->getLinkAttributes()) ?>
+ <?= $navigation->getImage()->asSvg(64, $navigation->getLinkAttributes()) ?>
<? endif ?>
</div>
<div class="content-item-text">
diff --git a/app/views/course/basicdata/view.php b/app/views/course/basicdata/view.php
index 62c0620..4b8dac3 100644
--- a/app/views/course/basicdata/view.php
+++ b/app/views/course/basicdata/view.php
@@ -133,12 +133,12 @@ $dialog_attr = Request::isXhr() ? ' data-dialog="size=50%"' : '';
<? if ($perm_dozent && !$dozent_is_locked): ?>
<? if ($num > 0) : ?>
<button class="as-link" formaction="<?= $controller->link_for('course/basicdata/priorityupfor', $course_id, $dozent['user_id'], 'dozent') ?>" <?= $dialog_attr ?>>
- <?= Icon::create('arr_2up', Icon::ROLE_SORT)->asImg(['class' => 'middle']) ?>
+ <?= Icon::create('arr_2up', Icon::ROLE_SORT)->asSvg(['class' => 'middle']) ?>
</button>
<? endif; ?>
<? if ($num < count($dozenten) - 1): ?>
<button class="as-link" formaction="<?= $controller->link_for('course/basicdata/prioritydownfor', $course_id, $dozent['user_id'], 'dozent') ?>" <?= $dialog_attr ?>>
- <?= Icon::create('arr_2down', Icon::ROLE_SORT)->asImg(['class' => 'middle']) ?>
+ <?= Icon::create('arr_2down', Icon::ROLE_SORT)->asSvg(['class' => 'middle']) ?>
</button>
<? endif; ?>
<?= Icon::create('trash')->asInput([
@@ -270,12 +270,12 @@ $dialog_attr = Request::isXhr() ? ' data-dialog="size=50%"' : '';
<? if ($perm_dozent && !$tutor_is_locked): ?>
<? if ($num > 0) : ?>
<button class="as-link" formaction="<?= $controller->link_for('course/basicdata/priorityupfor', $course_id, $tutor['user_id'], 'tutor') ?>" <?= $dialog_attr ?>>
- <?= Icon::create('arr_2up', Icon::ROLE_SORT)->asImg(['class' => 'middle']) ?>
+ <?= Icon::create('arr_2up', Icon::ROLE_SORT)->asSvg(['class' => 'middle']) ?>
</button>
<? endif; ?>
<? if ($num < count($tutoren) - 1) : ?>
<button class="as-link" formaction="<?= $controller->link_for('course/basicdata/prioritydownfor', $course_id, $tutor['user_id'], 'tutor') ?>" <?= $dialog_attr ?>>
- <?= Icon::create('arr_2down', Icon::ROLE_SORT)->asImg(['class' => 'middle']) ?>
+ <?= Icon::create('arr_2down', Icon::ROLE_SORT)->asSvg(['class' => 'middle']) ?>
</button>
<? endif; ?>
<?= Icon::create('trash')->asInput([
diff --git a/app/views/course/contentmodules/info.php b/app/views/course/contentmodules/info.php
index 48323c4..97dc2b0 100644
--- a/app/views/course/contentmodules/info.php
+++ b/app/views/course/contentmodules/info.php
@@ -12,7 +12,7 @@
<div class="header">
<div class="image">
<? if ($metadata['icon']): ?>
- <?= $metadata['icon']->copyWithRole(Icon::ROLE_INFO)->asImg(100) ?>
+ <?= $metadata['icon']->copyWithRole(Icon::ROLE_INFO)->asSvg(100) ?>
<? endif; ?>
</div>
<div class="text">
diff --git a/app/views/course/dates/_date_row-exdate.php b/app/views/course/dates/_date_row-exdate.php
index 2a179ef..e47c999 100644
--- a/app/views/course/dates/_date_row-exdate.php
+++ b/app/views/course/dates/_date_row-exdate.php
@@ -1,6 +1,6 @@
<tr id="date_<?= $date->id ?>" class="ausfall" data-termin-id="<?= htmlReady($date->id) ?>">
<td data-sort-value="<?= htmlReady($date->date) ?>" class="date_name">
- <?= Icon::create('date', Icon::ROLE_INFO)->asImg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
+ <?= Icon::create('date', Icon::ROLE_INFO)->asSvg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
<?= htmlReady($date->getFullName()) ?>
<?= tooltipIcon($date->content) ?>
<? if (count($date->dozenten) > 0): ?>
diff --git a/app/views/course/dates/_date_row.php b/app/views/course/dates/_date_row.php
index 3cad99b..b45bd55 100644
--- a/app/views/course/dates/_date_row.php
+++ b/app/views/course/dates/_date_row.php
@@ -18,7 +18,7 @@ $dialog_url = $show_raumzeit
<tr id="date_<?= $date->id ?>" <? if (!empty($is_next_date)) echo 'class="nextdate" title="' . _('Der nächste Termin') . '"'; ?> data-termin-id="<?= htmlReady($date->id) ?>">
<td data-sort-value="<?= htmlReady($date->date) ?>" class="date_name">
<a href="<?= $dialog_url ?>" data-dialog>
- <?= Icon::create($icon)->asImg(Icon::SIZE_INLINE,['class' => 'text-bottom']) ?>
+ <?= Icon::create($icon)->asSvg(Icon::SIZE_INLINE,['class' => 'text-bottom']) ?>
<?= htmlReady($date->getFullName(CourseDate::FORMAT_VERBOSE)) ?>
</a>
<? if (count($date->dozenten) > 0): ?>
diff --git a/app/views/course/dates/_topic_li.php b/app/views/course/dates/_topic_li.php
index 88e267f..9353ddb 100644
--- a/app/views/course/dates/_topic_li.php
+++ b/app/views/course/dates/_topic_li.php
@@ -1,11 +1,11 @@
<li data-issue_id="<?= $topic->id ?>" class="topic_<?= $date->id ?>_<?= $topic->id ?>">
<a href="<?= $controller->url_for("course/topics#{$topic->id}", ['open' => $topic->id]) ?>" class="title">
- <?= Icon::create('topic')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('topic')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($topic['title']) ?>
</a>
<? if ($has_access) : ?>
<a href="#" onClick="STUDIP.Dates.removeTopicFromIcon.call(this); return false;">
- <?= Icon::create('trash')->asImg(['class' => 'text-bottom'] + tooltip2(_('Thema entfernen'))) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom'] + tooltip2(_('Thema entfernen'))) ?>
</a>
<? endif ?>
</li>
diff --git a/app/views/course/dates/current_day_dates.php b/app/views/course/dates/current_day_dates.php
index c0f92d7..9df4b09 100644
--- a/app/views/course/dates/current_day_dates.php
+++ b/app/views/course/dates/current_day_dates.php
@@ -12,7 +12,7 @@
<? foreach ($dates as $date): ?>
<tr>
<td class="date_name">
- <?= Icon::create('date')->asImg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
+ <?= Icon::create('date')->asSvg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
<?= htmlReady($date->getFullName(CourseDate::FORMAT_VERBOSE)) ?>
</td>
<td>
diff --git a/app/views/course/details/index.php b/app/views/course/details/index.php
index 02a18a8..98293a2 100644
--- a/app/views/course/details/index.php
+++ b/app/views/course/details/index.php
@@ -340,7 +340,7 @@
<a class="module-info" href="<?= URLHelper::getLink($module['nav']->getUrl())?>">
<?= htmlReady($module['title']) ?>
<? if ($module['nav']->getImage()) : ?>
- <?= $module['nav']->getImage()->asImg($module['nav']->getLinkAttributes()) ?>
+ <?= $module['nav']->getImage()->asSvg($module['nav']->getLinkAttributes()) ?>
<? endif ?>
<span><?= htmlReady($module['nav']->getTitle())?></span>
</a>
diff --git a/app/views/course/forum/discussion_types/index.php b/app/views/course/forum/discussion_types/index.php
index 8500d90..a196342 100644
--- a/app/views/course/forum/discussion_types/index.php
+++ b/app/views/course/forum/discussion_types/index.php
@@ -37,7 +37,7 @@ use Forum\ForumDiscussionType;
<tr>
<td>
<?php if ($type->icon) : ?>
- <?= Icon::create($type->icon, ['title' => htmlReady($type->icon)])->asImg(24) ?>
+ <?= Icon::create($type->icon, ['title' => htmlReady($type->icon)])->asSvg(24) ?>
<?php endif; ?>
</td>
<td>
diff --git a/app/views/course/ilias_interface/add_object.php b/app/views/course/ilias_interface/add_object.php
index ddb4fed..6e015a7 100644
--- a/app/views/course/ilias_interface/add_object.php
+++ b/app/views/course/ilias_interface/add_object.php
@@ -85,7 +85,7 @@
<? foreach ($ilias_modules as $module_id => $module) : ?>
<tr>
<td>
- <?= Icon::create('learnmodule')->asImg([
+ <?= Icon::create('learnmodule')->asSvg([
'title' => $module->getModuleTypeName(),
]) ?>
</td>
diff --git a/app/views/course/management/index.php b/app/views/course/management/index.php
index c7ab4bf..06fabf7 100644
--- a/app/views/course/management/index.php
+++ b/app/views/course/management/index.php
@@ -5,7 +5,7 @@
<a href="<?= URLHelper::getLink($nav->getURL()) ?>">
<h3>
<? if ($nav->getImage()): ?>
- <?= $nav->getImage()->asImg(false, $nav->getLinkAttributes()) ?>
+ <?= $nav->getImage()->asSvg(false, $nav->getLinkAttributes()) ?>
<? endif; ?>
<?= htmlReady($nav->getTitle()) ?>
</h3>
diff --git a/app/views/course/statusgroups/_group.php b/app/views/course/statusgroups/_group.php
index 8cc8a5a..3649e9b 100644
--- a/app/views/course/statusgroups/_group.php
+++ b/app/views/course/statusgroups/_group.php
@@ -20,7 +20,7 @@
<a class="no-contentbox-link"
href="<?= $controller->url_for('course/statusgroups/groupinfo', $group->id) ?>"
data-dialog="size=auto">
- <?= Icon::create('info-circle')->asImg([
+ <?= Icon::create('info-circle')->asSvg([
'title' => sprintf(_('Informationen zu %s'), $group->name)
]) ?>
</a>
@@ -137,7 +137,7 @@
'course_id' => $course_id,
'default_subject' => $course_title.' ('.$group->name.')'
]) ?>" data-dialog="size=auto;">
- <?= Icon::create('mail')->asImg(['title' => _('Nachricht an alle nicht zugeordneten Personen schicken')]) ?>
+ <?= Icon::create('mail')->asSvg(['title' => _('Nachricht an alle nicht zugeordneten Personen schicken')]) ?>
</a>
</nav>
<?php endif ?>
diff --git a/app/views/course/studygroup/_members_gallery.php b/app/views/course/studygroup/_members_gallery.php
index 52a81f9..0c98c26 100644
--- a/app/views/course/studygroup/_members_gallery.php
+++ b/app/views/course/studygroup/_members_gallery.php
@@ -15,7 +15,7 @@
<div>
<a href="<?= $controller->link_for('messages/write', ['rec_uname' => $m['username']]) ?>" data-dialog="size=50%">
- <?= Icon::create('mail')->asImg(['title' => _('Nachricht schreiben')]) ?>
+ <?= Icon::create('mail')->asSvg(['title' => _('Nachricht schreiben')]) ?>
</a>
<? if ($GLOBALS['perm']->have_studip_perm('tutor', $sem_id)): ?>
<?= $this->render_partial('course/studygroup/_members_options.php', compact('m')) ?>
diff --git a/app/views/course/studygroup/_members_list.php b/app/views/course/studygroup/_members_list.php
index c1dbc26..a8cec1e 100644
--- a/app/views/course/studygroup/_members_list.php
+++ b/app/views/course/studygroup/_members_list.php
@@ -51,7 +51,7 @@
<td class="actions">
<a href="<?= $controller->link_for('messages/write', ['rec_uname' => $m['username']]) ?>"
data-dialog="size=50%">
- <?= Icon::create('mail')->asImg(['title' => _('Nachricht schreiben')]) ?>
+ <?= Icon::create('mail')->asSvg(['title' => _('Nachricht schreiben')]) ?>
</a>
<? if ($GLOBALS['perm']->have_studip_perm('tutor', $sem_id)) : ?>
<?= $this->render_partial('course/studygroup/_members_options.php', compact('m')) ?>
diff --git a/app/views/course/studygroup/_members_options.php b/app/views/course/studygroup/_members_options.php
index 6c34b87..bad7242 100644
--- a/app/views/course/studygroup/_members_options.php
+++ b/app/views/course/studygroup/_members_options.php
@@ -1,18 +1,18 @@
<? if ($GLOBALS['perm']->have_studip_perm('dozent', $sem_id) && $GLOBALS['perm']->have_studip_perm('tutor', $sem_id, $m['user_id'])) : ?>
<a href="<?= $controller->link_for('course/studygroup/edit_members/downgrade', $type, ['user' => $m['username']]) ?>" data-confirm="<?= _('Wollen Sie die Person wirklich runterstufen?') ?>">
- <?= Icon::create('arr_2down')->asImg(['title' => _('Runterstufen')]) ?>
+ <?= Icon::create('arr_2down')->asSvg(['title' => _('Runterstufen')]) ?>
</a>
<? endif ?>
<? if ($GLOBALS['perm']->have_studip_perm('dozent', $sem_id) && !$GLOBALS['perm']->have_studip_perm('dozent', $sem_id, $m['user_id'])) : ?>
<a href="<?= $controller->link_for('course/studygroup/edit_members/promote', $type, ['user' => $m['username']]) ?>" data-confirm="<?= _('Wollen Sie die Person wirklich hochstufen?') ?>">
- <?= Icon::create('arr_2up')->asImg(['title' => _('Hochstufen')])?>
+ <?= Icon::create('arr_2up')->asSvg(['title' => _('Hochstufen')])?>
</a>
<? endif ?>
<? if ($m['user_id'] !== $GLOBALS['user']->id && $GLOBALS['perm']->have_studip_perm('dozent', $sem_id)): ?>
<a href="<?= $controller->link_for('course/studygroup/edit_members/remove', ['user' => $m['username']]) ?>"
data-confirm="<?= _('Möchten Sie die Person wirklich aus der Studiengruppe entfernen?') ?>">
- <?= Icon::create('trash')->asImg(['title' => _('Rauswerfen')])?>
+ <?= Icon::create('trash')->asSvg(['title' => _('Entfernen')])?>
</a>
<? endif; ?>
diff --git a/app/views/course/studygroup/members.php b/app/views/course/studygroup/members.php
index 503991d..060f339 100644
--- a/app/views/course/studygroup/members.php
+++ b/app/views/course/studygroup/members.php
@@ -88,11 +88,11 @@
</td>
<td class="actions">
<a href="<?= $controller->edit_members('accept', ['user' => $p->username]) ?>">
- <?= Icon::create('accept')->asImg(['title' => _('Eintragen')]) ?>
+ <?= Icon::create('accept')->asSvg(['title' => _('Eintragen')]) ?>
</a>
<a href="<?= $controller->edit_members('deny', ['user' => $p->username]) ?>" data-confirm="<?= _('Wollen Sie die Mitgliedschaft wirklich ablehnen?') ?>">
- <?= Icon::create('trash')->asImg(['title' => _('Mitgliedschaft ablehnen')]) ?>
+ <?= Icon::create('trash')->asSvg(['title' => _('Mitgliedschaft ablehnen')]) ?>
</a>
</td>
</tr>
@@ -156,7 +156,7 @@
</td>
<td class="actions">
<a href="<?= $controller->edit_members('cancelInvitation', ['user' => $p->user->username]) ?>" data-confirm="<?= _('Wollen Sie die Einladung wirklich löschen?') ?>">
- <?= Icon::create('trash')->asImg(['title' => _('Einladung löschen')]) ?>
+ <?= Icon::create('trash')->asSvg(['title' => _('Einladung löschen')]) ?>
</a>
</td>
</tr>
diff --git a/app/views/course/studygroup/widget.php b/app/views/course/studygroup/widget.php
index fc0f133..cf0f787 100644
--- a/app/views/course/studygroup/widget.php
+++ b/app/views/course/studygroup/widget.php
@@ -3,10 +3,10 @@
<h1>
<? if ($course->isStudygroup()) : ?>
- <?= Icon::create('seminar', Icon::ROLE_INFO)->asimg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('seminar', Icon::ROLE_INFO)->asSvg(['class' => "text-bottom"]) ?>
<?= _('Zugehörige Veranstaltung') ?>
<? else : ?>
- <?= Icon::create('studygroup', Icon::ROLE_INFO)->asimg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('studygroup', Icon::ROLE_INFO)->asSvg(['class' => "text-bottom"]) ?>
<?= _('Verknüpfte Studiengruppen') ?>
<? endif ?>
</h1>
diff --git a/app/views/course/timesrooms/_regularEvents.php b/app/views/course/timesrooms/_regularEvents.php
index 62e59b2..0fd733a 100644
--- a/app/views/course/timesrooms/_regularEvents.php
+++ b/app/views/course/timesrooms/_regularEvents.php
@@ -42,7 +42,7 @@
tabindex="0"
data-tooltip
aria-label="<?= htmlReady($booking_status_message) ?>">
- <?= $booking_status_icon->asImg(['class' => 'text-bottom']) ?>
+ <?= $booking_status_icon->asSvg(['class' => 'text-bottom']) ?>
<span class="tooltip-content"><?= $booking_status_message ?></span>
</span>
<a href="<?= ContentBoxHelper::href($metadate_id) ?>">
diff --git a/app/views/course/timesrooms/_roomRequest.php b/app/views/course/timesrooms/_roomRequest.php
index ffa72b0..5902e5f 100644
--- a/app/views/course/timesrooms/_roomRequest.php
+++ b/app/views/course/timesrooms/_roomRequest.php
@@ -59,7 +59,7 @@
<a class="load-in-new-row"
href="<?= $controller->link_for('course/room_requests/info/' . $rr->id) ?>"
aria-expanded="false">
- <?= Icon::create('info')->asImg(['title' => _('Weitere Informationen einblenden')]) ?>
+ <?= Icon::create('info')->asSvg(['title' => _('Weitere Informationen einblenden')]) ?>
</a>
<? $params = [] ?>
<? $dialog = []; ?>
diff --git a/app/views/course/timesrooms/editDate.php b/app/views/course/timesrooms/editDate.php
index 15c1986..f17c52a 100644
--- a/app/views/course/timesrooms/editDate.php
+++ b/app/views/course/timesrooms/editDate.php
@@ -82,7 +82,7 @@
['only_bookable_rooms' => '1']
) ?>" <?= Request::isDialog() ? 'data-dialog="size=normal"' : '' ?>
title="<?= _('Nur buchbare Räume anzeigen') ?>">
- <?= Icon::create('room-request')->asImg([
+ <?= Icon::create('room-request')->asSvg([
'class' => 'text-bottom',
'style' => 'margin-left: 0.2em; margin-top: 0.6em;',
]) ?>
diff --git a/app/views/course/topics/edit.php b/app/views/course/topics/edit.php
index a6b897e..88b5316 100644
--- a/app/views/course/topics/edit.php
+++ b/app/views/course/topics/edit.php
@@ -26,7 +26,7 @@
<label>
<? $folder = $topic->folders->first() ?>
<? if ($folder) : ?>
- <?= Icon::create('accept', Icon::ROLE_ACCEPT)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('accept', Icon::ROLE_ACCEPT)->asSvg(['class' => 'text-bottom']) ?>
<?= _('Dateiordner vorhanden') ?>
<? else : ?>
<input type="checkbox" name="folder" id="topic_folder" value="1">
@@ -38,7 +38,7 @@
<? if ($forum_activated) : ?>
<label>
<? if ($topic->forum_thread_url) : ?>
- <?= Icon::create('accept', Icon::ROLE_ACCEPT)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('accept', Icon::ROLE_ACCEPT)->asSvg(['class' => 'text-bottom']) ?>
<?= _('Forenthema vorhanden') ?>
<? else : ?>
<input type="checkbox" name="forumthread" id="topic_forumthread" value="1">
@@ -52,14 +52,14 @@
<label>
<input type="checkbox" name="date[<?= htmlReady($date->id) ?>]" value="1" class="text-bottom"
<? if (in_array($date->id, $date_ids)) echo 'checked'; ?>>
- <?= Icon::create('date', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('date', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= floor($date['date'] / 86400) !== floor($date['end_time'] / 86400) ? date("d.m.Y, H:i", $date['date'])." - ".date("d.m.Y, H:i", $date['end_time']) : date("d.m.Y, H:i", $date['date'])." - ".date("H:i", $date['end_time']) ?>
<? if (count($date->topics) > 0) : ?>
(
<? foreach ($date->topics as $key => $localtopic) : ?>
<a href="<?= $controller->index(['open' => $localtopic->id]) ?>">
- <?= Icon::create('topic')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('topic')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($localtopic->title) ?>
</a>
<? endforeach ?>
diff --git a/app/views/course/topics/index.php b/app/views/course/topics/index.php
index 67a86cb..e538542 100644
--- a/app/views/course/topics/index.php
+++ b/app/views/course/topics/index.php
@@ -23,7 +23,7 @@
<td>
<a href="#" name="<?=$topic->getId()?>" onClick="jQuery(this).closest('tr').toggleClass('open'); return false;">
<? if ($topic->paper_related): ?>
- <?= Icon::create('glossary')->asImg(array_merge(
+ <?= Icon::create('glossary')->asSvg(array_merge(
['class' => 'text-top'],
tooltip2(_('Thema behandelt eine Hausarbeit oder ein Referat'))
)) ?>
@@ -36,7 +36,7 @@
<? foreach ($topic->dates as $date) : ?>
<li>
<a href="<?= URLHelper::getLink("dispatch.php/course/dates/details/".$date->getId()) ?>" data-dialog="size=auto">
- <?= Icon::create('date', 'clickable')->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('date', 'clickable')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($date->getFullName()) ?>
</a>
</li>
@@ -64,7 +64,7 @@
<a href="<?= URLHelper::getLink(
'dispatch.php/course/files/index/' . $folder->id
) ?>">
- <?= $folder->getTypedFolder()->getIcon('clickable')->asImg(['class' => "text-bottom"]) ?>
+ <?= $folder->getTypedFolder()->getIcon('clickable')->asSvg(['class' => 'text-bottom']) ?>
<?= _('Dateiordner') ?>
</a>
</li>
@@ -74,7 +74,7 @@
<? if ($forum_activated && ($link_to_thread = $topic->forum_thread_url)) : ?>
<li>
<a href="<?= URLHelper::getLink($link_to_thread) ?>">
- <?= Icon::create('forum', 'clickable')->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('forum', 'clickable')->asSvg(['class' => 'text-bottom']) ?>
<?= _('Thema im Forum') ?>
</a>
</li>
diff --git a/app/views/course/wiki/ask_deleting.php b/app/views/course/wiki/ask_deleting.php
index 915e689..59d9145 100644
--- a/app/views/course/wiki/ask_deleting.php
+++ b/app/views/course/wiki/ask_deleting.php
@@ -15,7 +15,7 @@
data-confirm="<?= _('Wirklich die letzte Änderung löschen?') ?>"
formaction="<?= $controller->deleteversionURL($page, ['redirect_to' => 'page']) ?>"
>
- <?= Icon::create('archive2')->asImg(50) ?>
+ <?= Icon::create('archive2')->asSvg(50) ?>
<?= _('Nur die letzte Änderung löschen') ?>
</button>
</div>
@@ -27,7 +27,7 @@
data-confirm="<?= _('Wollen Sie wirklich die komplette Seite löschen?') ?>"
formaction="<?= $controller->deleteURL($page) ?>"
>
- <?= Icon::create('wiki')->asImg(50) ?>
+ <?= Icon::create('wiki')->asSvg(50) ?>
<?= _('Ganze Wikiseite löschen') ?>
</button>
</div>
diff --git a/app/views/course/wiki/blame.php b/app/views/course/wiki/blame.php
index d924c17..933c425 100644
--- a/app/views/course/wiki/blame.php
+++ b/app/views/course/wiki/blame.php
@@ -17,7 +17,7 @@
if (trim($collect) !== '') : ?>
<div class="wiki_line">
<div class="author">
- <a href="<?= URLhelper::getLink('dispatch.php/profile', ['username' => get_username($last_author)]) ?>" title="<?= htmlReady(get_fullname($last_author)) ?>">
+ <a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => get_username($last_author)]) ?>" title="<?= htmlReady(get_fullname($last_author)) ?>">
<?= Avatar::getAvatar($last_author)->getImageTag(Avatar::SMALL) ?>
<div class="author_name"><?= htmlReady(get_fullname($last_author)) ?></div>
</a>
@@ -26,7 +26,7 @@
href="<?= $controller->versiondiff(!$version || is_a($version, WikiPage::class) ? $version : $version->page, is_a($version, WikiVersion::class) ? $version->id : null) ?>"
data-dialog
title="<?= _('Änderungen anzeigen') ?>">
- <?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('log')->asSvg(['class' => 'text-bottom']) ?>
</a>
<div class="content">
<?= wikiReady($collect) ?>
diff --git a/app/views/course/wiki/history.php b/app/views/course/wiki/history.php
index 81fde59..f581ce2 100644
--- a/app/views/course/wiki/history.php
+++ b/app/views/course/wiki/history.php
@@ -32,7 +32,7 @@
</td>
<td data-sort-value="<?= htmlReady($page->user ? $page->user->getFullName() : _('unbekannt')) ?>">
<? if ($page->user) : ?>
- <a href="<?= URLhelper::getLink('dispatch.php/profile', ['username' => $page->user->username]) ?>">
+ <a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => $page->user->username]) ?>">
<? endif ?>
<?= Avatar::getAvatar($page['user_id'])->getImageTag(Avatar::SMALL) ?>
<?= htmlReady($page->user ? $page->user->getFullName() : _('unbekannt')) ?>
@@ -43,7 +43,7 @@
<td data-sort-value="<?= $page->chdate ?>"><?= $page->chdate > 0 ? date('d.m.Y H:i:s', $page->chdate) : _('unbekannt') ?></td>
<td class="actions">
<a href="<?= $controller->versiondiff($page) ?>" data-dialog>
- <?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('log')->asSvg(['class' => 'text-bottom']) ?>
</a>
</td>
</tr>
@@ -56,7 +56,7 @@
</td>
<td>
<? if ($version->user) : ?>
- <a href="<?= URLhelper::getLink('dispatch.php/profile', ['username' => $version->user->username]) ?>">
+ <a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => $version->user->username]) ?>">
<? endif ?>
<?= Avatar::getAvatar($version['user_id'])->getImageTag(Avatar::SMALL) ?>
<?= htmlReady($version->user ? $version->user->getFullName() : _('unbekannt')) ?>
@@ -67,7 +67,7 @@
<td><?= $version->mkdate > 0 ? date('d.m.Y H:i:s', $version->mkdate) : _('unbekannt') ?></td>
<td class="actions">
<a href="<?= $controller->versiondiff($page, $version->id) ?>" data-dialog>
- <?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('log')->asSvg(['class' => 'text-bottom']) ?>
</a>
</td>
</tr>
diff --git a/app/views/course/wiki/import.php b/app/views/course/wiki/import.php
index 7c602ef..7984dd3 100644
--- a/app/views/course/wiki/import.php
+++ b/app/views/course/wiki/import.php
@@ -29,14 +29,14 @@
<? if ($bad_course_search): ?>
<a href="<?= $controller->import() ?>"
data-dialog="1">
- <?= Icon::create('decline')->asImg([
+ <?= Icon::create('decline')->asSvg([
'class' => 'text-bottom',
'title' => _('Suche zurücksetzen'),
'onclick' => "STUDIP.QuickSearch.reset('wiki_import_form', 'selected_range_id');"
]) ?>
</a>
<? else : ?>
- <?= Icon::create('search')->asImg([
+ <?= Icon::create('search')->asSvg([
'class' => 'text-bottom',
'title' => _('Suche starten'),
'onclick' => "jQuery(this).closest('form').submit();"
diff --git a/app/views/course/wiki/newpages.php b/app/views/course/wiki/newpages.php
index b805645..bfc1232 100644
--- a/app/views/course/wiki/newpages.php
+++ b/app/views/course/wiki/newpages.php
@@ -106,7 +106,7 @@
<a href="<?= $controller->versiondiff($page, is_a($version, 'WikiVersion') ? $version->id : null) ?>"
title="<?= _('Einzelne Änderung anzeigen') ?>"
data-dialog>
- <?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('log')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
<? endforeach ?>
diff --git a/app/views/course/wiki/search.php b/app/views/course/wiki/search.php
index 0cc030d..53f20d4 100644
--- a/app/views/course/wiki/search.php
+++ b/app/views/course/wiki/search.php
@@ -102,7 +102,7 @@
<tr>
<td colspan="3">
<a href="<?= $controller->searchpage($page_id, ['search' => Request::get('search')]) ?>">
- <?= Icon::create('add')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('add')->asSvg(['class' => 'text-bottom']) ?>
<? if (count($pagedata['versions']) === 1) : ?>
<?= _('Weiterer Treffer in einer älteren Version.') ?>
<? else : ?>
diff --git a/app/views/event_log/show.php b/app/views/event_log/show.php
index a47ef48..133efdd 100644
--- a/app/views/event_log/show.php
+++ b/app/views/event_log/show.php
@@ -60,7 +60,7 @@
</select>
<a href="<?= $controller->show(['action_id' => $action_id]) ?>">
- <?= Icon::create('decline')->asImg(['title' => _('Neue Suche')]) ?>
+ <?= Icon::create('decline')->asSvg(['title' => _('neue Suche')]) ?>
</a>
</div>
</label>
diff --git a/app/views/fachabschluss/abschluesse/details.php b/app/views/fachabschluss/abschluesse/details.php
index f9be5fa..b475f40 100644
--- a/app/views/fachabschluss/abschluesse/details.php
+++ b/app/views/fachabschluss/abschluesse/details.php
@@ -14,7 +14,7 @@
<td class="actions">
<? if (MvvPerm::havePermWrite($fach)) : ?>
<a data-dialog href="<?= $controller->action_link('fach/' . $fach->id) ?>">
- <?= Icon::create('edit', 'clickable', ['title' => _('Fach bearbeiten')])->asImg(); ?>
+ <?= Icon::create('edit', 'clickable', ['title' => _('Fach bearbeiten')])->asSvg(); ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/fachabschluss/abschluesse/index.php b/app/views/fachabschluss/abschluesse/index.php
index 147078a..7e8947f 100644
--- a/app/views/fachabschluss/abschluesse/index.php
+++ b/app/views/fachabschluss/abschluesse/index.php
@@ -28,7 +28,7 @@
<td class="dont-hide actions" style="white-space: nowrap;">
<? if (MvvPerm::havePermWrite($abschluss)) : ?>
<a href="<?=$controller->action_link('abschluss/' . $abschluss->id)?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE, tooltip2(_('Abschluss bearbeiten')))->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE, tooltip2(_('Abschluss bearbeiten')))->asSvg(); ?>
</a>
<? endif; ?>
<? if (MvvPerm::havePermCreate($abschluss)) : ?>
@@ -43,7 +43,7 @@
'name' => 'delete'
]); ?>
<? else : ?>
- <?= Icon::create('trash', Icon::ROLE_INACTIVE, tooltip2(_('Abschluss kann nicht glöscht werden')))->asImg(); ?>
+ <?= Icon::create('trash', Icon::ROLE_INACTIVE, tooltip2(_('Abschluss kann nicht glöscht werden')))->asSvg(); ?>
<? endif; ?>
<? endif; ?>
</td>
diff --git a/app/views/fachabschluss/faecher/details.php b/app/views/fachabschluss/faecher/details.php
index ad773cd..b8abf4e 100644
--- a/app/views/fachabschluss/faecher/details.php
+++ b/app/views/fachabschluss/faecher/details.php
@@ -13,7 +13,7 @@
<td class="actions">
<? if (MvvPerm::havePermWrite($abschluss)) : ?>
<a data-dialog href="<?= $controller->action_link('abschluss/' . $abschluss->id) ?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE, ['title' => _('Abschluss bearbeiten')])->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE, ['title' => _('Abschluss bearbeiten')])->asSvg(); ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/fachabschluss/faecher/details_fachbereich.php b/app/views/fachabschluss/faecher/details_fachbereich.php
index 6ca7dc2..dd49a25 100644
--- a/app/views/fachabschluss/faecher/details_fachbereich.php
+++ b/app/views/fachabschluss/faecher/details_fachbereich.php
@@ -12,7 +12,7 @@
<td class="actions">
<? if (MvvPerm::havePermWrite($fach)) : ?>
<a href="<?= $controller->action_link('fach/' . $fach->id) ?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE, ['title' => _('Fach bearbeiten')])->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE, ['title' => _('Fach bearbeiten')])->asSvg(); ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/fachabschluss/faecher/fach.php b/app/views/fachabschluss/faecher/fach.php
index 08335db..08ade5f 100644
--- a/app/views/fachabschluss/faecher/fach.php
+++ b/app/views/fachabschluss/faecher/fach.php
@@ -70,7 +70,7 @@
<? if ($perm->haveFieldPerm('institut_id', MvvPerm::PERM_WRITE)): ?>
<div class="mvv-item-list-buttons">
<a href="#"
- class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Einrichtung entfernen')])->asImg(); ?></a>
+ class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Einrichtung entfernen')])->asSvg(); ?></a>
</div>
<? endif; ?>
<input type="hidden" name="institut_items[]" value="<?= $fachbereich->getId() ?>">
diff --git a/app/views/fachabschluss/faecher/index.php b/app/views/fachabschluss/faecher/index.php
index f2ba7a4..b42761e 100644
--- a/app/views/fachabschluss/faecher/index.php
+++ b/app/views/fachabschluss/faecher/index.php
@@ -27,7 +27,7 @@
<td class="dont-hide actions" style="white-space: nowrap;">
<? if (MvvPerm::havePermWrite($fach)) : ?>
<a href="<?= $controller->action_link('fach/' . $fach->id) ?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE, ['title' => _('Fach bearbeiten')])->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE, ['title' => _('Fach bearbeiten')])->asSvg(); ?>
</a>
<? endif; ?>
<? if (MvvPerm::havePermCreate($fach)) : ?>
@@ -39,7 +39,7 @@
'name' => 'delete'
]); ?>
<? else : ?>
- <?= Icon::create('trash', Icon::ROLE_INACTIVE, tooltip2(_('Fach kann nicht glöscht werden')))->asImg(); ?>
+ <?= Icon::create('trash', Icon::ROLE_INACTIVE, tooltip2(_('Fach kann nicht glöscht werden')))->asSvg(); ?>
<? endif; ?>
<? endif; ?>
</td>
diff --git a/app/views/fachabschluss/kategorien/index.php b/app/views/fachabschluss/kategorien/index.php
index 44c9bad..0f327ba 100644
--- a/app/views/fachabschluss/kategorien/index.php
+++ b/app/views/fachabschluss/kategorien/index.php
@@ -40,7 +40,7 @@
<td style="white-space: nowrap;" class="dont-hide actions">
<? if ($perm->havePermWrite()) : ?>
<a href="<?= $controller->action_link('kategorie/' . $kategorie->id) ?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE, tooltip2(_('Abschluss-Kategorie bearbeiten')))->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE, tooltip2(_('Abschluss-Kategorie bearbeiten')))->asSvg(); ?>
</a>
<? endif; ?>
<? if ($perm->havePermCreate()) : ?>
@@ -52,7 +52,7 @@
'name' => 'delete'
]); ?>
<? else : ?>
- <?= Icon::create('trash', Icon::ROLE_INACTIVE, tooltip2(_('Löschen nicht möglich')))->asImg(); ?>
+ <?= Icon::create('trash', Icon::ROLE_INACTIVE, tooltip2(_('Löschen nicht möglich')))->asSvg(); ?>
<? endif; ?>
<? endif; ?>
</td>
diff --git a/app/views/file/_terms_of_use_select.php b/app/views/file/_terms_of_use_select.php
index 42d1678..a4616c6 100644
--- a/app/views/file/_terms_of_use_select.php
+++ b/app/views/file/_terms_of_use_select.php
@@ -24,8 +24,8 @@ if (!$selected_terms_of_use_id) {
aria-description="<?= htmlReady(kill_format($content_terms_of_use_entry->description)) ?>">
<label for="content_terms_of_use-<?= htmlReady($content_terms_of_use_entry->id) ?>">
- <?= Icon::create('radiobutton-unchecked')->asImg(['class' => 'arrow']) ?>
- <?= Icon::create('radiobutton-checked')->asImg(['class' => 'check']) ?>
+ <?= Icon::create('radiobutton-unchecked')->asSvg(['class' => 'arrow']) ?>
+ <?= Icon::create('radiobutton-checked')->asSvg(['class' => 'check']) ?>
<div class="text">
<?= htmlReady($content_terms_of_use_entry->name) ?>
</div>
@@ -34,7 +34,7 @@ if (!$selected_terms_of_use_id) {
<? if (filter_var($content_terms_of_use_entry['icon'], FILTER_VALIDATE_URL)): ?>
<img src="<?= htmlReady($content_terms_of_use_entry['icon']) ?>" width="32" height="32">
<? else : ?>
- <?= Icon::create($content_terms_of_use_entry['icon'])->asImg(Icon::SIZE_LARGE) ?>
+ <?= Icon::create($content_terms_of_use_entry['icon'])->asSvg(Icon::SIZE_LARGE) ?>
<? endif ?>
<? endif ?>
</div>
diff --git a/app/views/file/add_files_window.php b/app/views/file/add_files_window.php
index 8b963e7..bdde120 100644
--- a/app/views/file/add_files_window.php
+++ b/app/views/file/add_files_window.php
@@ -23,7 +23,7 @@ if ($folder_id) {
<a class="important-item" data-dialog="size=medium-43"
href="<?= $controller->link_for('file/add_from_library/' . $folder_id)?>">
<div class="icon">
- <?= Icon::create('literature')->asImg(50) ?>
+ <?= Icon::create('literature')->asSvg(50) ?>
<div><?= _('Bibliothek') ?></div>
</div>
<div class="description">
@@ -35,29 +35,29 @@ if ($folder_id) {
<? endif ?>
<div>
<a href="#" onclick="jQuery('.file_selector input[type=file]').first().click(); return false;">
- <?= Icon::create('computer')->asImg(50) ?>
+ <?= Icon::create('computer')->asSvg(50) ?>
<?= _('Mein Computer') ?>
</a>
<a href="<?= $controller->link_for('file/add_url/' . $folder_id, array_merge($options, ['from_plugin' => ""])) ?>" data-dialog="size=medium">
- <?= Icon::create('globe')->asImg(50) ?>
+ <?= Icon::create('globe')->asSvg(50) ?>
<?= _('Webadresse') ?>
</a>
<a href="<?= $controller->link_for('file/choose_file/' . Folder::findTopFolder($GLOBALS['user']->id)->getId(), array_merge($options, ['from_plugin' => ""])) ?>" data-dialog>
- <?= Icon::create('files')->asImg(50) ?>
+ <?= Icon::create('files')->asSvg(50) ?>
<?= _('Persönlicher Dateibereich') ?>
</a>
<a href="<?= $controller->link_for('file/choose_file_from_course/' . $folder_id, array_merge($options, ['from_plugin' => ""])) ?>" data-dialog>
- <?= Icon::create('seminar')->asImg(50) ?>
+ <?= Icon::create('seminar')->asSvg(50) ?>
<?= _('Meine Veranstaltungen') ?>
</a>
<? if ($range instanceof Course && $GLOBALS['perm']->have_studip_perm('tutor', $range->id) && $show_library_functions) : ?>
<a href="<?= $controller->link_for('library_file/select_type/' . $folder_id) ?>" data-dialog="size=auto">
- <?= Icon::create('literature')->asImg(50) ?>
+ <?= Icon::create('literature')->asSvg(50) ?>
<?= _('Literatur') ?>
</a>
<? if ($GLOBALS['LIBRARY_CATALOGS'] && !$range->getSemClass()['studygroup_mode'] && !$library_search_description) : ?>
<a href="<?= $controller->link_for('file/add_from_library/' . $folder_id) ?>" data-dialog="size=medium-43">
- <?= Icon::create('literature')->asImg(50) ?>
+ <?= Icon::create('literature')->asSvg(50) ?>
<?= _('Originaldokument aus Bibliothek') ?>
</a>
<? endif ?>
@@ -65,7 +65,7 @@ if ($folder_id) {
<? if (Config::get()->OERCAMPUS_ENABLED && $GLOBALS['perm']->have_perm(Config::get()->OERCAMPUS_PUBLIC_STATUS)) : ?>
<a href="<?= $controller->link_for('oer/addfile/choose_file', array_merge($options, ['from_plugin' => ""])) ?>"
data-dialog="size=800x800">
- <?= Icon::create('oer-campus')->asImg(50) ?>
+ <?= Icon::create('oer-campus')->asSvg(50) ?>
<?= _('OER Campus') ?>
</a>
<? endif ?>
@@ -74,7 +74,7 @@ if ($folder_id) {
<? $nav = $plugin->getFileSelectNavigation() ?>
<? if ($nav): ?>
<a href="<?= $controller->link_for('file/choose_file/', array_merge($options, ['from_plugin' => get_class($plugin)])) ?>" data-dialog>
- <?= $nav->getImage()->asImg(50) ?>
+ <?= $nav->getImage()->asSvg(50) ?>
<?= htmlReady($nav->getTitle()) ?>
</a>
<? endif; ?>
diff --git a/app/views/file/add_from_library.php b/app/views/file/add_from_library.php
index 2f1ad54..5a8b396 100644
--- a/app/views/file/add_from_library.php
+++ b/app/views/file/add_from_library.php
@@ -86,9 +86,9 @@
<label for="result_<?= htmlReady($result_id) ?>">
<section class="contentbox">
<header>
- <span class="title no-overflow"><?= $result->getIcon()->asImg() ?> <?= $result->getTitle('long-comma') ?></span>
+ <span class="title no-overflow"><?= $result->getIcon()->asSvg() ?> <?= $result->getTitle('long-comma') ?></span>
<nav>
- <?= Icon::create('accept', 'status-green')->asImg(
+ <?= Icon::create('accept', 'status-green')->asSvg(
20,
['class' => 'hidden-checkbox-checked-icon']
) ?>
@@ -156,7 +156,7 @@
<? endif ?>
<? if (!empty($library_plugins)) : ?>
<section class="big-help-box">
- <?= Icon::create('support')->asImg(96, ['class' => 'icon']) ?>
+ <?= Icon::create('support')->asSvg(96, ['class' => 'icon']) ?>
<div class="text">
<strong><?= _('Passendes Dokument nicht gefunden?') ?></strong>
<p><?= _('Gerne unterstützen wir Sie bei der Suche nach Dokumenten.') ?></p>
diff --git a/app/views/file/choose_file.php b/app/views/file/choose_file.php
index 1b59a9d..83f4b54 100644
--- a/app/views/file/choose_file.php
+++ b/app/views/file/choose_file.php
@@ -13,7 +13,7 @@ if (Request::get('to_folder_id')) {
<div style="text-align: center; margin-bottom: 20px;">
<?= _('Kopieren nach') ?>
- <?= Icon::create('folder-full', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('folder-full', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($to_folder_name) ?>
</div>
@@ -95,9 +95,9 @@ if (Request::get('to_folder_id')) {
<a href="<?= $controller->link_for('file/choose_file/' . $subfolder->id, $options) ?>" data-dialog>
<? endif ?>
<? if (!empty($is_empty)): ?>
- <?= Icon::create('folder-empty')->asImg(24) ?>
+ <?= Icon::create('folder-empty')->asSvg(24) ?>
<? else: ?>
- <?= Icon::create('folder-full')->asImg(24) ?>
+ <?= Icon::create('folder-full')->asSvg(24) ?>
<? endif; ?>
<? if ($subfolder->isReadable($GLOBALS['user']->id)) : ?>
</a>
@@ -128,11 +128,11 @@ if (Request::get('to_folder_id')) {
<form action="<?= $controller->link_for('file/choose_file/' . $top_folder->id, $options) ?>" method="post" data-dialog>
<input type="hidden" name="file_id" value="<?= htmlReady($file->getId()) ?>">
<a href="#" onclick="jQuery(this).closest('form').submit(); return false;">
- <?= FileManager::getIconForMimeType($file->getMimetype())->asImg(24) ?>
+ <?= FileManager::getIconForMimeType($file->getMimetype())->asSvg(24) ?>
</a>
</form>
<? else: ?>
- <?= FileManager::getIconForMimeType($file->getMimetype(), Icon::ROLE_INACTIVE)->asImg(24) ?>
+ <?= FileManager::getIconForMimeType($file->getMimetype(), Icon::ROLE_INACTIVE)->asSvg(24) ?>
<? endif ?>
</td>
<td>
diff --git a/app/views/file/choose_file_from_course.php b/app/views/file/choose_file_from_course.php
index 6de5332..9fb4378 100644
--- a/app/views/file/choose_file_from_course.php
+++ b/app/views/file/choose_file_from_course.php
@@ -57,7 +57,7 @@ if (Request::get('range_type')) {
</td>
<td class="actions">
<a href="<?= $controller->link_for('file/choose_file_from_course/' . $folder_id, array_merge($options, ['course_id' => $course->id])) ?>" data-dialog>
- <?= Icon::create('folder-full')->asImg(30) ?>
+ <?= Icon::create('folder-full')->asSvg(30) ?>
</a>
</td>
</tr>
diff --git a/app/views/file/choose_folder.php b/app/views/file/choose_folder.php
index 955aa8f..1f9daa2 100644
--- a/app/views/file/choose_folder.php
+++ b/app/views/file/choose_folder.php
@@ -23,7 +23,7 @@ $buttonLabels = [
<div style="text-align: center; margin-bottom: 20px;">
<?= $headings[$options['copymode']] ?>
- <?= Icon::create('folder-full', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('folder-full', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($top_folder_name) ?>
</div>
@@ -104,9 +104,9 @@ $buttonLabels = [
<!-- neu -->
<button formaction="<?= $controller->action_link('choose_folder/' . $subfolder->getId()) ?>" class="undecorated" data-dialog>
<? if ($subfolder->is_empty): ?>
- <?= Icon::create('folder-empty')->asImg(24) ?>
+ <?= Icon::create('folder-empty')->asSvg(24) ?>
<? else: ?>
- <?= Icon::create('folder-full')->asImg(24) ?>
+ <?= Icon::create('folder-full')->asSvg(24) ?>
<? endif; ?>
</button>
</td>
@@ -127,9 +127,9 @@ $buttonLabels = [
<tr>
<td class="document-icon" data-sort-value="0">
<? if ($subfolder->is_empty): ?>
- <?= Icon::create('folder-empty', Icon::ROLE_INACTIVE)->asImg(24) ?>
+ <?= Icon::create('folder-empty', Icon::ROLE_INACTIVE)->asSvg(24) ?>
<? else: ?>
- <?= Icon::create('folder-full', Icon::ROLE_INACTIVE)->asImg(24) ?>
+ <?= Icon::create('folder-full', Icon::ROLE_INACTIVE)->asSvg(24) ?>
<? endif ?>
</td>
<td>
diff --git a/app/views/file/new_edit_folder_form.php b/app/views/file/new_edit_folder_form.php
index c89f4c2..a563ea6 100644
--- a/app/views/file/new_edit_folder_form.php
+++ b/app/views/file/new_edit_folder_form.php
@@ -27,8 +27,8 @@
id="folder-type-<?= htmlReady($folder_type['class']) ?>"
<? if ($folder_type['class'] === get_class($folder)) echo 'checked'; ?>>
<label for="folder-type-<?= htmlReady($folder_type['class']) ?>">
- <?= Icon::create('radiobutton-unchecked')->asImg(['class' => 'arrow']) ?>
- <?= Icon::create('radiobutton-checked')->asImg(['class' => 'check']) ?>
+ <?= Icon::create('radiobutton-unchecked')->asSvg(['class' => 'arrow']) ?>
+ <?= Icon::create('radiobutton-checked')->asSvg(['class' => 'check']) ?>
<div class="text">
<?= htmlReady($folder_type['name']) ?>
<? if ($template = $folder_type['instance']->getDescriptionTemplate()): ?>
@@ -37,7 +37,7 @@
</div>
<div class="icon">
<? if ($folder_type['icon']) : ?>
- <?= $folder_type['icon']->asImg(32) ?>
+ <?= $folder_type['icon']->asSvg(32) ?>
<? endif ?>
</div>
</label>
diff --git a/app/views/file/oer_post_upload.php b/app/views/file/oer_post_upload.php
index 30b8926..bbd23db 100644
--- a/app/views/file/oer_post_upload.php
+++ b/app/views/file/oer_post_upload.php
@@ -17,13 +17,13 @@ if (!isset($selected_oer_upload)) {
<? if (0 == $selected_oer_upload) echo 'checked'; ?>>
<label for="oer-upload-no">
<div class="icon">
- <?= Icon::create('decline')->asImg(32) ?>
+ <?= Icon::create('decline')->asSvg(32) ?>
</div>
<div class="text">
<?= _('Nicht für den OER-Campus bereitstellen.') ?>
</div>
- <?= Icon::create('arr_1down')->asImg(24, ['class' => 'arrow']) ?>
- <?= Icon::create('check-circle')->asImg(32, ['class' => 'check']) ?>
+ <?= Icon::create('arr_1down')->asSvg(24, ['class' => 'arrow']) ?>
+ <?= Icon::create('check-circle')->asSvg(32, ['class' => 'check']) ?>
</label>
<div class="oer_upload_description">
<div class="description">
@@ -36,13 +36,13 @@ if (!isset($selected_oer_upload)) {
<? if (1 == $selected_oer_upload) echo 'checked'; ?>>
<label for="oer-upload-yes">
<div class="icon">
- <?= Icon::create('accept')->asImg(32) ?>
+ <?= Icon::create('accept')->asSvg(32) ?>
</div>
<div class="text">
<?= _('Jetzt für den OER-Campus bereitstellen.') ?>
</div>
- <?= Icon::create('arr_1down')->asImg(24, ['class' => 'arrow']) ?>
- <?= Icon::create('check-circle')->asImg(32, ['class' => 'check']) ?>
+ <?= Icon::create('arr_1down')->asSvg(24, ['class' => 'arrow']) ?>
+ <?= Icon::create('check-circle')->asSvg(32, ['class' => 'check']) ?>
</label>
<div class="oer_upload_description">
<div class="description">
@@ -54,13 +54,13 @@ if (!isset($selected_oer_upload)) {
<? if (2 == $selected_oer_upload) echo 'checked'; ?>>
<label for="oer-upload-later">
<div class="icon">
- <?= Icon::create('date')->asImg(32) ?>
+ <?= Icon::create('date')->asSvg(32) ?>
</div>
<div class="text">
<?= _('Zu einem späteren Zeitpunkt für den OER-Campus bereitstellen.') ?>
</div>
- <?= Icon::create('arr_1down')->asImg(24, ['class' => 'arrow']) ?>
- <?= Icon::create('check-circle')->asImg(32, ['class' => 'check']) ?>
+ <?= Icon::create('arr_1down')->asSvg(24, ['class' => 'arrow']) ?>
+ <?= Icon::create('check-circle')->asSvg(32, ['class' => 'check']) ?>
</label>
<div class="oer_upload_description">
<div class="description">
diff --git a/app/views/file/suggest_oer.php b/app/views/file/suggest_oer.php
index 64f02e8..39d5892 100644
--- a/app/views/file/suggest_oer.php
+++ b/app/views/file/suggest_oer.php
@@ -36,7 +36,7 @@
</h1>
</header>
<div id="oer_preview_image">
- <?= Icon::create($icon_shape)->asimg(160) ?>
+ <?= Icon::create($icon_shape)->asSvg(160) ?>
</div>
</article>
</label>
diff --git a/app/views/file/unzipquestion.php b/app/views/file/unzipquestion.php
index 361ae63..c3b82d1 100644
--- a/app/views/file/unzipquestion.php
+++ b/app/views/file/unzipquestion.php
@@ -4,7 +4,7 @@
<input type="hidden" name="file_refs[]" value="<?= htmlReady($file->getId()) ?>">
<? endforeach ?>
- <?= Icon::create('unit-test', Icon::ROLE_INACTIVE)->asImg(120, ['style' => 'display: block; margin-left: auto; margin-right: auto;']) ?>
+ <?= Icon::create('unit-test', Icon::ROLE_INACTIVE)->asSvg(120, ['style' => 'display: block; margin-left: auto; margin-right: auto;']) ?>
<?= _('Soll diese ZIP-Datei entpackt werden?') ?>
diff --git a/app/views/file/upload_window.php b/app/views/file/upload_window.php
index 5c2bc2e..d5b368f 100644
--- a/app/views/file/upload_window.php
+++ b/app/views/file/upload_window.php
@@ -6,11 +6,11 @@
<ul class="filenames clean"></ul>
<div class="uploadbar uploadbar-outer">
<div class="uploadbar uploadbar-inner">
- <?= Icon::create('upload', Icon::ROLE_INFO_ALT)->asImg(30) ?>
- <?= Icon::create('ufo', Icon::ROLE_INFO_ALT)->asImg(30, ['class' => 'ufo']) ?>
+ <?= Icon::create('upload', Icon::ROLE_INFO_ALT)->asSvg(30) ?>
+ <?= Icon::create('ufo', Icon::ROLE_INFO_ALT)->asSvg(30, ['class' => 'ufo']) ?>
</div>
- <?= Icon::create('upload')->asImg(30) ?>
+ <?= Icon::create('upload')->asSvg(30) ?>
<span class="upload-progress"></span>
</div>
diff --git a/app/views/files/_fileref_tr.php b/app/views/files/_fileref_tr.php
index fc486ae..a7c1156 100644
--- a/app/views/files/_fileref_tr.php
+++ b/app/views/files/_fileref_tr.php
@@ -21,13 +21,13 @@ if ($file->isDownloadable($GLOBALS['user']->id)) {
<? endif ?>
</td>
<? endif ?>
- <td class="document-icon" data-sort-value="<?= crc32($file->getMimeType()) ?>">
+ <td class="file-icon" data-sort-value="<?= crc32($file->getMimeType()) ?>">
<? if ($file->isDownloadable($GLOBALS['user']->id)) : ?>
<a href="<?= htmlReady($file->getDownloadURL()) ?>" target="_blank" rel="noopener noreferrer">
- <?= $file->getIcon(Icon::ROLE_CLICKABLE)->asImg(24) ?>
+ <?= $file->getIcon(Icon::ROLE_CLICKABLE)->asSvg(24) ?>
</a>
<? else : ?>
- <?= $file->getIcon(Icon::ROLE_INACTIVE)->asImg(24) ?>
+ <?= $file->getIcon(Icon::ROLE_INACTIVE)->asSvg(24, ['class' => 'icon-inactive']) ?>
<? endif ?>
</td>
<td data-sort-value="<?= htmlReady($file->getFilename()) ?>">
@@ -41,7 +41,7 @@ if ($file->isDownloadable($GLOBALS['user']->id)) {
<?php $terms = $file->getTermsOfUse() ?>
<? if ($terms && !empty($topFolder) && !$terms->isDownloadable($topFolder->range_id, $topFolder->range_type, false)) : ?>
- <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asImg(['title' => _('Das Herunterladen dieser Datei ist nur eingeschränkt möglich.')]) ?>
+ <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asSvg(['title' => _('Das Herunterladen dieser Datei ist nur eingeschränkt möglich.')]) ?>
<? endif ?>
</td>
<? $size = $file->getSize() ?>
diff --git a/app/views/files/_folder_tr.php b/app/views/files/_folder_tr.php
index 99ad224..d74c71a 100644
--- a/app/views/files/_folder_tr.php
+++ b/app/views/files/_folder_tr.php
@@ -31,7 +31,7 @@ if ($folder->isReadable($GLOBALS['user']->id)) {
</td>
<td class="document-icon" data-sort-value="<?=crc32(get_class($folder))?>">
<a href="<?= $controller->link_for($controllerpath . '/' . $folder->getId()) ?>">
- <?= $folder->getIcon('clickable')->asImg(Icon::SIZE_FILES_TABLE) ?>
+ <?= $folder->getIcon('clickable')->asSvg(Icon::SIZE_FILES_TABLE) ?>
</a>
</td>
<td>
diff --git a/app/views/files/configure.php b/app/views/files/configure.php
index 5ab6eea..d4d50c7 100644
--- a/app/views/files/configure.php
+++ b/app/views/files/configure.php
@@ -1,7 +1,7 @@
<div class="file_select_possibilities">
<? foreach ($configure_urls as $url) : ?>
<a href="<?= htmlReady($url['url']) ?>" data-dialog>
- <?= $url['icon']->asImg(50) ?>
+ <?= $url['icon']->asSvg(50) ?>
<?= htmlReady($url['name']) ?>
</a>
<? endforeach ?>
diff --git a/app/views/files_dashboard/_input-group-search.php b/app/views/files_dashboard/_input-group-search.php
index 258f83b..df65ddf 100644
--- a/app/views/files_dashboard/_input-group-search.php
+++ b/app/views/files_dashboard/_input-group-search.php
@@ -10,7 +10,7 @@
<span class="input-group-append">
<button type="submit" class="button">
- <?= Icon::create('search')->asImg(['title' => _("Suche starten")]) ?>
+ <?= Icon::create('search')->asSvg(['title' => _('Suche starten')]) ?>
</button>
<? if (!empty($query)) : ?>
diff --git a/app/views/files_dashboard/_search_tr.php b/app/views/files_dashboard/_search_tr.php
index 607de71..6048261 100644
--- a/app/views/files_dashboard/_search_tr.php
+++ b/app/views/files_dashboard/_search_tr.php
@@ -3,10 +3,10 @@
<td class="files-search-icon">
<? if ($searchResult['folder']->isFileDownloadable($searchResult['fileRef'], $user->id)) : ?>
<a href="<?= htmlReady($searchResult['fileRef']->getDownloadURL('force_download')) ?>" target="_blank" rel="noopener noreferrer">
- <?= FileManager::getIconForFileRef($searchResult['fileRef'])->asImg(24) ?>
+ <?= FileManager::getIconForFileRef($searchResult['fileRef'])->asSvg(24) ?>
</a>
<? else : ?>
- <?= FileManager::getIconForFileRef($searchResult['fileRef'], Icon::ROLE_INACTIVE)->asImg(24) ?>
+ <?= FileManager::getIconForFileRef($searchResult['fileRef'], Icon::ROLE_INACTIVE)->asSvg(24) ?>
<? endif ?>
</td>
@@ -21,7 +21,7 @@
<? if ($searchResult['fileRef']->terms_of_use &&
$searchResult['fileRef']->terms_of_use->download_condition > 0) : ?>
- <?= Icon::create('lock-locked', Icon::ROLE_INACTIVE)->asImg([
+ <?= Icon::create('lock-locked', Icon::ROLE_INACTIVE)->asSvg([
'class' => 'text-top',
'title' => _('Das Herunterladen dieser Datei ist nur eingeschränkt möglich.')]) ?>
<? endif; ?>
@@ -35,7 +35,7 @@
<? if ($searchResult['fileRef']->terms_of_use &&
$searchResult['fileRef']->terms_of_use->download_condition > 0) : ?>
- <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asImg([
+ <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asSvg([
'class' => 'text-top',
'title' => _('Das Herunterladen dieser Datei ist nur eingeschränkt möglich.')]) ?>
<? endif; ?>
diff --git a/app/views/help_content/admin_overview.php b/app/views/help_content/admin_overview.php
index 05cf2e1..fd6e9b8 100644
--- a/app/views/help_content/admin_overview.php
+++ b/app/views/help_content/admin_overview.php
@@ -52,10 +52,10 @@
<td class="actions">
<a href="<?= URLHelper::getURL('dispatch.php/help_content/edit/' . $help_content_id) ?>" <?= tooltip(_('Hilfe-Text bearbeiten')) ?>
data-dialog="size=auto;reload-on-close">
- <?= Icon::create('edit', 'clickable')->asImg() ?></a>
+ <?= Icon::create('edit', 'clickable')->asSvg() ?></a>
<a href="<?= URLHelper::getURL('dispatch.php/help_content/delete/' . $help_content_id) ?>" <?= tooltip(_('Hilfe-Text löschen')) ?>
data-dialog="size=auto;reload-on-close">
- <?= Icon::create('trash', 'clickable')->asImg() ?></a>
+ <?= Icon::create('trash', 'clickable')->asSvg() ?></a>
</td>
</tr>
<? endforeach ?>
diff --git a/app/views/institute/extern/new.php b/app/views/institute/extern/new.php
index 34736a9..356831a 100644
--- a/app/views/institute/extern/new.php
+++ b/app/views/institute/extern/new.php
@@ -10,7 +10,7 @@
<li class="content-item">
<a class="content-item-link" href="<?= $controller->edit($type_id) ?>">
<div class="content-item-img-wrapper">
- <?= Icon::create($config_type['icon'])->asImg(64) ?>
+ <?= Icon::create($config_type['icon'])->asSvg(64) ?>
</div>
<div class="content-item-text">
<p class="content-item-title">
diff --git a/app/views/login/index.php b/app/views/login/index.php
index 96931e6..2488440 100644
--- a/app/views/login/index.php
+++ b/app/views/login/index.php
@@ -94,10 +94,10 @@ $enable_news = count($news_entries) > 0;
<? if ($enable_faq && $enable_news): ?>
<div id="login-infobox-button-wrapper">
<button id="hide-faq" class="selected" title="<?= _('Ankündigungen anzeigen') ?>">
- <?= Icon::create('news')->asImg(24, ['style' => 'align-self: end;']) ?>
+ <?= Icon::create('news')->asSvg(24, ['style' => 'align-self: end;']) ?>
</button>
<button id="show-faq" title="<?= _('Hinweise zum Login anzeigen')?>">
- <?= Icon::create('faq')->asImg(24, ['style' => 'align-self: end;']) ?>
+ <?= Icon::create('faq')->asSvg(24, ['style' => 'align-self: end;']) ?>
</button>
</div>
diff --git a/app/views/lti/_link_user_info.php b/app/views/lti/_link_user_info.php
index 568aaf8..0bdafc4 100644
--- a/app/views/lti/_link_user_info.php
+++ b/app/views/lti/_link_user_info.php
@@ -26,13 +26,13 @@
<p>
<? if ($link->deployment->tool->terms_of_use_url) : ?>
<a href="<?= htmlReady($link->deployment->tool->terms_of_use_url) ?>">
- <?= Icon::create('link-extern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-extern')->asSvg(['class' => 'text-bottom']) ?>
<?= _('Nutzungsbedingungen') ?>
</a>
<? endif ?>
<? if ($link->deployment->tool->privacy_policy_url) : ?>
<a href="<?= htmlReady($link->deployment->tool->privacy_policy_url) ?>">
- <?= Icon::create('link-extern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-extern')->asSvg(['class' => 'text-bottom']) ?>
<?= _('Datenschutzerklärung') ?>
</a>
<? endif ?>
diff --git a/app/views/lti/_tool_info.php b/app/views/lti/_tool_info.php
index fb9657e..d4248fa 100644
--- a/app/views/lti/_tool_info.php
+++ b/app/views/lti/_tool_info.php
@@ -19,12 +19,12 @@
<dd>
<? if ($link && $link->launch_url) : ?>
<a href="<?= htmlReady($link->launch_url) ?>">
- <?= Icon::create('link-extern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-extern')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($link->launch_url) ?>
</a>
<? else : ?>
<a href="<?= htmlReady($tool->launch_url) ?>">
- <?= Icon::create('link-extern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-extern')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($tool->launch_url) ?>
</a>
<? endif ?>
@@ -69,7 +69,7 @@
<ul>
<li>
<a href="<?= $controller->link_for('course/lti/iframe', $link->id) ?>">
- <?= Icon::create('link-extern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-extern')->asSvg(['class' => 'text-bottom']) ?>
<?= $controller->link_for('course/lti/iframe', $link->id) ?>
</a>
</li>
diff --git a/app/views/lvgruppen/lvgruppen/details.php b/app/views/lvgruppen/lvgruppen/details.php
index 56b34d4..d42b689 100644
--- a/app/views/lvgruppen/lvgruppen/details.php
+++ b/app/views/lvgruppen/lvgruppen/details.php
@@ -66,11 +66,11 @@
<span style="margin-left: 20%" onClick="jQuery('#mvv-lvgruppen-semester').find('.mvv-sem-hidden').slideToggle(); jQuery(this).find('span').toggle(); return false;">
<a href="<?= $controller->action_link('details/' . $lvgruppe->id, ['all_sem' => 1]) ?>">
<span>
- <?= Icon::create('arr_1up', Icon::ROLE_CLICKABLE, ['style' => 'vertical-align:text-bottom;'])->asImg(); ?>
+ <?= Icon::create('arr_1up', Icon::ROLE_CLICKABLE, ['style' => 'vertical-align:text-bottom;'])->asSvg(); ?>
<?= _('Alle Semester anzeigen') ?>
</span>
<span style="display: none;">
- <?= Icon::create('arr_1down', Icon::ROLE_CLICKABLE, ['style' => 'vertical-align:text-bottom;'])->asImg(); ?>
+ <?= Icon::create('arr_1down', Icon::ROLE_CLICKABLE, ['style' => 'vertical-align:text-bottom;'])->asSvg(); ?>
<?= _('Nur aktuelle Semester anzeigen') ?>
</span>
</a>
diff --git a/app/views/materialien/files/add_dokument.php b/app/views/materialien/files/add_dokument.php
index bc72ce2..bf92e2e 100644
--- a/app/views/materialien/files/add_dokument.php
+++ b/app/views/materialien/files/add_dokument.php
@@ -37,7 +37,7 @@
<td>
<div class="attachments" style="<?= (empty($documents) || !array_key_exists($key, $documents)) ? '' : 'display: none;'?>">
<span style="cursor:pointer;" onClick="$('#fileselector_<?= $language_key; ?>').toggle();$(this).toggle();">
- <?= Icon::create('add')->asImg(['title' => _('Datei hinzufügen'), 'class' => 'text-bottom']); ?>
+ <?= Icon::create('add')->asSvg(['title' => _('Datei hinzufügen'), 'class' => 'text-bottom']); ?>
<?= _('Datei hinzufügen') ?>
</span>
<div id="fileselector_<?= $language_key; ?>" style="display:none;">
@@ -48,13 +48,13 @@
<span class="name"></span>
<span class="size"></span>
<button class="refresh_attachment as-link" data-language="<?= htmlReady($language_key) ?>">
- <?= Icon::create('refresh')->asImg([
+ <?= Icon::create('refresh')->asSvg([
'class' => 'text-bottom',
'title' => _('Datei aktualisieren'),
]) ?>
</button>
<button class="remove_attachment as-link">
- <?= Icon::create('trash')->asImg([
+ <?= Icon::create('trash')->asSvg([
'class' => 'text-bottom',
'title' => _('Datei löschen'),
]) ?>
@@ -69,8 +69,8 @@
</div>
<label id="upload_chooser" style="cursor: pointer;">
<input type="file" id="fileupload" multiple onChange="STUDIP.MVV.Document.upload_from_input(this, '<?= $language_key; ?>');" style="display: none;">
- <?= Icon::create('upload')->asImg(['title' => _('Datei hochladen'), 'class' => 'text-bottom']) ?>
- <?= _("Datei hochladen") ?>
+ <?= Icon::create('upload')->asSvg(['title' => _('Datei hochladen'), 'class' => 'text-bottom']) ?>
+ <?= _('Datei hochladen') ?>
</label>
<br>
<b><?= _('oder'); ?></b>
@@ -91,13 +91,13 @@
<span class="name"><?= htmlReady($documents[$language_key]->filename) ?></span>
<span class="size"><?= relsize($documents[$language_key]->file_ref->size) ?></span>
<button class="refresh_attachment as-link" data-language="<?= htmlReady($language_key) ?>">
- <?= Icon::create('refresh')->asImg([
+ <?= Icon::create('refresh')->asSvg([
'class' => 'text-bottom',
'title' => _('Datei aktualisieren'),
]) ?>
</button>
<button class="remove_attachment as-link">
- <?= Icon::create('trash')->asImg([
+ <?= Icon::create('trash')->asSvg([
'class' => 'text-bottom',
'title' => _('Datei löschen'),
]) ?>
diff --git a/app/views/materialien/files/index.php b/app/views/materialien/files/index.php
index ae26c71..60f713f 100644
--- a/app/views/materialien/files/index.php
+++ b/app/views/materialien/files/index.php
@@ -31,7 +31,7 @@
<td class="dont-hide">
<? if ($mvv_file->getFiletypes()[0] === 'Link'): ?>
<a href="<?= htmlReady($mvv_file->file_refs[0]->file_ref->file->metadata['url']); ?>" target="_blank">
- <?= Icon::create('link-extern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-extern')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($mvv_file->getFilenames()[0]); ?>
</a>
<? else: ?>
@@ -42,7 +42,7 @@
<?= Icon::create(
$mvv_file->extern_visible?'visibility-visible':'visibility-invisible',
Icon::ROLE_INFO
- )->asImg([
+ )->asSvg([
'class' => 'text-bottom',
'title' => $mvv_file->extern_visible ? _('Sichtbar') : _('Unsichtbar')
]) ?>
diff --git a/app/views/messages/_message_row.php b/app/views/messages/_message_row.php
index a481aa3..4e2f019 100644
--- a/app/views/messages/_message_row.php
+++ b/app/views/messages/_message_row.php
@@ -9,8 +9,8 @@
<a href="<?= URLHelper::getLink('dispatch.php/messages/read/' . $message->getId() .'/' . ($received ? 'rec' : 'snd') ) ?>" data-dialog>
<?= trim($message['subject']) ? htmlReady($message['subject']) : htmlReady(mila(kill_format($message['message']), 40)) ?>
<div class="message-indicators">
- <span><?= $message->getNumAttachments() ? Icon::create('staple', Icon::ROLE_INFO)->asImg(['title' => _('Mit Anhang')]) : '' ?></span>
- <span><?= $message->isAnswered($GLOBALS['user']->id) ? Icon::create('outbox', Icon::ROLE_INFO)->asImg(['title' => _('Beantwortet')]) : '' ?></span>
+ <span><?= $message->getNumAttachments() ? Icon::create('staple', Icon::ROLE_INFO)->asSvg(['title' => _('Mit Anhang')]) : '' ?></span>
+ <span><?= $message->isAnswered($GLOBALS['user']->id) ? Icon::create('outbox', Icon::ROLE_INFO)->asSvg(['title' => _('Beantwortet')]) : '' ?></span>
</div>
</a>
<p class="hidden-medium-up responsive_author">
diff --git a/app/views/messages/overview.php b/app/views/messages/overview.php
index 17996a6..5e9bd17 100644
--- a/app/views/messages/overview.php
+++ b/app/views/messages/overview.php
@@ -45,11 +45,11 @@
<tr>
<td colspan="8">
<? if (Request::int("offset") > 0) : ?>
- <a title="<?= _("zurück") ?>" href="<?= URLHelper::getLink("?", ['offset' => Request::int("offset") - $messageBufferCount > 0 ? Request::int("offset") - $messageBufferCount : null]) ?>"><?= Icon::create('arr_1left', 'clickable')->asImg(["class" => "text-bottom"]) ?></a>
+ <a title="<?= _('Zurück') ?>" href="<?= URLHelper::getLink('?', ['offset' => Request::int('offset') - $messageBufferCount > 0 ? Request::int('offset') - $messageBufferCount : null]) ?>"><?= Icon::create('arr_1left', 'clickable')->asSvg(['class' => 'text-bottom']) ?></a>
<? endif ?>
<? if (!empty($more)) : ?>
<div style="float:right">
- <a title="<?= _("weiter") ?>" href="<?= URLHelper::getLink("?", ['offset' => Request::int("offset") + $messageBufferCount]) ?>"><?= Icon::create('arr_1right', 'clickable')->asImg(["class" => "text-bottom"]) ?></a>
+ <a title="<?= _("weiter") ?>" href="<?= URLHelper::getLink("?", ['offset' => Request::int("offset") + $messageBufferCount]) ?>"><?= Icon::create('arr_1right', 'clickable')->asSvg(["class" => "text-bottom"]) ?></a>
</div>
<? endif ?>
</td>
@@ -64,11 +64,11 @@
<tr>
<td colspan="7">
<? if (Request::int("offset") > 0) : ?>
- <a title="<?= _("zurück") ?>" href="<?= URLHelper::getLink("?", ['offset' => Request::int("offset") - $messageBufferCount > 0 ? Request::int("offset") - $messageBufferCount : null]) ?>"><?= Icon::create('arr_1left', 'clickable')->asImg(["class" => "text-bottom"]) ?></a>
+ <a title="<?= _('Zurück') ?>" href="<?= URLHelper::getLink('?', ['offset' => Request::int('offset') - $messageBufferCount > 0 ? Request::int('offset') - $messageBufferCount : null]) ?>"><?= Icon::create('arr_1left', 'clickable')->asSvg(['class' => 'text-bottom']) ?></a>
<? endif ?>
<? if (!empty($more)) : ?>
<div style="float:right">
- <a title="<?= _("weiter") ?>" href="<?= URLHelper::getLink("?", ['offset' => Request::int("offset") + $messageBufferCount]) ?>"><?= Icon::create('arr_1right', 'clickable')->asImg(["class" => "text-bottom"]) ?></a>
+ <a title="<?= _('Weiter') ?>" href="<?= URLHelper::getLink('?', ['offset' => Request::int('offset') + $messageBufferCount]) ?>"><?= Icon::create('arr_1right', 'clickable')->asSvg(['class' => 'text-bottom']) ?></a>
</div>
<? endif ?>
</td>
@@ -90,7 +90,7 @@
<div style="display: none; background-color: rgba(255,255,255, 0.3); padding: 3px; border-radius: 5px; border: thin solid black;" id="move_handle">
- <?= Icon::create('mail')->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('mail')->asSvg(['class' => 'text-bottom']) ?>
<span class="title"></span>
</div>
diff --git a/app/views/messages/read.php b/app/views/messages/read.php
index 9e51374..85f7eab 100644
--- a/app/views/messages/read.php
+++ b/app/views/messages/read.php
@@ -52,9 +52,9 @@
<?= Icon::create('trash', 'clickable', ['title' => _("Schlagwort entfernen")])->asInput(["class" => 'text-bottom', "name" => 'remove_tag', "value" => $tag]) ?>
</span>
<? endforeach ?>
- <span>
- <input type="text" name="add_tag" style="width: 50px; opacity: 0.8;">
- <?= Icon::create('add', 'clickable', ['title' => _("Schlagwort hinzufügen")])->asInput(["class" => 'text-bottom']) ?>
+ <span class="message-tags-wrapper">
+ <input type="text" name="add_tag">
+ <?= Icon::create('add', 'clickable', ['title' => _('Schlagwort hinzufügen')])->asInput() ?>
</span>
</form>
</td>
@@ -67,8 +67,8 @@
<?= formatReady($message["message"]) ?>
</div>
<? if($attachment_folder): ?>
-<h3><?= Icon::create('staple', Icon::ROLE_INACTIVE)->asImg(['class' => 'text-bottom']) ?><?= _('Anhänge') ?></h3>
- <table class="default sortable-table" data-sortlist="[[2, 0]]">
+ <table class="default sortable-table message-attachments" data-sortlist="[[2, 0]]">
+ <caption><?= _('Anhänge') ?></caption>
<?= $this->render_partial('files/_files_thead') ?>
<? foreach($attachment_folder->getFiles() as $file): ?>
<? if ($file->isVisible($GLOBALS['user']->id)) : ?>
diff --git a/app/views/messages/write.php b/app/views/messages/write.php
index 8bf05f6..f63b3c4 100644
--- a/app/views/messages/write.php
+++ b/app/views/messages/write.php
@@ -8,7 +8,7 @@
class="validation_notes studip">
<header>
<h1>
- <?= Icon::create('info-circle', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom validation_notes_icon']) ?>
+ <?= Icon::create('info-circle', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom validation_notes_icon']) ?>
<?= _('Hinweise zum Ausfüllen des Formulars') ?>
</h1>
</header>
@@ -36,7 +36,7 @@
<li id="template_adressee" style="display: none;" class="adressee">
<input type="hidden" name="message_to[]" value="">
<span class="visual"></span>
- <a class="remove_adressee"><?= Icon::create('trash', 'clickable')->asImg(['class' => "text-bottom"]) ?></a>
+ <a class="remove_adressee"><?= Icon::create('trash', 'clickable')->asSvg(['class' => 'text-bottom']) ?></a>
</li>
<? foreach ($default_message->getRecipients() as $user) : ?>
<li class="adressee">
@@ -44,7 +44,7 @@
<span class="visual">
<?= htmlReady($user['fullname']) ?>
</span>
- <a class="remove_adressee"><?= Icon::create('trash', 'clickable')->asImg(['class' => "text-bottom"]) ?></a>
+ <a class="remove_adressee"><?= Icon::create('trash', 'clickable')->asSvg(['class' => 'text-bottom']) ?></a>
</li>
<? endforeach ?>
</ul>
@@ -92,26 +92,26 @@
<a href="" onClick="STUDIP.Messages.toggleSetting('attachments'); return false;" aria-expanded="false"
role="button" title="<?= _('Anhänge verwalten') ?>" aria-controls="attachments"
id="toggle-attachments">
- <?= Icon::create('staple')->asImg(40) ?>
+ <?= Icon::create('staple')->asSvg(40) ?>
<br>
- <strong><?= _("Anhänge") ?></strong>
+ <strong><?= _('Anhänge') ?></strong>
</a>
</li>
<? endif; ?>
<li>
<a href="" onClick="STUDIP.Messages.toggleSetting('tags'); return false;" aria-expanded="false"
role="button" title="<?= _('Schlagworte verwalten') ?>" aria-controls="tags" id="toggle-tags">
- <?= Icon::create('star')->asImg(40) ?>
+ <?= Icon::create('star')->asSvg(40) ?>
<br>
- <strong><?= _("Schlagworte") ?></strong>
+ <strong><?= _('Schlagworte') ?></strong>
</a>
</li>
<li>
<a href="" onClick="STUDIP.Messages.toggleSetting('settings'); return false;" aria-expanded="false"
role="button" title="<?= _('Optionen') ?>" aria-controls="settings" id="toggle-settings">
- <?= Icon::create('admin', 'clickable')->asImg(40) ?>
+ <?= Icon::create('admin', 'clickable')->asSvg(40) ?>
<br>
- <strong><?= _("Optionen") ?></strong>
+ <strong><?= _('Optionen') ?></strong>
</a>
</li>
</ul>
@@ -126,7 +126,7 @@
<span class="icon"></span>
<span class="name"></span>
<span class="size"></span>
- <a class="remove_attachment"><?= Icon::create('trash', 'clickable')->asImg(['class' => "text-bottom"]) ?></a>
+ <a class="remove_attachment"><?= Icon::create('trash', 'clickable')->asSvg(['class' => 'text-bottom']) ?></a>
</li>
<? if ($default_attachments) : ?>
<? foreach ($default_attachments as $a) : ?>
@@ -134,7 +134,7 @@
<span class="icon"><?=$a['icon']?></span>
<span class="name"><?=$a['name']?></span>
<span class="size"><?=$a['size']?></span>
- <a class="remove_attachment"><?= Icon::create('trash', 'clickable')->asImg(['class' => "text-bottom"]) ?></a>
+ <a class="remove_attachment"><?= Icon::create('trash', 'clickable')->asSvg(['class' => 'text-bottom']) ?></a>
</li>
<? endforeach ?>
<? endif ?>
@@ -147,8 +147,8 @@
</div>
<label >
<input type="file" id="fileupload" multiple onChange="STUDIP.Messages.upload_from_input(this);" style="display: none;">
- <?= Icon::create('upload')->asImg(['title' => _('Datei hochladen'), 'class' => 'text-bottom']) ?>
- <?= _("Datei hochladen") ?>
+ <?= Icon::create('upload')->asSvg(['title' => _('Datei hochladen'), 'class' => 'text-bottom']) ?>
+ <?= _('Datei hochladen') ?>
</label>
<div id="upload_finished" style="display: none"><?= _("wird verarbeitet") ?></div>
diff --git a/app/views/module/module/modul.php b/app/views/module/module/modul.php
index 7d726aa..db40268 100644
--- a/app/views/module/module/modul.php
+++ b/app/views/module/module/modul.php
@@ -93,7 +93,7 @@ if ($GLOBALS['MVV_MODUL']['SPRACHE']['default'] !== $display_language) {
<? if ($perm->haveFieldPerm('modul_variante', MvvPerm::PERM_WRITE)) : ?>
<div class="mvv-item-list-buttons">
<a href="#"
- class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Entfernen')])->asImg(); ?></a>
+ class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Entfernen')])->asSvg(); ?></a>
</div>
<? endif; ?>
<input type="hidden" name="modul_item" value="<?= $modul->modul_variante->id ?>">
@@ -298,7 +298,7 @@ if ($GLOBALS['MVV_MODUL']['SPRACHE']['default'] !== $display_language) {
</div>
<div class="mvv-item-list-buttons">
<a href="#"
- class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Entfernen')])->asImg(); ?></a>
+ class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Entfernen')])->asSvg(); ?></a>
</div>
<input type="hidden" name="responsible_item"
value="<?= $modul->responsible_institute->institut_id ?>">
@@ -350,7 +350,7 @@ if ($GLOBALS['MVV_MODUL']['SPRACHE']['default'] !== $display_language) {
</div>
<div class="mvv-item-list-buttons">
<a href="#" class="mvv-item-remove">
- <?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Einrichtung entfernen')])->asImg(); ?>
+ <?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Einrichtung entfernen')])->asSvg(); ?>
</a>
</div>
<input type="hidden" name="institutes_items[]" value="<?= $assigned_institute->institut_id ?>">
@@ -394,7 +394,7 @@ if ($GLOBALS['MVV_MODUL']['SPRACHE']['default'] !== $display_language) {
<li id="language_<?= $assigned_language->lang ?>" class="drag-handle sort_items">
<div class="mvv-item-list-text"><?= htmlReady($assigned_language->getDisplayName()) ?></div>
<div class="mvv-item-list-buttons">
- <a href="#" class="mvv-item-remove"><?= Icon::create('trash', 'clickable', array('title' => _('Sprache entfernen')))->asImg(); ?></a>
+ <a href="#" class="mvv-item-remove"><?= Icon::create('trash', 'clickable', array('title' => _('Sprache entfernen')))->asSvg(); ?></a>
</div>
<input type="hidden" name="language_items[]" value="<?= htmlReady($assigned_language->lang) ?>">
</li>
diff --git a/app/views/module/module/module.php b/app/views/module/module/module.php
index 8390976..0496141 100644
--- a/app/views/module/module/module.php
+++ b/app/views/module/module/module.php
@@ -15,7 +15,7 @@
<? $details_action = $details_action ?? 'details'; ?>
<a class="mvv-load-in-new-row" href="<?= $controller->action_link($details_action, $modul->getId()) ?>">
<? if ($ampel_icon) : ?>
- <?= $ampel_icon->asImg(['title' => $ampelstatus, 'style' => 'vertical-align: bottom;']) ?>
+ <?= $ampel_icon->asSvg(['title' => $ampelstatus, 'style' => 'vertical-align: bottom;']) ?>
<? endif; ?>
<?= htmlReady($modul->code) ?>
</a>
@@ -37,7 +37,7 @@
<? else : ?>
<td style="white-space:nowrap; font-weight: 700; padding-left: 20px;">
<? if ($ampel_icon) : ?>
- <?= $ampel_icon->asImg(['title' => $ampelstatus, 'style' => 'vertical-align: bottom;']) ?>
+ <?= $ampel_icon->asSvg(['title' => $ampelstatus, 'style' => 'vertical-align: bottom;']) ?>
<? endif; ?>
<?= htmlReady($modul->code) ?>
</td>
diff --git a/app/views/module/module/modulteil.php b/app/views/module/module/modulteil.php
index a990ab9..a3a0a92 100644
--- a/app/views/module/module/modulteil.php
+++ b/app/views/module/module/modulteil.php
@@ -143,7 +143,7 @@ if ($GLOBALS['MVV_MODULTEIL']['SPRACHE']['default'] != $display_language) {
<div class="mvv-item-list-text"><?= htmlReady($assigned_language->getDisplayName()) ?></div>
<div class="mvv-item-list-buttons">
<a href="#" class="mvv-item-remove">
- <?= Icon::create('trash', Icon::ROLE_CLICKABLE ,['title' => _('Sprache entfernen')])->asImg(); ?>
+ <?= Icon::create('trash', Icon::ROLE_CLICKABLE ,['title' => _('Sprache entfernen')])->asSvg(); ?>
</a>
</div>
<input type="hidden" name="language_items[]" value="<?= $assigned_language->lang ?>">
diff --git a/app/views/multipersonsearch/js_form.php b/app/views/multipersonsearch/js_form.php
index f07fd92..1be3d50 100644
--- a/app/views/multipersonsearch/js_form.php
+++ b/app/views/multipersonsearch/js_form.php
@@ -11,10 +11,10 @@
<div class="search-wrapper">
<input id="<?= $name . '_searchinput'; ?>" type="text" placeholder="<?= _("Suchen"); ?>" value="" name="<?= $name . '_searchinput'; ?>" aria-label="<?= _("Suchen"); ?>" spellcheck="false">
<button id="<?= $name . '_resetsearch'; ?>" class="icon-button enter-accessible reset-search" onclick='STUDIP.MultiPersonSearch.resetSearch(); return false' title="<?= _('Suche zurücksetzen') ?>">
- <?= Icon::create('decline')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('decline')->asSvg(['class' => 'text-bottom']) ?>
</button>
<button class="icon-button enter-accessible search" onclick='STUDIP.MultiPersonSearch.search();return false' title="<?= _('Suche starten') ?>">
- <?= Icon::create('search')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('search')->asSvg(['class' => 'text-bottom']) ?>
</button>
</div>
</label>
diff --git a/app/views/my_courses/_deputy_bosses.php b/app/views/my_courses/_deputy_bosses.php
index a1537e5..ca8392d 100644
--- a/app/views/my_courses/_deputy_bosses.php
+++ b/app/views/my_courses/_deputy_bosses.php
@@ -37,17 +37,17 @@
<td class="actions">
<? if ($boss->edit_about && $deputies_edit_about_enabled) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => $boss->boss_username]) ?>">
- <?= Icon::create('person')->asImg(['title' => _('Personenangaben bearbeiten')]) ?>
+ <?= Icon::create('person')->asSvg(['title' => _('Personenangaben bearbeiten')]) ?>
</a>
<? endif ?>
<a href="<?= URLHelper::getLink(
'dispatch.php/messages/write',
['filter' => 'send_sms_to_all', 'rec_uname' => $boss->boss_username])?>" data-dialog>
- <?= Icon::create('mail')->asImg(['title' => sprintf(_('Nachricht an %s senden'), $boss_fullname)]) ?>
+ <?= Icon::create('mail')->asSvg(['title' => sprintf(_('Nachricht an %s senden'), $boss_fullname)]) ?>
</a>
<a href="<?= $controller->link_for('my_courses/delete_boss/' . $boss->range_id) ?>"
data-confirm="<?= sprintf(_('Wollen Sie sich wirklich als Standardvertretung von %s austragen?'), htmlReady($boss_fullname)) ?>">
- <?= Icon::create('trash')->asImg([
+ <?= Icon::create('trash')->asSvg([
'title' => sprintf(_('Mich als Standardvertretung von %s austragen'), $boss_fullname)
]) ?>
</a>
diff --git a/app/views/my_courses/archive.php b/app/views/my_courses/archive.php
index 57d6f7d..e86537c 100644
--- a/app/views/my_courses/archive.php
+++ b/app/views/my_courses/archive.php
@@ -38,10 +38,10 @@
<td align="center">
<? if ($row['forumdump'] and archiv_check_perm($row['seminar_id'])) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/archive/forum/' . $row['seminar_id']) ?>" data-dialog>
- <?= Icon::create('forum')->asImg(['title' => _('Beiträge des Forums der Veranstaltung')]) ?>
+ <?= Icon::create('forum')->asSvg(['title' => _('Beiträge des Forums der Veranstaltung')]) ?>
</a>
<? else: ?>
- <?= Icon::create('forum', Icon::ROLE_INACTIVE)->asImg(['style' => 'visibility: hidden;']) ?>
+ <?= Icon::create('forum', Icon::ROLE_INACTIVE)->asSvg(['style' => 'visibility: hidden;']) ?>
<? endif; ?>
@@ -49,22 +49,22 @@
<? if(($row['archiv_file_id']) and archiv_check_perm($row['seminar_id'])): ?>
<a href="<?= FileManager::getDownloadLinkForArchivedCourse($course, false) ?>">
- <?= Icon::create('file-archive')->asImg(['title' => _('Dateisammlung der Veranstaltung herunterladen')]) ?>
+ <?= Icon::create('file-archive')->asSvg(['title' => _('Dateisammlung der Veranstaltung herunterladen')]) ?>
</a>
<? elseif(($row['archiv_protected_file_id']) and archiv_check_perm($row['seminar_id'] == 'admin')): ?>
<a href="<?= FileManager::getDownloadLinkForArchivedCourse($course, true) ?>">
- <?= Icon::create('file-archive')->asImg(['title' => _('Dateisammlung der Veranstaltung herunterladen')]) ?>
+ <?= Icon::create('file-archive')->asSvg(['title' => _('Dateisammlung der Veranstaltung herunterladen')]) ?>
</a>
<? else: ?>
- <?= Icon::create('file-archive', Icon::ROLE_INACTIVE)->asImg(['style' => 'visibility: hidden;']) ?>
+ <?= Icon::create('file-archive', Icon::ROLE_INACTIVE)->asSvg(['style' => 'visibility: hidden;']) ?>
<? endif; ?>
<? if ($row['wikidump'] and archiv_check_perm($row['seminar_id'])) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/archive/wiki/' . $row['seminar_id']) ?>" data-dialog>
- <?= Icon::create('wiki')->asImg(['title' => _('Beiträge des Wikis der Veranstaltung')]) ?>
+ <?= Icon::create('wiki')->asSvg(['title' => _('Beiträge des Wikis der Veranstaltung')]) ?>
</a>
<? else: ?>
- <?= Icon::create('wiki', Icon::ROLE_INACTIVE)->asImg(['style' => 'visibility: hidden;']) ?>
+ <?= Icon::create('wiki', Icon::ROLE_INACTIVE)->asSvg(['style' => 'visibility: hidden;']) ?>
<? endif; ?>
</td>
<td style="text-align: center"><?= $row['status'] ?></td>
diff --git a/app/views/my_courses/waiting_list.php b/app/views/my_courses/waiting_list.php
index b3aa7eb..3ac47ed 100644
--- a/app/views/my_courses/waiting_list.php
+++ b/app/views/my_courses/waiting_list.php
@@ -75,7 +75,7 @@
href="<?= $controller->link_for('course/details/index', $wait['seminar_id']) ?>"
>
<? $params = tooltip2(_('Veranstaltungsdetails anzeigen')) ?>
- <?= Icon::create('info-circle', Icon::ROLE_INACTIVE)->asImg(['style' => 'cursor: pointer']) ?>
+ <?= Icon::create('info-circle', Icon::ROLE_INACTIVE)->asSvg(['style' => 'cursor: pointer']) ?>
</a>
</td>
<td style="text-align: center">
@@ -99,11 +99,11 @@
<td style="text-align: right">
<? if ($wait['status'] === 'accepted' && $wait['admission_binding']) : ?>
<a href="<?= $controller->url_for('my_courses/decline_binding') ?>">
- <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asImg(['title' => _('Die Teilnahme ist bindend. Bitte wenden Sie sich an die Lehrenden.')]) ?>
+ <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Die Teilnahme ist bindend. Bitte wenden Sie sich an die Lehrenden.')]) ?>
</a>
<? else : ?>
<a href="<?= $controller->link_for('my_courses/decline', $wait['seminar_id'], ['cmd' => 'suppose_to_kill_admission']) ?>">
- <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asImg(['title' => _('aus der Veranstaltung abmelden')]) ?>
+ <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Aus der Veranstaltung abmelden')]) ?>
</a>
<? endif ?>
</td>
diff --git a/app/views/my_ilias_accounts/my_courses.php b/app/views/my_ilias_accounts/my_courses.php
index bd381cf..c748bdf 100644
--- a/app/views/my_ilias_accounts/my_courses.php
+++ b/app/views/my_ilias_accounts/my_courses.php
@@ -25,7 +25,7 @@
<? if (array_key_exists($ilias_index, $courses_list) && count($courses_list[$ilias_index]) > 0) : ?>
<? foreach ($courses_list[$ilias_index] as $crs_id => $course) : ?>
<tr>
- <td><?= Icon::create('learnmodule', Icon::ROLE_INFO)->asImg(['title' => _('ILIAS-Kurs')]) ?></td>
+ <td><?= Icon::create('learnmodule', Icon::ROLE_INFO)->asSvg(['title' => _('ILIAS-Kurs')]) ?></td>
<td>
<? if ($course['online'] || in_array($course['status'], [2, 4])) : ?>
<a href="<?= URLHelper::getLink("dispatch.php/my_ilias_accounts/view_course/{$ilias_index}/{$crs_id}")?>" data-dialog=""><?= htmlReady($course['title']) ?></a>
@@ -37,7 +37,7 @@
<td>
<? if ($course['studip_object']) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/course/basicdata/view', ['cid' => $course['studip_object']]) ?>">
- <?= Icon::create('seminar')->asImg(['title' => Course::find($course['studip_object'])->Name]) ?>
+ <?= Icon::create('seminar')->asSvg(['title' => Course::find($course['studip_object'])->Name]) ?>
</a>
<? endif ?>
</td>
@@ -82,7 +82,7 @@
<? if (!empty($workgroups_list[$ilias_index])) : ?>
<? foreach ($workgroups_list[$ilias_index] as $cat_id => $workgroup) : ?>
<tr>
- <td><?= Icon::create('community', Icon::ROLE_INFO)->asImg(['title' => _('ILIAS-Arbeitsbereich')]) ?></td>
+ <td><?= Icon::create('community', Icon::ROLE_INFO)->asSvg(['title' => _('ILIAS-Arbeitsbereich')]) ?></td>
<td>
<a href="<?= URLHelper::getLink("dispatch.php/my_ilias_accounts/view_workgroup/{$ilias_index}/{$cat_id}")?>" data-dialog=""><?= htmlReady($workgroup['title']) ?></a>
</td>
diff --git a/app/views/my_institutes/index.php b/app/views/my_institutes/index.php
index e22b665..f63c244 100644
--- a/app/views/my_institutes/index.php
+++ b/app/views/my_institutes/index.php
@@ -62,7 +62,7 @@
URLHelper::getLink('dispatch.php/institute/overview',
['auswahl' => $instid,
'redirect_to' => $nav->getURL()]) ?>" <?= $nav->hasBadgeNumber() ? 'class="badge" data-badge-number="' . intval($nav->getBadgeNumber()) . '"' : '' ?>>
- <?= $nav->getImage()->asImg($nav->getLinkAttributes()) ?>
+ <?= $nav->getImage()->asSvg($nav->getLinkAttributes()) ?>
</a>
</li>
<? else: ?>
@@ -78,7 +78,7 @@
<td style="text-align: left; white-space: nowrap">
<? if (Config::get()->ALLOW_SELFASSIGN_INSTITUTE && $values['perms'] === 'user') : ?>
<a href="<?= $controller->decline_inst($instid) ?>">
- <?= Icon::create('door-leave')->asImg(['title' => _("aus der Einrichtung austragen")]) ?>
+ <?= Icon::create('door-leave')->asSvg(['title' => _('Aus der Einrichtung austragen')]) ?>
</a>
<? else : ?>
<?= Assets::img('blank.gif', ['size' => Icon::SIZE_DEFAULT]) ?>
diff --git a/app/views/my_studygroups/_course.php b/app/views/my_studygroups/_course.php
index dc36804..3a854ba 100644
--- a/app/views/my_studygroups/_course.php
+++ b/app/views/my_studygroups/_course.php
@@ -35,7 +35,7 @@
URLHelper::getLink('dispatch.php/course/go',
['to' => $group['seminar_id'],
'redirect_to' => $nav->getURL()]) ?>" <?= $nav->hasBadgeNumber() ? 'class="badge" data-badge-number="' . intval($nav->getBadgeNumber()) . '"' : '' ?>>
- <?= $nav->getImage()->asImg($nav->getLinkAttributes()) ?>
+ <?= $nav->getImage()->asSvg($nav->getLinkAttributes()) ?>
</a>
</li>
<? elseif (is_string($key)) : ?>
@@ -56,18 +56,18 @@
<? endif ?>
<? if (!empty($adminnavigation)) : ?>
<a href="<?= URLHelper::getLink($adminnavigation->getURL(), ['cid' => $group['seminar_id']]) ?>">
- <?= $adminnavigation->getImage()->asImg($adminnavigation->getLinkAttributes())?>
+ <?= $adminnavigation->getImage()->asSvg($adminnavigation->getLinkAttributes())?>
</a>
<? endif ?>
<? elseif (!empty($group['binding'])) : ?>
<a href="<?= URLHelper::getLink('', ['to' => $group['seminar_id'], 'cmd' => 'no_kill']) ?>">
- <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asImg(['title' => _('Die Teilnahme ist bindend. Bitte wenden Sie sich an die Lehrenden.')]) ?>
+ <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Die Teilnahme ist bindend. Bitte wenden Sie sich an die Lehrenden.')]) ?>
</a>
<?
else : ?>
<a href="<?= URLHelper::getLink("dispatch.php/my_courses/decline/{$group['seminar_id']}", ['cmd' => 'suppose_to_kill']) ?>">
- <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asImg(['title' => _('aus der Studiengruppe abmelden')]) ?>
+ <?= Icon::create('door-leave', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Aus der Studiengruppe abmelden')]) ?>
</a>
<? endif ?>
</td>
diff --git a/app/views/news/display.php b/app/views/news/display.php
index 5f62443..c8f271e 100644
--- a/app/views/news/display.php
+++ b/app/views/news/display.php
@@ -2,7 +2,7 @@
<article class="studip">
<header>
<h1>
- <?= Icon::create('news', 'info')->asImg() ?>
+ <?= Icon::create('news', 'info')->asSvg() ?>
<?= _('Ankündigungen') ?>
</h1>
@@ -10,20 +10,20 @@
<? if ($perm): ?>
<a href="<?= $controller->link_for('news/edit_news/new/' . $range); ?>" data-dialog
title="<?= _('Hinzufügen') ?>" aria-label="<?= _('Hinzufügen') ?>">
- <?= Icon::create('add') ?>
+ <?= Icon::create('add')->asSvg() ?>
</a>
<? endif; ?>
<? if ($perm && Config::get()->NEWS_RSS_EXPORT_ENABLE): ?>
<a data-dialog="size=auto;reload-on-close" title="<?=_('RSS-Feed konfigurieren') ?>"
aria-label="<?=_('RSS-Feed konfigurieren') ?>"
href="<?= $controller->link_for('news/rss_config/' . $range); ?>">
- <?= Icon::create('admin') ?>
+ <?= Icon::create('admin')->asSvg() ?>
</a>
<? endif; ?>
<? if ($rss_id): ?>
<a href="<?= URLHelper::getLink('rss.php', ['id' => $rss_id]) ?>"
title="<?= _('RSS-Feed') ?>" aria-label="<?= _('RSS-Feed') ?>">
- <?= Icon::create('rss') ?>
+ <?= Icon::create('rss')->asSvg() ?>
</a>
<? endif; ?>
</nav>
@@ -35,7 +35,7 @@
<header>
<h1>
<a href="<?= ContentBoxHelper::href($new->id, ['contentbox_type' => 'news']) ?>">
- <?= Icon::create('news') ?>
+ <?= Icon::create('news')->asSvg() ?>
<?= htmlReady($new['topic']); ?>
</a>
</h1>
diff --git a/app/views/oer/admin/hosts.php b/app/views/oer/admin/hosts.php
index 1bce5e5..be21197 100644
--- a/app/views/oer/admin/hosts.php
+++ b/app/views/oer/admin/hosts.php
@@ -17,19 +17,19 @@
<tr id="host_<?= $host->getId() ?>" data-host_id="<?= $host->getId() ?>">
<td>
<? if ($host->isMe()) : ?>
- <?= Icon::create('home', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom', 'title' => _('Das ist Ihr Stud.IP')]) ?>
+ <?= Icon::create('home', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom', 'title' => _('Das ist Ihr Stud.IP')]) ?>
<? endif ?>
<?= htmlReady($host['name']) ?></td>
<td>
<a href="<?= htmlReady($host['url']) ?>" target="_blank">
- <?= Icon::create('link-extern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-extern')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($host['url']) ?>
</a>
</td>
<td>
<?= $host['public_key'] ? md5($host['public_key']) : "" ?>
<? if (strpos($host['public_key'], "\r") !== false) : ?>
- <?= Icon::create('exclaim', Icon::ROLE_STATUS_RED)->asImg(['class' => 'text-bottom', 'title' => _('Der Key hat ein Carriage-Return Zeichen, weshalb der Hash des Public-Keys vermutlich vom Original-Hash abweicht.')]) ?>
+ <?= Icon::create('exclaim', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'text-bottom', 'title' => _('Der Key hat ein Carriage-Return-Zeichen, weshalb der Hash des Public-Keys vermutlich vom Original-Hash abweicht.')]) ?>
<? endif ?>
</td>
<td class="index_server">
@@ -45,7 +45,7 @@
<?= Icon::create("checkbox-".($host['allowed_as_index_server'] ? "" : "un")."checked") ?>
</a>
<? else : ?>
- <?= Icon::create("checkbox-unchecked", Icon::ROLE_INACTIVE)->asImg(['title' => _('Dieser Server steht nicht als Indexserver zur Verfügung.')]) ?>
+ <?= Icon::create("checkbox-unchecked", Icon::ROLE_INACTIVE)->asSvg(['title' => _('Dieser Server steht nicht als Indexserver zur Verfügung.')]) ?>
<? endif ?>
<? endif ?>
</td>
@@ -64,7 +64,7 @@
<? if (!$host->isMe()) : ?>
<a href="<?= $controller->link_for("oer/admin/ask_for_hosts/".$host->getId()) ?>"
title="<?= _('Diesen Server nach weiteren bekannten Hosts fragen.') ?>">
- <?= Icon::create('campusnavi')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('campusnavi')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
</td>
diff --git a/app/views/oer/embed/_link.php b/app/views/oer/embed/_link.php
index 684a388..b22ab83 100644
--- a/app/views/oer/embed/_link.php
+++ b/app/views/oer/embed/_link.php
@@ -1,7 +1,7 @@
<div style="text-align: right;">
<a href="<?= URLHelper::getLink("dispatch.php/oer/market/details/{$id}") ?>"
title="<?= htmlReady(_('Zum OER Campus wechseln')) ?>">
- <?= Icon::create('oer-campus')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('oer-campus')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($material['name']) ?>
</a>
</div>
diff --git a/app/views/oer/embed/standard.php b/app/views/oer/embed/standard.php
index 4374c37..b5c7a4c 100644
--- a/app/views/oer/embed/standard.php
+++ b/app/views/oer/embed/standard.php
@@ -3,6 +3,6 @@
<? else : ?>
<a href="<?= htmlReady($source_url) ?>" target="_blank">
<? endif ?>
- <?= Icon::create('oer-campus')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('oer-campus')->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($material['name']) ?>
</a>
diff --git a/app/views/oer/market/_details_file.php b/app/views/oer/market/_details_file.php
index 18f0f70..0481793 100644
--- a/app/views/oer/market/_details_file.php
+++ b/app/views/oer/market/_details_file.php
@@ -1,7 +1,7 @@
<? if ($file['is_folder']) : ?>
<? if ($name !== "__MACOSX") : ?>
<li class="folder">
- <?= Icon::create('folder-full', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('folder-full', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($name) ?>
<ol>
<? foreach ($file['structure'] as $name => $subfile) : ?>
@@ -15,7 +15,7 @@
<div class="size" style="float: right">
<?= htmlReady(number_format($file['size'] / 1024, 2)) ?> KB
</div>
- <?= FileManager::getFileIcon($name, Icon::ROLE_INFO)->asImg(['class' => 'text-bottom']) ?>
+ <?= FileManager::getFileIcon($name, Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($name) ?>
</li>
<? endif ?>
diff --git a/app/views/oer/market/_material_short.php b/app/views/oer/market/_material_short.php
index d863b6a..ca76936 100644
--- a/app/views/oer/market/_material_short.php
+++ b/app/views/oer/market/_material_short.php
@@ -8,7 +8,7 @@
<a href="<?= $controller->link_for('oer/market/details', $material) ?>" target="_blank">
<header>
<h1>
- <?= $material->getIcon()->asImg(['class' => 'text-bottom']) ?>
+ <?= $material->getIcon()->asSvg(['class' => 'text-bottom']) ?>
<div class="title">
<? if (strlen($material->name) > 50) : ?>
<?= htmlReady(substr($material->name, 0, 50)) . ' ...' ?>
diff --git a/app/views/oer/market/add_to_course.php b/app/views/oer/market/add_to_course.php
index 4ac30fd..79207ae 100644
--- a/app/views/oer/market/add_to_course.php
+++ b/app/views/oer/market/add_to_course.php
@@ -35,7 +35,7 @@
<button type="submit"
title="<?= _('Zur Veranstaltung hinzufügen') ?>"
style="border: none; background: none; cursor: pointer;">
- <?= Icon::create('add')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('add')->asSvg(['class' => 'text-bottom']) ?>
</button>
</form>
</td>
diff --git a/app/views/oer/market/add_to_course_select_class.php b/app/views/oer/market/add_to_course_select_class.php
index 72c092a..502548b 100644
--- a/app/views/oer/market/add_to_course_select_class.php
+++ b/app/views/oer/market/add_to_course_select_class.php
@@ -10,7 +10,7 @@
<? $icon = $object->oerGetIcon() ?>
<? if ($icon) : ?>
- <?= $icon->asImg(50) ?>
+ <?= $icon->asSvg(50) ?>
<? endif ?>
<?= htmlReady($metadata['displayname']) ?>
</a>
diff --git a/app/views/oer/market/details.php b/app/views/oer/market/details.php
index 7a08ae4..67eba3a 100644
--- a/app/views/oer/market/details.php
+++ b/app/views/oer/market/details.php
@@ -180,11 +180,11 @@
title="<?= $GLOBALS['perm']->have_perm("autor") ? _('Geben Sie die erste Bewertung ab.') : _('Noch keine Bewertung abgegeben.') ?>"
href="<?= $controller->link_for('oer/market/review/' . $material->getId()) ?>" data-dialog>
<? endif ?>
- <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asImg(50) ?>
- <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asImg(50) ?>
- <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asImg(50) ?>
- <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asImg(50) ?>
- <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asImg(50) ?>
+ <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asSvg(50) ?>
+ <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asSvg(50) ?>
+ <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asSvg(50) ?>
+ <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asSvg(50) ?>
+ <?= Icon::create("star", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INACTIVE)->asSvg(50) ?>
<? if ($allowed_to_review) : ?>
</a>
<? endif ?>
@@ -194,15 +194,15 @@
<? endif ?>
<? $material['rating'] = round($material['rating'], 1) / 2 ?>
<? $v = $material['rating'] >= 0.75 ? "" : ($material['rating'] >= 0.25 ? "-halffull" : "-empty") ?>
- <?= Icon::create("star$v", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asImg(50) ?>
+ <?= Icon::create("star{$v}", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asSvg(50) ?>
<? $v = $material['rating'] >= 1.75 ? "" : ($material['rating'] >= 1.25 ? "-halffull" : "-empty") ?>
- <?= Icon::create("star$v", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asImg(50) ?>
+ <?= Icon::create("star{$v}", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asSvg(50) ?>
<? $v = $material['rating'] >= 2.75 ? "" : ($material['rating'] >= 2.25 ? "-halffull" : "-empty") ?>
- <?= Icon::create("star$v", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asImg(50) ?>
+ <?= Icon::create("star{$v}", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asSvg(50) ?>
<? $v = $material['rating'] >= 3.75 ? "" : ($material['rating'] >= 3.25 ? "-halffull" : "-empty") ?>
- <?= Icon::create("star$v", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asImg(50) ?>
+ <?= Icon::create("star{$v}", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asSvg(50) ?>
<? $v = $material['rating'] >= 4.75 ? "" : ($material['rating'] >= 4.25 ? "-halffull" : "-empty") ?>
- <?= Icon::create("star$v", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asImg(50) ?>
+ <?= Icon::create("star{$v}", $allowed_to_review ? Icon::ROLE_CLICKABLE : Icon::ROLE_INFO)->asSvg(50) ?>
<? if ($allowed_to_review) : ?>
</a>
<? endif ?>
@@ -260,12 +260,12 @@
<div class="comments center">
<? if (count($review->comments)) : ?>
<a href="<?= $controller->link_for("oer/market/discussion/".$review->getId()) ?>">
- <?= Icon::create("comment")->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('comment')->asSvg(['class' => 'text-bottom']) ?>
<?= sprintf(_('%s Kommentare dazu'), count($review->comments)) ?>
</a>
<? elseif ($material->isMine()) : ?>
<a href="<?= $controller->link_for("oer/market/discussion/".$review->getId()) ?>">
- <?= Icon::create("comment")->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('comment')->asSvg(['class' => 'text-bottom']) ?>
<?= _('Dazu einen Kommentar schreiben') ?>
</a>
<? endif ?>
diff --git a/app/views/oer/market/discussion.php b/app/views/oer/market/discussion.php
index 2e10c38..432439e 100644
--- a/app/views/oer/market/discussion.php
+++ b/app/views/oer/market/discussion.php
@@ -1,5 +1,5 @@
<a href="<?= $controller->link_for("oer/market/details/".$thread['context_id']) ?>">
- <?= Icon::create('arr_1left')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('arr_1left')->asSvg(['class' => 'text-bottom']) ?>
<?= _('Zurück') ?>
</a>
diff --git a/app/views/oer/mymaterial/_material_list.php b/app/views/oer/mymaterial/_material_list.php
index afb47b3..8658e6c 100644
--- a/app/views/oer/mymaterial/_material_list.php
+++ b/app/views/oer/mymaterial/_material_list.php
@@ -14,7 +14,7 @@
<tr>
<td>
<? if ($material->draft) : ?>
- <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('lock-locked', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<? endif ?>
</td>
<td>
@@ -24,23 +24,23 @@
</td>
<td>
<? if ($material->rating === null) : ?>
- <?= Icon::create('star', Icon::ROLE_INFO)->asImg($starwidth) ?>
- <?= Icon::create('star', Icon::ROLE_INFO)->asImg($starwidth) ?>
- <?= Icon::create('star', Icon::ROLE_INFO)->asImg($starwidth) ?>
- <?= Icon::create('star', Icon::ROLE_INFO)->asImg($starwidth) ?>
- <?= Icon::create('star', Icon::ROLE_INFO)->asImg($starwidth) ?>
+ <?= Icon::create('star', Icon::ROLE_INFO)->asSvg($starwidth) ?>
+ <?= Icon::create('star', Icon::ROLE_INFO)->asSvg($starwidth) ?>
+ <?= Icon::create('star', Icon::ROLE_INFO)->asSvg($starwidth) ?>
+ <?= Icon::create('star', Icon::ROLE_INFO)->asSvg($starwidth) ?>
+ <?= Icon::create('star', Icon::ROLE_INFO)->asSvg($starwidth) ?>
<? else : ?>
<? $material->rating = round($material->rating, 1) / 2 ?>
<? $v = $material->rating >= 0.75 ? '' : ($material->rating >= 0.25 ? '-halffull' : '-empty') ?>
- <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asImg($starwidth) ?>
+ <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asSvg($starwidth) ?>
<? $v = $material->rating >= 1.75 ? '' : ($material->rating >= 1.25 ? '-halffull' : '-empty') ?>
- <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asImg($starwidth) ?>
+ <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asSvg($starwidth) ?>
<? $v = $material->rating >= 2.75 ? '' : ($material->rating >= 2.25 ? '-halffull' : '-empty') ?>
- <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asImg($starwidth) ?>
+ <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asSvg($starwidth) ?>
<? $v = $material->rating >= 3.75 ? '' : ($material->rating >= 3.25 ? '-halffull' : '-empty') ?>
- <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asImg($starwidth) ?>
+ <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asSvg($starwidth) ?>
<? $v = $material->rating >= 4.75 ? '' : ($material->rating >= 4.25 ? '-halffull' : '-empty') ?>
- <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asImg($starwidth) ?>
+ <?= Icon::create("star{$v}", Icon::ROLE_INFO)->asSvg($starwidth) ?>
<? endif ?>
</td>
<td>
diff --git a/app/views/oer/mymaterial/edit.php b/app/views/oer/mymaterial/edit.php
index 188ea3b..77014f6 100644
--- a/app/views/oer/mymaterial/edit.php
+++ b/app/views/oer/mymaterial/edit.php
@@ -152,7 +152,7 @@
<?= htmlReady($user['name']) ?>
</span>
<? if (count($material->users) > 1) : ?>
- <?= Icon::create('trash')->asImg(['class' => "text-bottom", 'title' => _('Person als Autor entfernen.')]) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom', 'title' => _('Person als Autor entfernen.')]) ?>
<? endif ?>
</div>
</label>
@@ -170,7 +170,7 @@
<?= htmlReady($user ? $user->getFullName() : _('unbekannt')) ?>
</span>
<? if (count($material->users) > 1) : ?>
- <?= Icon::create('trash')->asImg(['class' => "text-bottom", 'title' => _('Person als Autor/Autorin entfernen.')]) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom', 'title' => _('Person als Autor/Autorin entfernen.')]) ?>
<? endif ?>
</div>
</label>
diff --git a/app/views/privacy/landing.php b/app/views/privacy/landing.php
index 9ca20bc..a4829fd 100644
--- a/app/views/privacy/landing.php
+++ b/app/views/privacy/landing.php
@@ -10,7 +10,7 @@
<li>
<a href="<?= $controller->link_for("privacy/index/{$user_id}/{$key}") ?>" <? if (Request::isDialog()) echo 'data-dialog="size=big"'; ?>>
<h3>
- <?= $row['icon']->asImg(false) ?>
+ <?= $row['icon']->asSvg(false) ?>
<?= htmlReady($row['title']) ?>
</h3>
<p>
diff --git a/app/views/profile_modules/index.php b/app/views/profile_modules/index.php
index ae844f8..19d46cc 100644
--- a/app/views/profile_modules/index.php
+++ b/app/views/profile_modules/index.php
@@ -32,7 +32,7 @@
<div class="element_description">
<? if ($item['icon']): ?>
- <?= $item['icon']->asImg(['class' => 'plugin_icon text-bottom']) ?>
+ <?= $item['icon']->asSvg(['class' => 'plugin_icon text-bottom']) ?>
<? endif ?>
<strong class="shortdesc">
diff --git a/app/views/public_courses/index.php b/app/views/public_courses/index.php
index 8ecd0ab..19f8b7f 100644
--- a/app/views/public_courses/index.php
+++ b/app/views/public_courses/index.php
@@ -69,7 +69,7 @@
}
?>
<a href="<?= URLHelper::getLink('dispatch.php/course/go?to='. $id . '&redirect_to=' . str_replace('?', '&', $navigation->getURL())) ?>"<?= $badge ?>>
- <?= $navigation->getImage()->asImg($navigation->getLinkAttributes()) ?>
+ <?= $navigation->getImage()->asSvg($navigation->getLinkAttributes()) ?>
</a>
<? else: ?>
<?= Assets::img('blank.gif', ['width' => Icon::SIZE_DEFAULT, 'height' => Icon::SIZE_DEFAULT]) ?>
diff --git a/app/views/questionnaire/_answer_description_container.php b/app/views/questionnaire/_answer_description_container.php
index dfdb9f8..26c45b7 100644
--- a/app/views/questionnaire/_answer_description_container.php
+++ b/app/views/questionnaire/_answer_description_container.php
@@ -10,7 +10,7 @@
</div>
<article class="description">
<? if (isset($vote->questiondata['mandatory']) && $vote->questiondata['mandatory']) : ?>
- <?= Icon::create('star', Icon::ROLE_ATTENTION)->asImg(['class' => 'text-bottom', 'alt' => '']) ?>
+ <?= Icon::create('star', Icon::ROLE_ATTENTION)->asSvg(['class' => 'text-bottom', 'alt' => '']) ?>
<?= _('Pflichtantwort') ?>
<? endif ?>
<?= formatReady($vote->questiondata['description']) ?>
diff --git a/app/views/questionnaire/_overview_questionnaire.php b/app/views/questionnaire/_overview_questionnaire.php
index 8b45d42..23e1cc1 100644
--- a/app/views/questionnaire/_overview_questionnaire.php
+++ b/app/views/questionnaire/_overview_questionnaire.php
@@ -74,7 +74,7 @@
</td>
<td class="actions">
<? if ($questionnaire->isRunning() && $countedAnswers) : ?>
- <?= Icon::create('edit', Icon::ROLE_INACTIVE)->asImg(['title' => _('Der Fragebogen wurde gestartet und kann nicht mehr bearbeitet werden.')]) ?>
+ <?= Icon::create('edit', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Der Fragebogen wurde gestartet und kann nicht mehr bearbeitet werden.')]) ?>
<? else : ?>
<a href="<?= $controller->link_for('questionnaire/edit/' . $questionnaire->id) ?>"
data-dialog="size=big"
diff --git a/app/views/questionnaire/_question.php b/app/views/questionnaire/_question.php
index 1ced93c..9d21f93 100644
--- a/app/views/questionnaire/_question.php
+++ b/app/views/questionnaire/_question.php
@@ -3,21 +3,21 @@
class="question <?= htmlReady(mb_strtolower($class)) ?>">
<legend>
<div style="float: right; padding-top: 3px; padding-right: 5px;">
- <a href="#" class="move_up" title="<?= _("Frage nach oben verschieben") ?>"
+ <a href="#" class="move_up" title="<?= _('Frage nach oben verschieben') ?>"
onClick="STUDIP.Questionnaire.moveQuestionUp.call(this); return false;">
- <?= Icon::create('arr_1up')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('arr_1up')->asSvg(['class' => 'text-bottom']) ?>
</a>
- <a href="#" class="move_down" title="<?= _("Frage nach unten verschieben") ?>"
+ <a href="#" class="move_down" title="<?= _('Frage nach unten verschieben') ?>"
onClick="STUDIP.Questionnaire.moveQuestionDown.call(this); return false;">
- <?= Icon::create('arr_1down')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('arr_1down')->asSvg(['class' => 'text-bottom']) ?>
</a>
- <a href="#" onClick="var that = this; STUDIP.Dialog.confirm('<?= _("Wirklich löschen?") ?>', function () { jQuery(that).closest('fieldset').remove(); }); return false;"
- title="<?= sprintf(_("%s löschen"), htmlReady($class::getName())) ?>">
- <?= Icon::create('trash')->asImg(['class' => 'text-bottom']) ?>
+ <a href="#" onClick="var that = this; STUDIP.Dialog.confirm('<?= _('Wirklich löschen?') ?>', function () { jQuery(that).closest('fieldset').remove(); }); return false;"
+ title="<?= sprintf(_('%s löschen'), htmlReady($class::getName())) ?>">
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom']) ?>
</a>
</div>
<div>
- <?= $class::getIcon()->asImg(['class' => 'text-bottom']) ?>
+ <?= $class::getIcon()->asSvg(['class' => 'text-bottom']) ?>
<?= htmlReady($class::getName()) ?>
</div>
diff --git a/app/views/questionnaire/_widget_questionnaire.php b/app/views/questionnaire/_widget_questionnaire.php
index 072e2d6..295d913 100644
--- a/app/views/questionnaire/_widget_questionnaire.php
+++ b/app/views/questionnaire/_widget_questionnaire.php
@@ -38,10 +38,10 @@
compact('range_type', 'range_id')
) ?>"
class="questionnaire-qr"
- title="<?= _("QR-Code zu diesem Fragebogen anzeigen") ?>" aria-label="<?= _("QR-Code zu diesem Fragebogen anzeigen") ?>"
+ title="<?= _('QR-Code zu diesem Fragebogen anzeigen') ?>" aria-label="<?= _('QR-Code zu diesem Fragebogen anzeigen') ?>"
data-qr-code>
<? URLHelper::setBaseURL($oldbase) ?>
- <?= Icon::create('code-qr')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('code-qr')->asSvg(['class' => 'text-bottom']) ?>
</a>
</span>
</nav>
diff --git a/app/views/questionnaire/add_to_context.php b/app/views/questionnaire/add_to_context.php
index 885aad5..ac80be6 100644
--- a/app/views/questionnaire/add_to_context.php
+++ b/app/views/questionnaire/add_to_context.php
@@ -9,13 +9,13 @@ $icons = [
<div>
<a href="<?= $controller->link_for("questionnaire/edit", ['range_type' => Context::getType(), 'range_id' => Context::get()->id]) ?>"
data-dialog="size=big">
- <?= Icon::create($icons[Context::getType()], Icon::ROLE_CLICKABLE)->asImg(50) ?>
+ <?= Icon::create($icons[Context::getType()], Icon::ROLE_CLICKABLE)->asSvg(50) ?>
<?= htmlReady(Context::get()->name) ?>
</a>
<? foreach ($statusgruppen as $statusgruppe) : ?>
- <a href="<?= $controller->link_for("questionnaire/edit", ['range_type' => "statusgruppe", 'range_id' => $statusgruppe->getId()]) ?>"
+ <a href="<?= $controller->link_for('questionnaire/edit', ['range_type' => 'statusgruppe', 'range_id' => $statusgruppe->getId()]) ?>"
data-dialog="size=big">
- <?= Icon::create('group2', Icon::ROLE_CLICKABLE)->asImg(50) ?>
+ <?= Icon::create('group2', Icon::ROLE_CLICKABLE)->asSvg(50) ?>
<?= htmlReady($statusgruppe->name) ?>
</a>
<? endforeach ?>
diff --git a/app/views/questionnaire/context.php b/app/views/questionnaire/context.php
index 36953a6..e1b53ac 100644
--- a/app/views/questionnaire/context.php
+++ b/app/views/questionnaire/context.php
@@ -5,10 +5,10 @@
>
<fieldset>
<legend><?= _("URL zum Fragebogen") ?></legend>
- <input type="text" aria-label="<?= _("URL zum Fragebogen (nur lesbar)") ?>" readonly value="<?= htmlReady($GLOBALS['ABSOLUTE_URI_STUDIP']."dispatch.php/questionnaire/answer/".$questionnaire->getId()) ?>">
+ <input type="text" aria-label="<?= _('URL zum Fragebogen (nur lesbar)') ?>" readonly value="<?= htmlReady($GLOBALS['ABSOLUTE_URI_STUDIP'].'dispatch.php/questionnaire/answer/'.$questionnaire->getId()) ?>">
<a href="<?= htmlReady($GLOBALS['ABSOLUTE_URI_STUDIP'] . "dispatch.php/questionnaire/answer/" . $questionnaire->id) ?>"
data-qr-code title="<?= _('QR-Code zum Link anzeigen') ?>">
- <?= Icon::create('code-qr')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('code-qr')->asSvg(['class' => 'text-bottom']) ?>
</a>
</fieldset>
<fieldset>
@@ -38,10 +38,10 @@
<label>
<input type="checkbox" name="remove_sem[]" value="<?= htmlReady($assignment['range_id']) ?>" style="display: none;">
<span>
- <a href="<?= URLHelper::getLink("dispatch.php/course/go", ['to' => $course->getId()]) ?>">
+ <a href="<?= URLHelper::getLink('dispatch.php/course/go', ['to' => $course->getId()]) ?>">
<?= htmlReady((Config::get()->IMPORTANT_SEMNUMBER ? $course->veranstaltungsnummer." " : "").$course->name. ' ('.$course->semester_text.')') ?>
</a>
- <?= Icon::create('trash')->asimg(['class' => 'text-bottom', 'title' => _('Zuweisung zur Veranstaltung aufheben.')]) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom', 'title' => _('Zuweisung zur Veranstaltung aufheben.')]) ?>
</span>
</label>
</li>
@@ -63,7 +63,7 @@
<a href="<?= URLHelper::getLink("dispatch.php/course/go", ['to' => $statusgruppe->getId()]) ?>">
<?= htmlReady($statusgruppe->course['name'].": ".$statusgruppe->name) ?>
</a>
- <?= Icon::create('trash')->asimg(['class' => 'text-bottom', 'title' => _('Zuweisung zur Veranstaltung aufheben.')]) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom', 'title' => _('Zuweisung zur Veranstaltung aufheben.')]) ?>
</span>
</label>
</li>
@@ -81,7 +81,7 @@
<label>
<input type="checkbox" name="remove_inst[]" value="<?= htmlReady($assignment['range_id']) ?>" style="display: none;">
<span><?= htmlReady(Institute::find($assignment['range_id'])->name) ?></span>
- <?= Icon::create('trash', 'clickable', ['title' => _("Zuweisung zur Einrichtung aufheben.")])->asImg(['class' => "text-bottom"]) ?>
+ <?= Icon::create('trash', 'clickable', ['title' => _('Zuweisung zur Einrichtung aufheben.')])->asSvg(['class' => 'text-bottom']) ?>
</label>
</li>
<? endif ?>
diff --git a/app/views/questionnaire/question_types/automated_data/_evaluation_part.php b/app/views/questionnaire/question_types/automated_data/_evaluation_part.php
index d2b7bac..966c30d 100644
--- a/app/views/questionnaire/question_types/automated_data/_evaluation_part.php
+++ b/app/views/questionnaire/question_types/automated_data/_evaluation_part.php
@@ -36,7 +36,7 @@
<a href=""
title="<?= _('Zeige wieder alle Ergebnisse ohne Filterung an.') ?>"
onclick="STUDIP.Questionnaire.removeFilter('<?= htmlReady($question['questionnaire_id']) ?>'); return false;">
- <?= Icon::create('filter2')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('filter2')->asSvg(['class' => 'text-bottom']) ?>
(<?= $percentage ?>% | <?= (int) count((array) $answerdata[$key]) ?>/<?= $countAnswers ?>)
</a>
<? else : ?>
diff --git a/app/views/questionnaire/question_types/likert/likert_evaluation.php b/app/views/questionnaire/question_types/likert/likert_evaluation.php
index f92adf9..cc3b287 100644
--- a/app/views/questionnaire/question_types/likert/likert_evaluation.php
+++ b/app/views/questionnaire/question_types/likert/likert_evaluation.php
@@ -104,7 +104,7 @@ $options = $vote->questiondata['options'];
<?= htmlReady($hits) ?>
</div>
</div>
- <?= Icon::create('filter2')->asImg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
+ <?= Icon::create('filter2')->asSvg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
<?= round(100 * $hits / $countAnswers) ?>%
</a>
<? else : ?>
diff --git a/app/views/questionnaire/question_types/rangescale/rangescale_evaluation.php b/app/views/questionnaire/question_types/rangescale/rangescale_evaluation.php
index 7f090dd..f51d1aa 100644
--- a/app/views/questionnaire/question_types/rangescale/rangescale_evaluation.php
+++ b/app/views/questionnaire/question_types/rangescale/rangescale_evaluation.php
@@ -105,7 +105,7 @@ $options = range($vote->questiondata['minimum'], $vote->questiondata['maximum'])
<?= htmlReady($hits) ?>
</div>
</div>
- <?= Icon::create('filter2')->asImg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
+ <?= Icon::create('filter2')->asSvg(Icon::SIZE_INLINE, ['class' => 'text-bottom']) ?>
<?= round(100 * $hits / $countAnswers) ?>%
</a>
<? else : ?>
diff --git a/app/views/questionnaire/question_types/vote/vote_evaluation.php b/app/views/questionnaire/question_types/vote/vote_evaluation.php
index cd1222f..77cab48 100644
--- a/app/views/questionnaire/question_types/vote/vote_evaluation.php
+++ b/app/views/questionnaire/question_types/vote/vote_evaluation.php
@@ -102,7 +102,7 @@ rsort($ordered_results);
<a href=""
title="<?= _('Zeige wieder alle Ergebnisse ohne Filterung an.') ?>"
onclick="STUDIP.Questionnaire.removeFilter('<?= htmlReady($vote['questionnaire_id']) ?>'); return false;">
- <?= Icon::create('filter2')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('filter2')->asSvg(['class' => 'text-bottom']) ?>
(<?= $percentage ?>% | <?= (int) ($results[$key] ?? 0) ?>/<?= $countAnswers ?>)
</a>
<? else : ?>
diff --git a/app/views/questionnaire/widget.php b/app/views/questionnaire/widget.php
index a7bb562..fac294c 100644
--- a/app/views/questionnaire/widget.php
+++ b/app/views/questionnaire/widget.php
@@ -2,7 +2,7 @@
<article class="studip questionnaire_widget" id="questionnaire_area">
<header>
<h1>
- <?= Icon::create('evaluation', Icon::ROLE_INFO)->asimg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('evaluation', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom']) ?>
<?= _('Fragebögen') ?>
</h1>
<nav>
@@ -10,17 +10,17 @@
<? if ($statusgruppen_ids): ?>
<a href="<?= $controller->link_for('questionnaire/add_to_context') ?>" data-dialog="size=auto"
title="<?= _('Fragebogen hinzufügen') ?>" aria-label="<?= _('Fragebogen hinzufügen') ?>">
- <?= Icon::create('add')->asimg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('add')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? else: ?>
<a href="<?= $controller->link_for('questionnaire/edit', compact('range_type', 'range_id')) ?>" data-dialog
title="<?= _('Fragebogen hinzufügen') ?>" aria-label="<?= _('Fragebogen hinzufügen') ?>">
- <?= Icon::create('add')->asimg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('add')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
- <a href="<?= URLHelper::getLink("dispatch.php/questionnaire/" . ($range_type == 'course' || $range_type == 'institute' ? 'course' : ''). "overview") ?>"
+ <a href="<?= URLHelper::getLink('dispatch.php/questionnaire/' . ($range_type == 'course' || $range_type == 'institute' ? 'course' : ''). 'overview') ?>"
title="<?= _('Fragebögen verwalten') ?>" aria-label="<?= _('Fragebögen verwalten') ?>">
- <?= Icon::create('admin')->asimg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('admin')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
</nav>
diff --git a/app/views/resources/_common/_resource_tr.php b/app/views/resources/_common/_resource_tr.php
index 9b69f04..bf52a0f 100644
--- a/app/views/resources/_common/_resource_tr.php
+++ b/app/views/resources/_common/_resource_tr.php
@@ -112,7 +112,7 @@
</span>
<? else: ?>
<?= htmlReady($resource->name) ?>
- <?= Icon::create('link-intern')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('link-intern')->asSvg(['class' => 'text-bottom']) ?>
<? endif ?>
</a>
<? if (!empty($resource_tooltip)): ?>
diff --git a/app/views/resources/admin/properties.php b/app/views/resources/admin/properties.php
index 072817b..438ddff 100644
--- a/app/views/resources/admin/properties.php
+++ b/app/views/resources/admin/properties.php
@@ -37,7 +37,7 @@
<?= CSRFProtection::tokenTag() ?>
<a href="<?=$controller->url_for('resources/property/edit/' . $property->id)?>"
data-dialog="size=auto">
- <?= Icon::create('edit')->asImg(
+ <?= Icon::create('edit')->asSvg(
[
'title' => _('Bearbeiten')
]
diff --git a/app/views/resources/admin/user_permissions.php b/app/views/resources/admin/user_permissions.php
index 5dedeb9..48f7fa5 100644
--- a/app/views/resources/admin/user_permissions.php
+++ b/app/views/resources/admin/user_permissions.php
@@ -125,7 +125,7 @@
'user_id' => $permission->user_id
]
) ?>" data-dialog>
- <?= Icon::create('edit')->asImg(
+ <?= Icon::create('edit')->asSvg(
'20px',
[
'class' => 'text-bottom',
@@ -139,7 +139,7 @@
. '/'
. $permission->resource_id
) ?>" data-dialog>
- <?= Icon::create('log')->asImg(
+ <?= Icon::create('log')->asSvg(
[
'class' => 'text-bottom',
'title' => 'Liste mit Buchungen anzeigen'
@@ -222,7 +222,7 @@
'user_id' => $permission->user_id
]
) ?>" data-dialog>
- <?= Icon::create('edit')->asImg(
+ <?= Icon::create('edit')->asSvg(
[
'class' => 'text-bottom',
'title' => _('Berechtigung bearbeiten')
@@ -235,7 +235,7 @@
. '/'
. $permission->resource_id
) ?>" data-dialog>
- <?= Icon::create('log')->asImg(
+ <?= Icon::create('log')->asSvg(
[
'class' => 'text-bottom',
'title' => _('Liste mit Buchungen anzeigen')
@@ -300,7 +300,7 @@
['user_id' => $user->id]
) ?>">
<?= htmlReady($user->getFullName('full_rev')) ?>
- <?= Icon::create('link-intern')->asImg(
+ <?= Icon::create('link-intern')->asSvg(
[
'class' => 'text-bottom'
]
diff --git a/app/views/resources/booking/_add_edit_form.php b/app/views/resources/booking/_add_edit_form.php
index b859a63..97f08f8 100644
--- a/app/views/resources/booking/_add_edit_form.php
+++ b/app/views/resources/booking/_add_edit_form.php
@@ -455,7 +455,7 @@
'messages/write',
['rec_uname' => $booking->assigned_user->username]
) ?>" data-dialog="size=auto">
- <?= Icon::create('mail')->asImg(
+ <?= Icon::create('mail')->asSvg(
'20px',
['class' => 'text-bottom']
) ?>
@@ -467,7 +467,7 @@
<?= _('Eine andere nutzende Person auswählen') ?>
<div class="assigned-user-search-wrapper">
<?= $assigned_user_search->render() ?>
- <?= Icon::create('refresh')->asImg(
+ <?= Icon::create('refresh')->asSvg(
'20px', ['class' => 'delete-assigned-user-icon']
) ?>
</div>
@@ -477,7 +477,7 @@
<?= _('Die nutzende Person zur Buchung') ?>
<div class="assigned-user-search-wrapper">
<?= $assigned_user_search->render() ?>
- <?= Icon::create('refresh')->asImg(
+ <?= Icon::create('refresh')->asSvg(
'20px', ['class' => 'delete-assigned-user-icon']
) ?>
</div>
@@ -498,7 +498,7 @@
'messages/write',
['rec_uname' => $booking->booking_user->username]
) ?>" data-dialog="size=auto">
- <?= Icon::create('mail')->asImg(
+ <?= Icon::create('mail')->asSvg(
'20px',
['class' => 'text-bottom']
) ?>
@@ -582,20 +582,20 @@
<td class="booking-list-interval-actions">
<button class="takes-place-delete takes-place-status-toggle <?= $interval->takes_place ? '' : ' invisible'; ?>"
data-interval_id="<?= htmlReady($interval->id) ?>">
- <?= Icon::create('trash')->asImg(
+ <?= Icon::create('trash')->asSvg(
[
'class' => 'text-bottom',
- 'title' => _('löschen')
+ 'title' => _('Löschen')
]
) ?>
</button>
<button class="takes-place-revive takes-place-status-toggle <?= $interval->takes_place ? ' invisible' : ''; ?>"
data-interval_id="<?= htmlReady($interval->id) ?>">
- <?= Icon::create('refresh')->asImg(
+ <?= Icon::create('refresh')->asSvg(
[
'class' => 'text-bottom',
- 'title' => _('wiederherstellen')
+ 'title' => _('Wiederherstellen')
]
) ?>
</button>
diff --git a/app/views/resources/booking/index.php b/app/views/resources/booking/index.php
index d339408..3a98bb2 100644
--- a/app/views/resources/booking/index.php
+++ b/app/views/resources/booking/index.php
@@ -85,7 +85,7 @@
'dispatch.php/messages/write',
['rec_uname' => $booking->booking_user->username]
) ?>" data-dialog="size=auto">
- <?= Icon::create('mail')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('mail')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? else :?>
<?= _('unbekannt') ?>
@@ -133,7 +133,7 @@
'dispatch.php/messages/write',
['rec_uname' => $booking->assigned_user->username]
) ?>" data-dialog="size=auto">
- <?= Icon::create('mail')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('mail')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
<? else : ?>
diff --git a/app/views/resources/building/index.php b/app/views/resources/building/index.php
index 4f46a0c..cfd874c 100644
--- a/app/views/resources/building/index.php
+++ b/app/views/resources/building/index.php
@@ -101,7 +101,7 @@
<li>
<a href="<?= $controller->link_for('resources/room/index/' . $child->id); ?>"
<?= (Request::isDialog()) ? 'data-dialog' : ''; ?>>
- <?= $child->getIcon('clickable')->asImg(
+ <?= $child->getIcon('clickable')->asSvg(
['class' => 'text-bottom']
) ?>
<?= htmlReady($child->name); ?>
diff --git a/app/views/resources/category/_add_edit_form.php b/app/views/resources/category/_add_edit_form.php
index 148107a..a0a9571 100644
--- a/app/views/resources/category/_add_edit_form.php
+++ b/app/views/resources/category/_add_edit_form.php
@@ -143,7 +143,7 @@
</option>
<? endforeach ?>
</select>
- <?= Icon::create('add')->asImg(['class' => 'add-action']) ?>
+ <?= Icon::create('add')->asSvg(['class' => 'add-action']) ?>
</td>
</tr>
</tfoot>
diff --git a/app/views/resources/category/details.php b/app/views/resources/category/details.php
index 59eea31..edb9a4d 100644
--- a/app/views/resources/category/details.php
+++ b/app/views/resources/category/details.php
@@ -18,7 +18,7 @@
<ul class="list-unstyled">
<? foreach ($category->property_definitions as $definition): ?>
<li>
- <?= Icon::create('checkbox-checked')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('checkbox-checked')->asSvg(['class' => 'text-bottom']) ?>
<? if ($definition->system): ?>
<strong><?= htmlReady($definition) ?></strong>
<? else: ?>
diff --git a/app/views/resources/location/index.php b/app/views/resources/location/index.php
index 162bfcd..8e6ef8c 100644
--- a/app/views/resources/location/index.php
+++ b/app/views/resources/location/index.php
@@ -75,7 +75,7 @@
<li>
<a href="<?= $controller->link_for('resources/building/index/' . $child->id); ?>"
<?= (Request::isDialog()) ? 'data-dialog' : ''; ?>>
- <?= $child->getIcon('clickable')->asImg(
+ <?= $child->getIcon('clickable')->asSvg(
['class' => 'text-bottom']
) ?>
<?= htmlReady($child->name); ?>
diff --git a/app/views/resources/messages/index.php b/app/views/resources/messages/index.php
index a2e0d0d..0bd4767 100644
--- a/app/views/resources/messages/index.php
+++ b/app/views/resources/messages/index.php
@@ -23,7 +23,7 @@
<span class="selected-room template invisible">
<input type="hidden" name="room_ids[]">
<span></span>
- <?= Icon::create('trash')->asImg(
+ <?= Icon::create('trash')->asSvg(
[
'class' => 'remove-icon text-bottom'
]
@@ -35,7 +35,7 @@
<input type="hidden" name="room_ids[]"
value="<?= htmlReady($room->id) ?>">
<span><?= htmlReady($room->name) ?></span>
- <?= Icon::create('trash')->asImg(
+ <?= Icon::create('trash')->asSvg(
[
'class' => 'remove-icon text-bottom'
]
diff --git a/app/views/resources/resource/_standard_properties_display_part.php b/app/views/resources/resource/_standard_properties_display_part.php
index ada4f80..cc33af3 100644
--- a/app/views/resources/resource/_standard_properties_display_part.php
+++ b/app/views/resources/resource/_standard_properties_display_part.php
@@ -58,7 +58,7 @@
'messages/write',
['rec_uname' => $user->username]
) ?>" data-dialog>
- <?= Icon::create('mail')->asImg(
+ <?= Icon::create('mail')->asSvg(
['class' => 'text-bottom']
) ?>
</a>
@@ -69,7 +69,7 @@
<a href="<?= htmlReady($property->state) ?>"
target="_blank">
<?= htmlReady($property->state) ?>
- <?= Icon::create('link-extern')->asImg(
+ <?= Icon::create('link-extern')->asSvg(
['class' => 'text-bottom']
) ?>
</a>
diff --git a/app/views/resources/resource/files.php b/app/views/resources/resource/files.php
index fc46b92..f78dfe8 100644
--- a/app/views/resources/resource/files.php
+++ b/app/views/resources/resource/files.php
@@ -6,7 +6,7 @@
<caption>
<a href="<?= $controller->url_for('resources/resource/files/' . $resource->id)?>"
title="<?= _('Zum Hauptordner') ?>">
- <?= Icon::create('folder-home-full', 'clickable')->asImg(30, ['class' => 'text-bottom']) ?>
+ <?= Icon::create('folder-home-full', 'clickable')->asSvg(30, ['class' => 'text-bottom']) ?>
</a>
<?= htmlReady($resource->getFullName()) ?></caption>
<?= $this->render_partial('files/_files_thead') ?>
diff --git a/app/views/resources/room_request/overview.php b/app/views/resources/room_request/overview.php
index ecb664d..9e2d787 100644
--- a/app/views/resources/room_request/overview.php
+++ b/app/views/resources/room_request/overview.php
@@ -37,7 +37,7 @@
<th <? if ($sort_var === 1) printf('class="sort%s"', $sort_order) ?>>
<? $sortorder = $sort_var !== 1 ? 'desc' : ($sort_order === 'asc' ? 'desc' : 'asc') ?>
<a href="<?= URLHelper::getLink(sprintf('?sorting=1&sort_order=%s', $sortorder)) ?>">
- <?= Icon::create('radiobutton-checked')->asImg(
+ <?= Icon::create('radiobutton-checked')->asSvg(
[
'title' => _('Markierung')
]
diff --git a/app/views/resources/room_request/resolve.php b/app/views/resources/room_request/resolve.php
index e167a95..7c518fb 100644
--- a/app/views/resources/room_request/resolve.php
+++ b/app/views/resources/room_request/resolve.php
@@ -42,7 +42,7 @@
) ?>" target="_blank"
title="<?= _('Belegungsplan anzeigen') ?>">
<?= htmlReady($room_info['room']->getFullName()) ?>
- <?= Icon::create('link-intern')->asImg(
+ <?= Icon::create('link-intern')->asSvg(
[
'class' => 'text-bottom',
'title' => ''
diff --git a/app/views/resources/room_request/resolve_room_tr.php b/app/views/resources/room_request/resolve_room_tr.php
index 8fb21f8..a7f003a 100644
--- a/app/views/resources/room_request/resolve_room_tr.php
+++ b/app/views/resources/room_request/resolve_room_tr.php
@@ -49,11 +49,11 @@
name="all_in_room" value="<?= htmlReady($room->id) ?>"
<?= $room_availability_share[$room->id] <= 0.0 ? 'disabled="disabled"' : '' ?>>
<? if ($room_availability_share[$room->id] >= 1.0) : ?>
- <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'text-bottom']) ?>
<? elseif ($room_availability_share[$room->id] <= 0.0) : ?>
- <?= Icon::create('decline-circle', Icon::ROLE_STATUS_RED)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('decline-circle', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'text-bottom']) ?>
<? else : ?>
- <?= Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asSvg(['class' => 'text-bottom']) ?>
<?= tooltipIcon(sprintf(
_('%u von %u Terminen nicht verfügbar'),
$unavailable_dates[$room->id],
@@ -78,11 +78,11 @@
? 'checked'
: ''?>>
<? if ($availability >= 1.0) : ?>
- <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'text-bottom']) ?>
<? elseif ($availability <= 0.0) : ?>
- <?= Icon::create('decline-circle', Icon::ROLE_STATUS_RED)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('decline-circle', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'text-bottom']) ?>
<? else : ?>
- <?= Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asSvg(['class' => 'text-bottom']) ?>
<?= tooltipIcon(sprintf(
_('%u von %u Terminen nicht verfügbar'),
$unavailable_metadate_dates[$room->id][$metadate_id],
@@ -119,12 +119,12 @@
|| (!empty($interval['booked_room']) && $interval['booked_room'] === $room->id))
? 'checked="checked"'
: ''?>>
- <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'text-bottom']) ?>
<? else: ?>
<input type="radio" name="<?= htmlReady($room_radio_name) ?>"
value="1" disabled="disabled"
class="text-bottom">
- <?= Icon::create('decline-circle', Icon::ROLE_STATUS_RED)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('decline-circle', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'text-bottom']) ?>
<? endif ?>
</td>
<? $i++ ?>
diff --git a/app/views/room_management/overview/index.php b/app/views/room_management/overview/index.php
index 9fa41c0..ea88309 100644
--- a/app/views/room_management/overview/index.php
+++ b/app/views/room_management/overview/index.php
@@ -92,7 +92,7 @@
<thead>
<tr>
<th>
- <?= Icon::create('radiobutton-checked')->asImg(
+ <?= Icon::create('radiobutton-checked')->asSvg(
[
'class' => 'text-bottom',
'title' => _('Markierung')
diff --git a/app/views/room_management/planning/copy_bookings.php b/app/views/room_management/planning/copy_bookings.php
index d704e68..0ab0bd7 100644
--- a/app/views/room_management/planning/copy_bookings.php
+++ b/app/views/room_management/planning/copy_bookings.php
@@ -209,7 +209,7 @@
<?= Icon::create(
$data['available'] ? 'accept' : 'decline',
$data['available'] ? Icon::ROLE_STATUS_GREEN : Icon::ROLE_STATUS_RED
- )->asImg(['class' => 'text-bottom']) ?>
+ )->asSvg(['class' => 'text-bottom']) ?>
</td>
</tr>
<? endforeach ?>
diff --git a/app/views/score/index.php b/app/views/score/index.php
index d404c66..b11a86a 100644
--- a/app/views/score/index.php
+++ b/app/views/score/index.php
@@ -55,7 +55,7 @@
<?= htmlReady($person['fullname']) ?>
</a>
<? foreach ($person['is_king'] as $type => $text): ?>
- <?= Icon::create('crown', Icon::ROLE_SORT)->asImg(['title' => $text, 'alt' => $text, 'class' => 'text-top']) ?>
+ <?= Icon::create('crown', Icon::ROLE_SORT)->asSvg(['title' => $text, 'alt' => $text, 'class' => 'text-top']) ?>
<? endforeach ?>
</td>
<td class="hidden-small-down">
@@ -68,7 +68,7 @@
$content .= sprintf(
'<a href="%s">%s</a> ',
URLHelper::getLink('dispatch.php/profile?username=' . $person['username']),
- Icon::create('news', Icon::ROLE_CLICKABLE, ['title' => $tmp])->asImg()
+ Icon::create('news', Icon::ROLE_CLICKABLE, ['title' => $tmp])->asSvg()
);
} else {
$content .= Assets::img('blank.gif', ['width' => Icon::SIZE_DEFAULT]) . ' ';
@@ -80,7 +80,7 @@
$content .= sprintf(
'<a href="%s">%s</a> ',
URLHelper::getLink('dispatch.php/profile?username=' . $person['username'] . '#questionnaire_area'),
- Icon::create('vote', Icon::ROLE_CLICKABLE, ['title' => $tmp])->asImg()
+ Icon::create('vote', Icon::ROLE_CLICKABLE, ['title' => $tmp])->asSvg()
);
} else {
$content .= Assets::img('blank.gif', ['width' => Icon::SIZE_DEFAULT]) . ' ';
@@ -92,7 +92,7 @@
$content .= sprintf(
'<a href="%s">%s</a> ',
URLHelper::getLink('dispatch.php/profile?username=' . $person['username'] . '#a'),
- Icon::create('schedule', Icon::ROLE_CLICKABLE, ['title' => $tmp])->asImg()
+ Icon::create('schedule', Icon::ROLE_CLICKABLE, ['title' => $tmp])->asSvg()
);
} else {
$content .= Assets::img('blank.gif', ['width' => Icon::SIZE_DEFAULT]) . ' ';
@@ -109,7 +109,7 @@
<? if($person['user_id'] == $GLOBALS['user']->id): ?>
<a href="<?= $controller->url_for('score/unpublish') ?>">
<?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Ihren Wert von der Liste löschen')])
- ->asImg(["class" => 'text-top'])
+ ->asSvg(['class' => 'text-top'])
?>
</a>
<? endif; ?>
diff --git a/app/views/search/globalsearch/index.php b/app/views/search/globalsearch/index.php
index ba83a3b..6140a66 100644
--- a/app/views/search/globalsearch/index.php
+++ b/app/views/search/globalsearch/index.php
@@ -6,11 +6,11 @@
<span class="input-group-append">
<button type="submit" class="button" id="reset-search">
- <?= Icon::create('decline')->asImg(['title' => _('Suche zurücksetzen')]) ?>
+ <?= Icon::create('decline')->asSvg(['title' => _('Suche zurücksetzen')]) ?>
</button>
- <button type="submit" class="button seach-button" id="search-btn">
- <?= Icon::create('search')->asImg(['title' => _('Suche starten')]) ?>
+ <button type="submit" class="button search-button" id="search-btn">
+ <?= Icon::create('search')->asSvg(['title' => _('Suche starten')]) ?>
</button>
</span>
@@ -38,8 +38,8 @@
data-all-results="<?= _('Filter aufheben') ?>"
data-searchterm="<?= htmlReady(Request::get('q')) ?>"
data-category="<?= htmlReady(Request::get('category')) ?>"
- data-img-add="<?= htmlReady(Icon::create('add')->asImg(['title' => _('Unterveranstaltungen anzeigen')])) ?>"
- data-img-remove="<?= htmlReady(Icon::create('remove')->asImg(['title' => _('Unterveranstaltungen ausblenden')])) ?>"
+ data-img-add="<?= htmlReady(Icon::create('add')->asSvg(['title' => _('Unterveranstaltungen anzeigen')])) ?>"
+ data-img-remove="<?= htmlReady(Icon::create('remove')->asSvg(['title' => _('Unterveranstaltungen ausblenden')])) ?>"
data-results-per-type="<?= Config::get()->GLOBALSEARCH_MAX_RESULT_OF_TYPE ?>"
data-filters="<?= htmlReady(json_encode($filters)) ?>">
</div>
diff --git a/app/views/search/module/_drill_down_list.php b/app/views/search/module/_drill_down_list.php
index b8a8b67..d679f33 100644
--- a/app/views/search/module/_drill_down_list.php
+++ b/app/views/search/module/_drill_down_list.php
@@ -2,7 +2,7 @@
<div style="width: 100%; text-align:right;">
<a href="<?= $controller->url_for('search/module/reset_drilldown') ?>">
<?= _('Auswahl aufheben') ?>
- <?= Icon::create('decline', 'clickable', ['title' => _('Auswahl aufheben')])->asImg(); ?>
+ <?= Icon::create('decline', 'clickable', ['title' => _('Auswahl aufheben')])->asSvg(); ?>
</a>
</div>
<? endif; ?>
@@ -24,7 +24,7 @@
<a href="<?= $controller->url_for('search/module/drilldown', ['type' => get_class($object), 'id' => $object->getId()]) ?>">
<?= htmlReady($object->getDisplayName()) . ' (' . $object->count_module . ')' ?>
<? if ($object->getId() == $drill_down_id) : ?>
- <?= Icon::create('accept', 'clickable', ['title' => _('Bereich ausgewählt')])->asImg(); ?>
+ <?= Icon::create('accept', 'clickable', ['title' => _('Bereich ausgewählt')])->asSvg(); ?>
<? endif; ?>
</a>
</li>
diff --git a/app/views/search/module/_modul.php b/app/views/search/module/_modul.php
index 1ac6280..a3c155e 100644
--- a/app/views/search/module/_modul.php
+++ b/app/views/search/module/_modul.php
@@ -10,7 +10,7 @@
<tr class="table-header header-row" id="modul_<?= htmlReady($modul->id) ?>">
<td>
<a data-dialog="size=auto" title="<?= htmlReady($modul->getDisplayName()) . ' (' . _('Vollständige Modulbeschreibung') . ')' ?>" href="<?= $controller->link_for('shared/modul/description/' . $modul->id) ?>">
- <?= Icon::create('log')->asImg(['title' => _('Vollständige Modulbeschreibung')]) ?>
+ <?= Icon::create('log')->asSvg(['title' => _('Vollständige Modulbeschreibung')]) ?>
</a>
</td>
<? if (count($modul->getAssignedCoursesBySemester($selected_semester->id, $GLOBALS['user']->id))) : ?>
diff --git a/app/views/search/stgtable/index.php b/app/views/search/stgtable/index.php
index f9d8260..f4ed092 100644
--- a/app/views/search/stgtable/index.php
+++ b/app/views/search/stgtable/index.php
@@ -20,7 +20,7 @@
<? foreach ($kategorien as $kat_id => $kategorie): ?>
<? if (!empty($stg[$kat_id])) : ?>
<td style="text-align: center;">
- <a href="<?= $controller->action_link('studiengang', $stg[$kat_id]) ?>"><?= Icon::create('info-circle-full', 'clickable', ['title' => _('Studiengang anzeigen')])->asImg(); ?></a>
+ <a href="<?= $controller->action_link('studiengang', $stg[$kat_id]) ?>"><?= Icon::create('info-circle-full', 'clickable', ['title' => _('Studiengang anzeigen')])->asSvg(); ?></a>
</td>
<? else : ?>
<td></td>
diff --git a/app/views/search/studiengaenge/mehrfach.php b/app/views/search/studiengaenge/mehrfach.php
index 5a081e2..29311e3 100644
--- a/app/views/search/studiengaenge/mehrfach.php
+++ b/app/views/search/studiengaenge/mehrfach.php
@@ -4,7 +4,7 @@
<?= _('Studiengang') ?>: <?= htmlReady($studiengang->getDisplayName()) ?>
<? if (Config::get()->ENABLE_STUDYCOURSE_INFO_PAGE) : ?>
<a href="<?= $controller->link_for('search/studiengaenge/info', $studiengang->id)?>" data-dialog>
- <?= Icon::create('infopage2')->asImg(['title' => _('Informationen zum Studiengang')]) ?>
+ <?= Icon::create('infopage2')->asSvg(['title' => _('Informationen zum Studiengang')]) ?>
</a>
<? endif; ?>
</caption>
@@ -26,7 +26,7 @@
<td style="text-align: center;">
<? if (isset($fach[$teil_bezeichnung->id])) : ?>
<a href="<?= $controller->link_for($verlauf_url, $fach[$teil_bezeichnung->id], $teil_bezeichnung->id, $studiengang_id ?? null) ?>">
- <?= Icon::create('info-circle-full')->asImg(['title' => _('Studienverlaufsplan anzeigen')]) ?>
+ <?= Icon::create('info-circle-full')->asSvg(['title' => _('Studienverlaufsplan anzeigen')]) ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/search/studiengaenge/verlauf.php b/app/views/search/studiengaenge/verlauf.php
index 3046673..7416e18 100644
--- a/app/views/search/studiengaenge/verlauf.php
+++ b/app/views/search/studiengaenge/verlauf.php
@@ -72,7 +72,7 @@
</th>
<th>
<a data-dialog title="<?= sprintf(_('%s (Kommentar)'), htmlReady($abschnitt['name'])) ?>" href="<?= $controller->link_for('search/studiengaenge/kommentar', $abschnitt_id) ?>">
- <?= Icon::create('info-circle')->asImg(['title' => _('Zusatzinformationen zum Studiengangabschnitt')]) ?>
+ <?= Icon::create('info-circle')->asSvg(['title' => _('Zusatzinformationen zum Studiengangabschnitt')]) ?>
</a>
</th>
<? for ($i = 1; $i <= $max_fachsemester; $i++) : ?>
diff --git a/app/views/settings/categories.php b/app/views/settings/categories.php
index 2bbbd50..e8003b6 100644
--- a/app/views/settings/categories.php
+++ b/app/views/settings/categories.php
@@ -16,22 +16,22 @@
<span>
<? if ($index > 0): ?>
<a href="<?= $controller->url_for('settings/categories/swap', $category->id, $last->id) ?>">
- <?= Icon::create('arr_2up', Icon::ROLE_SORT)->asImg(['class' => 'text-bottom', 'title' =>_('Kategorie nach oben verschieben')]) ?>
+ <?= Icon::create('arr_2up', Icon::ROLE_SORT)->asSvg(['class' => 'text-bottom', 'title' =>_('Kategorie nach oben verschieben')]) ?>
</a>
<? else: ?>
- <?= Icon::create('arr_2up', Icon::ROLE_INACTIVE)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('arr_2up', Icon::ROLE_INACTIVE)->asSvg(['class' => 'text-bottom']) ?>
<? endif; ?>
<? if ($index < $count - 1): ?>
<a href="<?= $controller->url_for('settings/categories/swap', $category->id, $categories[$index + 1]->id) ?>">
- <?= Icon::create('arr_2down', Icon::ROLE_SORT)->asImg(['class' => 'text-bottom', 'title' =>_('Kategorie nach unten verschieben')]) ?>
+ <?= Icon::create('arr_2down', Icon::ROLE_SORT)->asSvg(['class' => 'text-bottom', 'title' =>_('Kategorie nach unten verschieben')]) ?>
</a>
<? else: ?>
- <?= Icon::create('arr_2down', Icon::ROLE_INACTIVE)->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('arr_2down', Icon::ROLE_INACTIVE)->asSvg(['class' => 'text-bottom']) ?>
<? endif; ?>
<a href="<?= $controller->url_for('settings/categories/delete', $category->id) ?>">
- <?= Icon::create('trash')->asImg(['class' => 'text-bottom', 'title' => _('Kategorie löschen')]) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom', 'title' => _('Kategorie löschen')]) ?>
</a>
</span>
</legend>
@@ -53,7 +53,7 @@
<label>
<?= _('Inhalt') ?>
- <?= I18n::textarea("category-content-{$category->id}", $category->content, [
+ <?= I18N::textarea("category-content-{$category->id}", $category->content, [
'aria-label' => _('Inhalt der Kategorie:'),
'class' => 'resizable wysiwyg size-l',
'id' => "content{$index}",
diff --git a/app/views/settings/messaging.php b/app/views/settings/messaging.php
index 028d9f8..8f02725 100644
--- a/app/views/settings/messaging.php
+++ b/app/views/settings/messaging.php
@@ -81,7 +81,7 @@
<?= get_fullname($user->smsforward_rec, 'full', true) ?>
</a>
<a href="<?= $controller->url_for('settings/messaging/verify/forward_receiver') ?>">
- <?= Icon::create('trash', 'clickable')->asImg() ?>
+ <?= Icon::create('trash', 'clickable')->asSvg() ?>
</a>
<br>
<label>
diff --git a/app/views/settings/statusgruppen/index.php b/app/views/settings/statusgruppen/index.php
index c51f78f..bf6eed2 100644
--- a/app/views/settings/statusgruppen/index.php
+++ b/app/views/settings/statusgruppen/index.php
@@ -34,11 +34,11 @@
<? if ($GLOBALS['perm']->have_studip_perm('admin', $inst_id)) : ?>
<a href="<?= URLHelper::getURL('dispatch.php/institute/members', ['cid' => $inst_id, 'admin_view' => 1]) ?>">
- <?= Icon::create('link-intern')->asImg(['title' => _('Zur Einrichtung')]) ?>
+ <?= Icon::create('link-intern')->asSvg(['title' => _('Zur Einrichtung')]) ?>
</a>
<? else: ?>
<a href="<?= URLHelper::getURL('dispatch.php/institute/overview', ['auswahl' => $inst_id]) ?>">
- <?= Icon::create('link-intern')->asImg(['title' => _('Zur Einrichtung')]) ?>
+ <?= Icon::create('link-intern')->asSvg(['title' => _('Zur Einrichtung')]) ?>
</a>
<? endif; ?>
</nav>
@@ -78,11 +78,11 @@
<nav>
<? if ($GLOBALS['perm']->have_studip_perm('admin', $inst_id) && !$locked) : ?>
<a href="<?= $controller->url_for('settings/statusgruppen/verify/delete/' . $role_id) ?>#<?= $role_id ?>">
- <?= Icon::create('trash')->asImg(['title' => _('Löschen')]) ?>
+ <?= Icon::create('trash')->asSvg(['title' => _('Löschen')]) ?>
</a>
<a href="<?= URLHelper::getURL('dispatch.php/admin/statusgroups', ['cid' => $inst_id]) ?>#group-<?= $role_id ?>">
- <?= Icon::create('link-intern')->asImg(['title' => _('Zur Funktion')]) ?>
+ <?= Icon::create('link-intern')->asSvg(['title' => _('Zur Funktion')]) ?>
</a>
<? endif; ?>
</nav>
diff --git a/app/views/settings/statusgruppen/modify.php b/app/views/settings/statusgruppen/modify.php
index cea3eaf..72aeaea 100644
--- a/app/views/settings/statusgruppen/modify.php
+++ b/app/views/settings/statusgruppen/modify.php
@@ -32,7 +32,7 @@ $default_entries = DataFieldEntry::getDataFieldEntries([$user->user_id, $inst_id
</td>
<td style="text-align: right">
<a href="<?= $controller->url_for('settings/statusgruppen/default', $inst_id, $role_id, $id, true) ?>">
- <?= Icon::create('checkbox-unchecked')->asImg(['title' => _('Diese Daten von den Standarddaten übernehmen'), 'class' => 'text-top']) ?>
+ <?= Icon::create('checkbox-unchecked')->asSvg(['title' => _('Diese Daten von den Standarddaten übernehmen'), 'class' => 'text-top']) ?>
</a>
</td>
<? elseif ($entry->getValue() == 'default_value'): ?>
@@ -42,7 +42,7 @@ $default_entries = DataFieldEntry::getDataFieldEntries([$user->user_id, $inst_id
</td>
<td style="text-align:right">
<? if ($entry->isEditable() && !$locked): ?>
- <a href="<?= $controller->link_for('settings/statusgruppen/default', $inst_id, $role_id, $id, false) ?>"> <?= Icon::create('checkbox-checked')->asImg(['title' => _('Diese Daten NICHT von den Standarddaten übernehmen'), 'class' => 'text-top']) ?>
+ <a href="<?= $controller->link_for('settings/statusgruppen/default', $inst_id, $role_id, $id, false) ?>"> <?= Icon::create('checkbox-checked')->asSvg(['title' => _('Diese Daten NICHT von den Standarddaten übernehmen'), 'class' => 'text-top']) ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/settings/statusgruppen/modify_institute.php b/app/views/settings/statusgruppen/modify_institute.php
index 7faa312..24903cf 100644
--- a/app/views/settings/statusgruppen/modify_institute.php
+++ b/app/views/settings/statusgruppen/modify_institute.php
@@ -58,7 +58,7 @@ $entries = (array)DataFieldEntry::getDataFieldEntries([$user->user_id, $inst_id]
<label>
<? if ($institute['externdefault']) : ?>
- <?= Icon::create('accept', 'inactive')->asImg(['class' => 'text-top']); ?>
+ <?= Icon::create('accept', 'inactive')->asSvg(['class' => 'text-top']); ?>
<input type="hidden" name="default_institute" value="1">
<? else : ?>
<input type="checkbox" id="default_institute" name="default_institute" value="1"
diff --git a/app/views/settings/userdomains.php b/app/views/settings/userdomains.php
index 03763fd..f423e97 100644
--- a/app/views/settings/userdomains.php
+++ b/app/views/settings/userdomains.php
@@ -35,7 +35,7 @@
<? if ($allow_change): ?>
<input type="checkbox" name="userdomain_delete[]" value="<?= $domain->id ?>">
<? else: ?>
- <?= Icon::create('accept', 'inactive')->asImg(['class' => 'text-top']) ?>
+ <?= Icon::create('accept', 'inactive')->asSvg(['class' => 'text-top']) ?>
<? endif; ?>
</td>
</tr>
diff --git a/app/views/shared/filter.php b/app/views/shared/filter.php
index 5869859..04bab78 100644
--- a/app/views/shared/filter.php
+++ b/app/views/shared/filter.php
@@ -13,7 +13,7 @@
) : ?>
<div style="width: 100%; text-align: right;">
<a href="<?= $action_reset ?>">
- <?= Icon::create('refresh', 'clickable', ['title' => _('Filter zurücksetzen')])->asImg(); ?>
+ <?= Icon::create('refresh', 'clickable', ['title' => _('Filter zurücksetzen')])->asSvg(); ?>
<?= _('Zurücksetzen') ?>
</a>
</div>
diff --git a/app/views/shared/form_dokumente.php b/app/views/shared/form_dokumente.php
index 1f3db9e..48c64ed 100644
--- a/app/views/shared/form_dokumente.php
+++ b/app/views/shared/form_dokumente.php
@@ -51,14 +51,14 @@
'trash',
Icon::ROLE_CLICKABLE,
['title' => _('Dokument entfernen')]
- )->asImg(); ?>
+ )->asSvg(); ?>
</a>
<a href="#" class="mvv-item-edit-properties">
<?= Icon::create(
'edit',
Icon::ROLE_CLICKABLE,
['title' => _('Kommentar bearbeiten')]
- )->asImg(); ?>
+ )->asSvg(); ?>
</a>
</div>
<fieldset class="mvv-item-document-comments" style="display: none;">
@@ -93,7 +93,7 @@
'add',
Icon::ROLE_CLICKABLE,
['title' => _('Neues Dokument anlegen')]
- )->asImg(); ?>
+ )->asSvg(); ?>
</a>
</div>
<div style="padding-top: 15px; width: 100%; max-width: 48em;">
diff --git a/app/views/shared/info_search.php b/app/views/shared/info_search.php
index 008d549..3cdf95b 100644
--- a/app/views/shared/info_search.php
+++ b/app/views/shared/info_search.php
@@ -6,6 +6,6 @@
</script>
<?= $search ?>
<? if ($reset) : ?>
- <a href="<?= $reset ?>"><?= Icon::create('refresh', 'clickable', ['title' => _('Suche zurücksetzen')])->asImg(); ?></a>
+ <a href="<?= $reset ?>"><?= Icon::create('refresh', 'clickable', ['title' => _('Suche zurücksetzen')])->asSvg(); ?></a>
<? endif; ?>
</form>
diff --git a/app/views/shared/inst_chooser.php b/app/views/shared/inst_chooser.php
deleted file mode 100644
index 735ed95..0000000
--- a/app/views/shared/inst_chooser.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<? require_once dirname(__FILE__) . '/../../controllers/shared/inst_chooser.php'; ?>
-<? if ($chooser_all_institutes) : ?>
- <? $chooser_institutes = Shared_InstchooserController::get_institutes($parent_id, null, true); ?>
-<? else : ?>
- <? $chooser_institutes = Shared_InstchooserController::get_institutes($parent_id, $object_roles); ?>
-<? endif; ?>
-<div class="mvv-widget-right">
- <? if (!Request::isXhr()) : ?>
- <script>
- STUDIP.MVV.INST_CHOOSER_URL = "<?= $controller->url_for('shared/inst_chooser', ($chooser_all_institutes ? ['all' => '1'] : [])) ?>/";
- </script>
- <? endif; ?>
- <div class="mvv-inst-chooser">
- <span class="mvv-inst-add-button"><?= Icon::create('arr_2left', 'sort', ['title' => _('Einrichtung zuordnen')])->asImg(); ?></span>
- <select name="<?= $chooser_id ?>">
- <option class="mvv-inst-chooser-empty mvv-inst-chooser-level" value="">-- <?= _('Bitte wählen') ?> --</option>
- <? foreach ($chooser_institutes as $institute) : ?>
- <option class="<?= $institute['kids'] ? '' : 'mvv-inst-chooser-empty' ?><?= $institute['is_object'] ? '' : ' mvv-inst-chooser-level' ?>" value="<?= $institute['object_id']; ?>" data-type="<?= $chooser_id ?>" data-item-id="<?= $institute['item_id'] ?>" data-fb="<?= $institute['fb'] ?>">
- <?= htmlReady($institute['name']); ?>
- </option>
- <? endforeach; ?>
- </select>
- <span class="mvv-inst-next-button"><?= Icon::create('arr_1down', 'clickable', ['title' => _('Ebene anzeigen')])->asImg(); ?></span>
- </div>
-</div>
diff --git a/app/views/shared/language_chooser.php b/app/views/shared/language_chooser.php
index 7777b16..ae4f65d 100644
--- a/app/views/shared/language_chooser.php
+++ b/app/views/shared/language_chooser.php
@@ -8,7 +8,7 @@
</option>
<? endforeach; ?>
</select>
- <span class="mvv-inst-add-button"><?= Icon::create('arr_2up', 'clickable', ['title' => _('Sprache zuordnen')])->asImg(); ?></span>
+ <span class="mvv-inst-add-button"><?= Icon::create('arr_2up', 'clickable', ['title' => _('Sprache zuordnen')])->asSvg(); ?></span>
</div>
<?= $addition ?>
</div>
diff --git a/app/views/shared/version/_versionmodule.php b/app/views/shared/version/_versionmodule.php
index dfd8a84..a7e4f1a 100644
--- a/app/views/shared/version/_versionmodule.php
+++ b/app/views/shared/version/_versionmodule.php
@@ -79,7 +79,7 @@ foreach ($abschnitte as $abschnitt) {
<?= htmlReady($abschnitt_modul->getDisplayName()) ?>
</a>
<a data-dialog="size=auto" title="<?= htmlReady($modul['name']) . ' (' . _('Vollständige Modulbeschreibung') . ')' ?>" href="<?= URLHelper::getLink('shared/modul/description/' . $modul_id) ?>">
- <?= Icon::create('info-circle', 'clickable', [])->asImg(); ?>
+ <?= Icon::create('info-circle', 'clickable', [])->asSvg(); ?>
</a>
</td>
<? endif;?>
diff --git a/app/views/siteinfo/markup/uniContact.php b/app/views/siteinfo/markup/uniContact.php
index c622761..18e1918 100644
--- a/app/views/siteinfo/markup/uniContact.php
+++ b/app/views/siteinfo/markup/uniContact.php
@@ -2,6 +2,6 @@
# Lifter010: TODO
?>
<a href="mailto:<?= $contact ?>">
- <?= Icon::create('link-extern', 'clickable')->asImg() ?>
+ <?= Icon::create('link-extern', 'clickable')->asSvg() ?>
<?= $contact ?>
</a>
diff --git a/app/views/start/_widget.php b/app/views/start/_widget.php
index 479146e..2117877 100644
--- a/app/views/start/_widget.php
+++ b/app/views/start/_widget.php
@@ -20,7 +20,7 @@
<?= $key ?>="<?= htmlReady($value) ?>"
<? endif ?>
<? endforeach ?>>
- <?= $nav->getImage() ?>
+ <?= $nav->getImage()->asSvg() ?>
</a>
<? endif ?>
<?endforeach ?>
@@ -28,12 +28,12 @@
<? if (isset($admin_url)): ?>
<a href="<?= URLHelper::getLink($admin_url) ?>">
- <?= Icon::create('admin', Icon::ROLE_CLICKABLE, ['title' => $admin_title, 'size' => 20]) ?>
+ <?= Icon::create('admin', Icon::ROLE_CLICKABLE, ['title' => $admin_title])->asSvg() ?>
</a>
<? endif ?>
<a href="<?= $controller->url_for('start/delete/' . $widget->getPluginId()) ?>">
- <?= Icon::create('decline', Icon::ROLE_CLICKABLE, ['title' => _('Entfernen'), 'size' => 20]) ?>
+ <?= Icon::create('decline', Icon::ROLE_CLICKABLE, ['title' => _('Entfernen')])->asSvg() ?>
</a>
</span>
<span id="widgetName<?= $widget->getPluginId() ?>" class="widget-title">
diff --git a/app/views/studiengaenge/fachbereichestgteile/index.php b/app/views/studiengaenge/fachbereichestgteile/index.php
index 0fe3cfc..fc60e5f 100644
--- a/app/views/studiengaenge/fachbereichestgteile/index.php
+++ b/app/views/studiengaenge/fachbereichestgteile/index.php
@@ -31,7 +31,7 @@
<td class="actions dont-hide" style="white-space: nowrap;">
<? if (MvvPerm::havePermCreate('StudiengangTeil')) : ?>
<a href="<?= $controller->action_link('stgteil_fachbereich/' . $fachbereich['institut_id']) ?>">
- <?= Icon::create('file', Icon::ROLE_CLICKABLE , ['title' => _('Neuen Studiengangteil in diesem Fachbereich anlegen')])->asImg(); ?>
+ <?= Icon::create('file', Icon::ROLE_CLICKABLE , ['title' => _('Neuen Studiengangteil in diesem Fachbereich anlegen')])->asSvg(); ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/studiengaenge/faecher/index.php b/app/views/studiengaenge/faecher/index.php
index 485d922..e3f8c3e 100644
--- a/app/views/studiengaenge/faecher/index.php
+++ b/app/views/studiengaenge/faecher/index.php
@@ -39,7 +39,7 @@
<td class="dont-hide actions">
<? if (MvvPerm::havePermCreate('StudiengangTeil')) : ?>
<a href="<?= $controller->action_link('stgteil_fach/' . $fach->id) ?>">
- <?= Icon::create('file', Icon::ROLE_CLICKABLE ,['title' => _('Neuen Studiengangteil für gewähltes Fach anlegen')])->asImg(); ?>
+ <?= Icon::create('file', Icon::ROLE_CLICKABLE ,['title' => _('Neuen Studiengangteil für gewähltes Fach anlegen')])->asSvg(); ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/studiengaenge/informationen/degree.php b/app/views/studiengaenge/informationen/degree.php
index be9a69f..9638f5e 100644
--- a/app/views/studiengaenge/informationen/degree.php
+++ b/app/views/studiengaenge/informationen/degree.php
@@ -34,7 +34,7 @@
<? if ($GLOBALS['perm']->have_perm('root', $GLOBALS['user']->id)) : ?>
<a href="<?= $controller->messagehelper(['abschluss_id' => $deg->abschluss_id]) ?>"
data-dialog>
- <?= Icon::create('mail')->asImg(
+ <?= Icon::create('mail')->asSvg(
['title' => sprintf(
_('Alle Studierenden mit dem Studienabschluss %s benachrichtigen.'),
$deg->name)
diff --git a/app/views/studiengaenge/informationen/index.php b/app/views/studiengaenge/informationen/index.php
index fcdbc3b..9b2fb0b 100644
--- a/app/views/studiengaenge/informationen/index.php
+++ b/app/views/studiengaenge/informationen/index.php
@@ -33,7 +33,7 @@
</td>
<td class="dont-hide actions">
<a href="<?= $controller->messagehelper(['fach_id' => $studycourse->fach_id]) ?>" data-dialog>
- <?= Icon::create('mail')->asImg(
+ <?= Icon::create('mail')->asSvg(
['title' => sprintf(
_('Alle Studierenden des Faches %s benachrichtigen.'),
$studycourse->name)
diff --git a/app/views/studiengaenge/stgteilbezeichnungen/index.php b/app/views/studiengaenge/stgteilbezeichnungen/index.php
index 96bf7d0..65a415b 100644
--- a/app/views/studiengaenge/stgteilbezeichnungen/index.php
+++ b/app/views/studiengaenge/stgteilbezeichnungen/index.php
@@ -44,7 +44,7 @@
<? if ($perm->havePermWrite()) : ?>
<a data-dialog
href="<?= $controller->action_link('stgteilbezeichnung/' . $stgteilbezeichnung->id) ?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE ,['title' => _('Studiengangteil-Bezeichnung bearbeiten')])->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE ,['title' => _('Studiengangteil-Bezeichnung bearbeiten')])->asSvg(); ?>
</a>
<? endif; ?>
<? if ($perm->havePermCreate() && $stgteilbezeichnung->count_stgteile < 1) : ?>
diff --git a/app/views/studiengaenge/studiengaenge/aufbaustg_table.php b/app/views/studiengaenge/studiengaenge/aufbaustg_table.php
index 039d464..047ded2 100644
--- a/app/views/studiengaenge/studiengaenge/aufbaustg_table.php
+++ b/app/views/studiengaenge/studiengaenge/aufbaustg_table.php
@@ -54,7 +54,7 @@ $perm = MvvPerm::get($grund_stg);
</div>
<? if (trim($aufbau_stg->kommentar)) : ?>
<a data-dialog="size=auto" href="<?= $controller->link_for('studiengaenge/studiengaenge/aufbaustg_info', $aufbau_stg->id) ?>">
- <?= Icon::create('info')->asImg(12, tooltip2(_('Bemerkung anzeigen'))) ?>
+ <?= Icon::create('info')->asSvg(12, tooltip2(_('Bemerkung anzeigen'))) ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/studiengaenge/studiengaenge/studiengaenge.php b/app/views/studiengaenge/studiengaenge/studiengaenge.php
index 0aafb2a..4ae0dc3 100644
--- a/app/views/studiengaenge/studiengaenge/studiengaenge.php
+++ b/app/views/studiengaenge/studiengaenge/studiengaenge.php
@@ -22,7 +22,7 @@
<? $ampel_icon = $GLOBALS['MVV_STUDIENGANG']['STATUS']['values'][$studiengang->stat]['icon'] ?? null; ?>
<? $ampelstatus = $GLOBALS['MVV_STUDIENGANG']['STATUS']['values'][$studiengang->stat]['name'] ?? null; ?>
<? if ($ampel_icon) : ?>
- <?= $ampel_icon->asImg(['title' => $ampelstatus]) ?>
+ <?= $ampel_icon->asSvg(['title' => $ampelstatus, 'style' => 'vertical-align: text-top;']) ?>
<? endif; ?>
<?= htmlReady($studiengang->name) ?> <?= (mb_strlen($studiengang->name_kurz) ? '(' . htmlReady($studiengang->name_kurz) . ')' : '') ?>
<? if ($studiengang->count_dokumente) : ?>
diff --git a/app/views/studiengaenge/studiengaenge/studiengang.php b/app/views/studiengaenge/studiengaenge/studiengang.php
index 5afe651..4ee2c42 100644
--- a/app/views/studiengaenge/studiengaenge/studiengang.php
+++ b/app/views/studiengaenge/studiengaenge/studiengang.php
@@ -176,7 +176,7 @@ use Studip\Button, Studip\LinkButton;
<? if ($perm->haveFieldPerm('institut_id', MvvPerm::PERM_WRITE)): ?>
<div class="mvv-item-list-buttons">
<a href="#"
- class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE , ['title' => _('Einrichtung entfernen')])->asImg() ?></a>
+ class="mvv-item-remove"><?= Icon::create('trash', Icon::ROLE_CLICKABLE , ['title' => _('Einrichtung entfernen')])->asSvg() ?></a>
</div>
<? endif ?>
<input type="hidden" name="institut_item" value="<?= $studiengang->institut_id ?>">
@@ -242,7 +242,7 @@ use Studip\Button, Studip\LinkButton;
<li id="language_<?= $assigned_language->lang ?>" class="drag-handle sort_items">
<div class="mvv-item-list-text"><?= htmlReady($assigned_language->getDisplayName()) ?></div>
<div class="mvv-item-list-buttons">
- <a href="#" class="mvv-item-remove"><?= Icon::create('trash', 'clickable', array('title' => _('Sprache entfernen')))->asImg() ?></a>
+ <a href="#" class="mvv-item-remove"><?= Icon::create('trash', 'clickable', array('title' => _('Sprache entfernen')))->asSvg() ?></a>
</div>
<input type="hidden" name="language_items[]" value="<?= htmlReady($assigned_language->lang) ?>">
</li>
diff --git a/app/views/studiengaenge/studiengangteile/details_grouped.php b/app/views/studiengaenge/studiengangteile/details_grouped.php
index 6f10bd0..397f98d 100644
--- a/app/views/studiengaenge/studiengangteile/details_grouped.php
+++ b/app/views/studiengaenge/studiengangteile/details_grouped.php
@@ -13,7 +13,7 @@
<tr>
<td>
<? if (!empty($ampel_icon)) : ?>
- <?= $ampel_icon->asImg(['title' => $ampelstatus, 'style' => 'vertical-align: text-top;']) ?>
+ <?= $ampel_icon->asSvg(['title' => $ampelstatus, 'style' => 'vertical-align: text-top;']) ?>
<? endif; ?>
<?= htmlReady($stgteil->getDisplayName()) ?>
</td>
diff --git a/app/views/studiengaenge/studiengangteile/stgteil.php b/app/views/studiengaenge/studiengangteile/stgteil.php
index 8f3fa6e..4295aeb 100644
--- a/app/views/studiengaenge/studiengangteile/stgteil.php
+++ b/app/views/studiengaenge/studiengangteile/stgteil.php
@@ -52,7 +52,7 @@ use Studip\Button, Studip\LinkButton;
<? if ($perm->haveFieldPerm('fach', MvvPerm::PERM_WRITE)) : ?>
<div class="mvv-item-list-buttons">
<a href="#" class="mvv-item-remove">
- <?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Fach entfernen')])->asImg(); ?>
+ <?= Icon::create('trash', Icon::ROLE_CLICKABLE, ['title' => _('Fach entfernen')])->asSvg(); ?>
</a>
</div>
<? endif; ?>
diff --git a/app/views/studiengaenge/versionen/details_abschnitt.php b/app/views/studiengaenge/versionen/details_abschnitt.php
index 63abfee..a3eaa58 100644
--- a/app/views/studiengaenge/versionen/details_abschnitt.php
+++ b/app/views/studiengaenge/versionen/details_abschnitt.php
@@ -36,11 +36,11 @@
<td class="dont-hide actions" style="white-space: nowrap;">
<? if (MvvPerm::haveFieldPermModul_zuordnungen($abschnitt, MvvPerm::PERM_WRITE)) : ?>
<a data-dialog="" href="<?= $controller->action_link('modul_zuordnung', $assignment->id) ?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE , tooltip2(_('Modulzuordnung bearbeiten')))->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE , tooltip2(_('Modulzuordnung bearbeiten')))->asSvg(); ?>
</a>
<? endif; ?>
<a data-dialog="size=auto" href="<?= $controller->link_for('module/module/description', $assignment->modul_id, ['abschnitt_id' => $assignment->abschnitt_id]) ?>">
- <?= Icon::create('log', Icon::ROLE_CLICKABLE, tooltip2(_('Lokale Modulbeschreibung')))->asImg(); ?>
+ <?= Icon::create('log', Icon::ROLE_CLICKABLE, tooltip2(_('Lokale Modulbeschreibung')))->asSvg(); ?>
</a>
<? if (MvvPerm::havePermCreate($assignment)) : ?>
<?= Icon::create('trash', Icon::ROLE_CLICKABLE , tooltip2(_('Modulzuordnung löschen')))
diff --git a/app/views/studiengaenge/versionen/modulteile.php b/app/views/studiengaenge/versionen/modulteile.php
index 86b2c37..495da70 100644
--- a/app/views/studiengaenge/versionen/modulteile.php
+++ b/app/views/studiengaenge/versionen/modulteile.php
@@ -19,7 +19,7 @@
<? $perm = MvvPerm::get($assignment->abschnitt) ?>
<? if ($perm->haveFieldPerm('modulteil_abschnitte')) : ?>
<a data-dialog="" href="<?= $controller->action_link('modulteil_semester', $assignment->id, $modulteil->id) ?>">
- <?= Icon::create('edit', Icon::ROLE_CLICKABLE , ['title' => _('Semesterzuordnung bearbeiten')])->asImg(); ?>
+ <?= Icon::create('edit', Icon::ROLE_CLICKABLE , ['title' => _('Semesterzuordnung bearbeiten')])->asSvg(); ?>
</a>
<? endif; ?>
</td>
diff --git a/app/views/studiengaenge/versionen/versionen.php b/app/views/studiengaenge/versionen/versionen.php
index 27a75ae..9e42873 100644
--- a/app/views/studiengaenge/versionen/versionen.php
+++ b/app/views/studiengaenge/versionen/versionen.php
@@ -9,7 +9,7 @@
<? $ampel_icon = $GLOBALS['MVV_STGTEILVERSION']['STATUS']['values'][$version->stat]['icon'] ?>
<? $ampelstatus = $GLOBALS['MVV_STGTEILVERSION']['STATUS']['values'][$version->stat]['name'] ?>
<? if ($ampel_icon) : ?>
- <?= $ampel_icon->asImg(['title' => $ampelstatus]) ?>
+ <?= $ampel_icon->asSvg(['title' => $ampelstatus, 'style' => 'vertical-align: text-top;']) ?>
<? endif; ?>
<?= htmlReady($version->getDisplayName()) ?>
<? if ($version->count_abschnitte) : ?>
@@ -18,7 +18,7 @@
</td>
<td class="dont-hide" style="text-align: center;">
<? if ($version->count_dokumente) : ?>
- <?= Icon::create('staple', Icon::ROLE_INFO, ['title' => sprintf(ngettext('%s Dokument zugeordnet', '%s Dokumente zugeordnet', $version->count_dokumente), $version->count_dokumente)])->asImg(); ?>
+ <?= Icon::create('staple', Icon::ROLE_INFO, ['title' => sprintf(ngettext('%s Dokument zugeordnet', '%s Dokumente zugeordnet', $version->count_dokumente), $version->count_dokumente)])->asSvg(); ?>
<? endif; ?>
</td>
<td class="dont-hide" style="white-space: nowrap; text-align: right;">
diff --git a/app/views/userfilter/filter/configure.php b/app/views/userfilter/filter/configure.php
index cd170ab..c278c43 100644
--- a/app/views/userfilter/filter/configure.php
+++ b/app/views/userfilter/filter/configure.php
@@ -9,7 +9,7 @@
</div>
<br/>
<a href="#" onclick="return STUDIP.UserFilter.addConditionField('conditionfields', '<?= $controller->configure() ?>')">
- <?= Icon::create('add')->asImg(['alt' => _('Auswahlfeld hinzufügen')]) ?>
+ <?= Icon::create('add')->asSvg(['alt' => _('Auswahlfeld hinzufügen')]) ?>
<?= _('Auswahlfeld hinzufügen') ?>
</a>
<br/><br/>
diff --git a/app/views/vips/exam_mode/index.php b/app/views/vips/exam_mode/index.php
index 50bf0a6..b5aba7f 100644
--- a/app/views/vips/exam_mode/index.php
+++ b/app/views/vips/exam_mode/index.php
@@ -32,7 +32,7 @@
</td>
<td>
<a href="<?= URLHelper::getLink($nav->getURL(), ['cid' => $course_id]) ?>">
- <?= $nav->getImage()->asImg($nav->getLinkAttributes()) ?>
+ <?= $nav->getImage()->asSvg($nav->getLinkAttributes()) ?>
</a>
</td>
</tr>
diff --git a/app/views/vips/exercises/ClozeTask/correct.php b/app/views/vips/exercises/ClozeTask/correct.php
index 8e4aac1..867a644 100644
--- a/app/views/vips/exercises/ClozeTask/correct.php
+++ b/app/views/vips/exercises/ClozeTask/correct.php
@@ -15,19 +15,19 @@
<? if ($solution->id): ?>
<? if ($results[$blank]['points'] == 1): ?>
--><span class="correct_item math-tex"><?= htmlReady($response[$blank]) ?><!--
- --><?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_inline', 'title' => _('richtig')]) ?><!--
+ --><?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_inline', 'title' => _('richtig')]) ?><!--
--></span><!--
<? elseif ($results[$blank]['points'] == 0.5): ?>
--><span class="fuzzy_item math-tex"><?= htmlReady($response[$blank]) ?><!--
- --><?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asImg(['class' => 'correction_inline', 'title' => _('fast richtig')]) ?><!--
+ --><?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asSvg(['class' => 'correction_inline', 'title' => _('fast richtig')]) ?><!--
--></span><!--
<? elseif (empty($edit_solution) || $results[$blank]['safe']): ?>
--><span class="wrong_item math-tex"><?= htmlReady($response[$blank]) ?><!--
- --><?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_inline', 'title' => _('falsch')]) ?><!--
+ --><?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_inline', 'title' => _('falsch')]) ?><!--
--></span><!--
<? else: ?>
--><span class="wrong_item math-tex"><?= htmlReady($response[$blank]) ?><!--
- --><?= Icon::create('question', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_inline', 'title' => _('unbekannte Antwort')]) ?><!--
+ --><?= Icon::create('question', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_inline', 'title' => _('Unbekannte Antwort')]) ?><!--
--></span><!--
<? endif ?>
<? endif ?>
diff --git a/app/views/vips/exercises/ClozeTask/print.php b/app/views/vips/exercises/ClozeTask/print.php
index fce4bc4..4be1f4a 100644
--- a/app/views/vips/exercises/ClozeTask/print.php
+++ b/app/views/vips/exercises/ClozeTask/print.php
@@ -17,11 +17,11 @@
--><span class="math-tex" style="text-decoration: underline;">&nbsp;&nbsp;<?= htmlReady($response[$blank]) ?>&nbsp;&nbsp;</span><!--
<? if ($print_correction): ?>
<? if ($results[$blank]['points'] == 1): ?>
- --><?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('richtig')]) ?><!--
+ --><?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('richtig')]) ?><!--
<? elseif ($results[$blank]['points'] == 0.5): ?>
- --><?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asImg(['title' => _('fast richtig')]) ?><!--
+ --><?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asSvg(['title' => _('fast richtig')]) ?><!--
<? else: ?>
- --><?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('falsch')]) ?><!--
+ --><?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('falsch')]) ?><!--
<? endif ?>
<? endif ?>
<? elseif ($exercise->isSelect($blank)): ?>
diff --git a/app/views/vips/exercises/MatchingTask/correct.php b/app/views/vips/exercises/MatchingTask/correct.php
index 64faca6..d38afb6 100644
--- a/app/views/vips/exercises/MatchingTask/correct.php
+++ b/app/views/vips/exercises/MatchingTask/correct.php
@@ -44,9 +44,9 @@
<?= formatReady($answer['text']) ?>
<? if ($exercise->isCorrectAnswer($answer, $i)): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
</div>
<? endif ?>
@@ -78,9 +78,9 @@
<? if ($solution->id): ?>
<? if ($exercise->isCorrectAnswer($answer, -1)): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_inline', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_inline', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_inline', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_inline', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
</div>
diff --git a/app/views/vips/exercises/MatchingTask/print.php b/app/views/vips/exercises/MatchingTask/print.php
index a9617df..123c9a6 100644
--- a/app/views/vips/exercises/MatchingTask/print.php
+++ b/app/views/vips/exercises/MatchingTask/print.php
@@ -44,9 +44,9 @@
<? if ($print_correction): ?>
<? if ($exercise->isCorrectAnswer($answer, $i)) : ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else : ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
</div>
@@ -84,9 +84,9 @@
<? if ($solution->id && $print_correction): ?>
<? if ($exercise->isCorrectAnswer($answer, -1)): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
</li>
diff --git a/app/views/vips/exercises/MatrixChoiceTask/correct.php b/app/views/vips/exercises/MatrixChoiceTask/correct.php
index 1b4f8ba..82a87fe 100644
--- a/app/views/vips/exercises/MatrixChoiceTask/correct.php
+++ b/app/views/vips/exercises/MatrixChoiceTask/correct.php
@@ -18,9 +18,9 @@
<td style="white-space: nowrap;">
<? if (isset($response[$key]) && $response[$key] !== '' && $response[$key] != -1): ?>
<? if ($response[$key] == $entry['choice']): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
diff --git a/app/views/vips/exercises/MatrixChoiceTask/print.php b/app/views/vips/exercises/MatrixChoiceTask/print.php
index 314730f..9403d0c 100644
--- a/app/views/vips/exercises/MatrixChoiceTask/print.php
+++ b/app/views/vips/exercises/MatrixChoiceTask/print.php
@@ -17,9 +17,9 @@
<td style="white-space: nowrap;">
<? if (isset($response[$key]) && $response[$key] !== '' && $response[$key] != -1 && $print_correction): ?>
<? if ($response[$key] == $entry['choice']): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
diff --git a/app/views/vips/exercises/MultipleChoiceTask/correct.php b/app/views/vips/exercises/MultipleChoiceTask/correct.php
index 2f2a6dc..59fe5b6 100644
--- a/app/views/vips/exercises/MultipleChoiceTask/correct.php
+++ b/app/views/vips/exercises/MultipleChoiceTask/correct.php
@@ -20,9 +20,9 @@
<? if (isset($response[$key])): ?>
<? if ((int) $response[$key] == $entry['score']): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
</div>
diff --git a/app/views/vips/exercises/MultipleChoiceTask/print.php b/app/views/vips/exercises/MultipleChoiceTask/print.php
index d352f17..ea2d761 100644
--- a/app/views/vips/exercises/MultipleChoiceTask/print.php
+++ b/app/views/vips/exercises/MultipleChoiceTask/print.php
@@ -18,9 +18,9 @@
<? if (isset($response[$key]) && $print_correction): ?>
<? if ((int) $response[$key] == $entry['score']): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
</div>
diff --git a/app/views/vips/exercises/SequenceTask/correct.php b/app/views/vips/exercises/SequenceTask/correct.php
index 72cfba5..8093be0 100644
--- a/app/views/vips/exercises/SequenceTask/correct.php
+++ b/app/views/vips/exercises/SequenceTask/correct.php
@@ -37,10 +37,10 @@
<div class="correction_marker sequence">
<? if ($results[$i]['points'] == 1): ?>
<span style="color: green;">}</span>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('richtig')]) ?>
<? else: ?>
<span style="color: red;">}</span>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('falsch')]) ?>
<? endif ?>
</div>
<? endif ?>
@@ -49,9 +49,9 @@
<?= formatReady($answer['text']) ?>
<? if ($results[$i]['points'] == 1): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
</div>
<? else: ?>
diff --git a/app/views/vips/exercises/SequenceTask/print.php b/app/views/vips/exercises/SequenceTask/print.php
index 1ccb76d..485d4d7 100644
--- a/app/views/vips/exercises/SequenceTask/print.php
+++ b/app/views/vips/exercises/SequenceTask/print.php
@@ -39,10 +39,10 @@
<div class="correction_marker sequence">
<? if ($results[$i]['points'] == 1): ?>
<span style="color: green;">}</span>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('richtig')]) ?>
<? else: ?>
<span style="color: red;">}</span>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('falsch')]) ?>
<? endif ?>
</div>
<? endif ?>
@@ -52,9 +52,9 @@
<? if ($print_correction): ?>
<? if ($results[$i]['points'] == 1): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
</li>
diff --git a/app/views/vips/exercises/SingleChoiceTask/correct.php b/app/views/vips/exercises/SingleChoiceTask/correct.php
index cecc743..a2796fb 100644
--- a/app/views/vips/exercises/SingleChoiceTask/correct.php
+++ b/app/views/vips/exercises/SingleChoiceTask/correct.php
@@ -28,9 +28,9 @@
<? if (isset($response[$group]) && $response[$group] === "$key"): ?>
<? if ($entry['score'] == 1): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? elseif ($key != -1): ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
</div>
diff --git a/app/views/vips/exercises/SingleChoiceTask/print.php b/app/views/vips/exercises/SingleChoiceTask/print.php
index a61bc84..5ac9961 100644
--- a/app/views/vips/exercises/SingleChoiceTask/print.php
+++ b/app/views/vips/exercises/SingleChoiceTask/print.php
@@ -27,9 +27,9 @@
<? if ($print_correction): ?>
<? if (isset($response[$group]) && $response[$group] === "$key"): ?>
<? if ($entry['score'] == 1): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['class' => 'correction_marker', 'title' => _('richtig')]) ?>
<? elseif ($key != -1): ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['class' => 'correction_marker', 'title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
<? endif ?>
diff --git a/app/views/vips/exercises/TextLineTask/correct.php b/app/views/vips/exercises/TextLineTask/correct.php
index 45671d4..3457f2e 100644
--- a/app/views/vips/exercises/TextLineTask/correct.php
+++ b/app/views/vips/exercises/TextLineTask/correct.php
@@ -16,13 +16,13 @@
<?= htmlReady($response[0]) ?>
<? if ($results[0]['points'] == 1): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('richtig')]) ?>
<? elseif ($results[0]['points'] == 0.5): ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asImg(['title' => _('fast richtig')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asSvg(['title' => _('fast richtig')]) ?>
<? elseif (!$edit_solution || $results[0]['safe']): ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('falsch')]) ?>
<? else: ?>
- <?= Icon::create('question', Icon::ROLE_STATUS_RED)->asImg(['title' => _('unbekannte Antwort')]) ?>
+ <?= Icon::create('question', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('Unbekannte Antwort')]) ?>
<? endif ?>
<? endif ?>
diff --git a/app/views/vips/exercises/TextLineTask/print.php b/app/views/vips/exercises/TextLineTask/print.php
index 08944d2..ba86963 100644
--- a/app/views/vips/exercises/TextLineTask/print.php
+++ b/app/views/vips/exercises/TextLineTask/print.php
@@ -13,11 +13,11 @@
<? if ($print_correction): ?>
<? if ($results[0]['points'] == 1): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('richtig')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('richtig')]) ?>
<? elseif ($results[0]['points'] == 0.5): ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asImg(['title' => _('fast richtig')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_YELLOW)->asSvg(['title' => _('fast richtig')]) ?>
<? else: ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('falsch')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('falsch')]) ?>
<? endif ?>
<? endif ?>
<? else : ?>
diff --git a/app/views/vips/exercises/TextTask/correct.php b/app/views/vips/exercises/TextTask/correct.php
index 69336a4..175de6c 100644
--- a/app/views/vips/exercises/TextTask/correct.php
+++ b/app/views/vips/exercises/TextTask/correct.php
@@ -131,7 +131,7 @@
<tr>
<td>
<a href="<?= htmlReady($file_ref->getDownloadURL()) ?>">
- <?= Icon::create('file')->asImg(['title' => _('Datei herunterladen')]) ?>
+ <?= Icon::create('file')->asSvg(['title' => _('Datei herunterladen')]) ?>
<?= htmlReady($file_ref->name) ?>
</a>
</td>
diff --git a/app/views/vips/exercises/TextTask/solve.php b/app/views/vips/exercises/TextTask/solve.php
index ddafce6..62b2fa0 100644
--- a/app/views/vips/exercises/TextTask/solve.php
+++ b/app/views/vips/exercises/TextTask/solve.php
@@ -36,7 +36,7 @@
<a hidden download="<?= htmlReady($exercise->title) ?>.txt" target="_blank"></a>
<?= Studip\Button::create(_('Antwort herunterladen'), 'download', ['class' => 'vips_file_download']) ?>
<input hidden class="file_upload inline" type="file">
- <?= Studip\Button::create(_('Text in das Eingabefeld hochladen'), 'upload', ['class' => 'vips_file_upload']) ?>
+ <?= Studip\Button::create(_('Text in das Eingabefeld hochladen'), 'upload', ['class' => 'upload']) ?>
<? else: ?>
<textarea name="answer[0]" class="character_input size-l" rows="20"><?= htmlReady($answer) ?></textarea>
<? endif ?>
@@ -97,7 +97,7 @@
<td>
<input type="hidden" name="file_ids[]" value="<?= $file_ref->id ?>">
<a href="<?= htmlReady($file_ref->getDownloadURL()) ?>">
- <?= Icon::create('file')->asImg(['title' => _('Datei herunterladen')]) ?>
+ <?= Icon::create('file')->asSvg(['title' => _('Datei herunterladen')]) ?>
<?= htmlReady($file_ref->name) ?>
</a>
</td>
@@ -121,7 +121,7 @@
<tfoot>
<tr>
<td colspan="5">
- <?= Studip\Button::create(_('Datei als Lösung hochladen'), '', ['class' => 'vips_file_upload', 'data-label' => _('%d Dateien ausgewählt')]) ?>
+ <?= Studip\Button::create(_('Datei als Lösung hochladen'), '', ['class' => 'upload vips_file_upload', 'data-label' => _('%d Dateien ausgewählt')]) ?>
<span class="file_upload_hint" style="display: none;"><?= _('Klicken Sie auf „Speichern“, um die gewählten Dateien hochzuladen.') ?></span>
<input class="file_upload attach" style="display: none;" type="file" name="upload[]" multiple>
</td>
diff --git a/app/views/vips/sheets/add_exercise_dialog.php b/app/views/vips/sheets/add_exercise_dialog.php
index f13a08d..2858485 100644
--- a/app/views/vips/sheets/add_exercise_dialog.php
+++ b/app/views/vips/sheets/add_exercise_dialog.php
@@ -15,10 +15,12 @@
<div class="exercise_types">
<? foreach ($exercise_types as $type => $entry): ?>
- <button class="exercise_type" name="exercise_type" value="<?= htmlReady($type) ?>"
- style="<?= $type::getTypeIcon()->asCSS(40) ?>">
- <b><?= htmlReady($entry['name']) ?></b><br>
- <?= htmlReady($type::getTypeDescription()) ?>
+ <button class="exercise_type" name="exercise_type" value="<?= htmlReady($type) ?>">
+ <?= $type::getTypeIcon()->asSvg(40) ?>
+ <div class="exercise_type_description">
+ <span class="exercise_type_name"><?= htmlReady($entry['name']) ?></span>
+ <span><?= htmlReady($type::getTypeDescription()) ?></span>
+ </div>
</button>
<? endforeach ?>
</div>
diff --git a/app/views/vips/sheets/content_bar_icons.php b/app/views/vips/sheets/content_bar_icons.php
index 5d6268a..b0f98c1 100644
--- a/app/views/vips/sheets/content_bar_icons.php
+++ b/app/views/vips/sheets/content_bar_icons.php
@@ -1,19 +1,19 @@
<? if (isset($prev_exercise_url)): ?>
<a href="<?= htmlReady($prev_exercise_url) ?>">
- <?= Icon::create('arr_1left')->asImg(24, ['title' => _('Vorige Aufgabe')]) ?>
+ <?= Icon::create('arr_1left')->asSvg(24, ['title' => _('Vorige Aufgabe')]) ?>
</a>
<? else: ?>
<span>
- <?= Icon::create('arr_1left', Icon::ROLE_INACTIVE)->asImg(24) ?>
+ <?= Icon::create('arr_1left', Icon::ROLE_INACTIVE)->asSvg(24) ?>
</span>
<? endif ?>
<? if (isset($next_exercise_url)): ?>
<a href="<?= htmlReady($next_exercise_url) ?>">
- <?= Icon::create('arr_1right')->asImg(24, ['title' => _('Nächste Aufgabe')]) ?>
+ <?= Icon::create('arr_1right')->asSvg(24, ['title' => _('Nächste Aufgabe')]) ?>
</a>
<? else: ?>
<span>
- <?= Icon::create('arr_1right', Icon::ROLE_INACTIVE)->asImg(24) ?>
+ <?= Icon::create('arr_1right', Icon::ROLE_INACTIVE)->asSvg(24) ?>
</span>
<? endif ?>
diff --git a/app/views/vips/sheets/copy_assignment_dialog.php b/app/views/vips/sheets/copy_assignment_dialog.php
index 49eecb9..f7c8209 100644
--- a/app/views/vips/sheets/copy_assignment_dialog.php
+++ b/app/views/vips/sheets/copy_assignment_dialog.php
@@ -67,7 +67,7 @@
<?= htmlReady($assignment['test_title']) ?>
<a href="<?= $controller->link_for('vips/sheets/show_assignment', ['cid' => $course_id, 'assignment_id' => $assignment['id']]) ?>" target="_blank">
- <?= Icon::create('link-intern')->asImg(['title' => _('Vorschau anzeigen')]) ?>
+ <?= Icon::create('link-intern')->asSvg(['title' => _('Vorschau anzeigen')]) ?>
</a>
</label>
</td>
diff --git a/app/views/vips/sheets/copy_exercise_dialog.php b/app/views/vips/sheets/copy_exercise_dialog.php
index 7eeec26..d825ce1 100644
--- a/app/views/vips/sheets/copy_exercise_dialog.php
+++ b/app/views/vips/sheets/copy_exercise_dialog.php
@@ -90,7 +90,7 @@
<a href="<?= $controller->link_for('vips/sheets/preview_exercise', ['assignment_id' => $exercise['assignment_id'], 'exercise_id' => $exercise['id']]) ?>"
data-dialog="id=vips_preview;size=800x600" target="_blank">
- <?= Icon::create('question-circle')->asImg(['title' => _('Vorschau anzeigen')]) ?>
+ <?= Icon::create('question-circle')->asSvg(['title' => _('Vorschau anzeigen')]) ?>
</a>
</label>
</td>
diff --git a/app/views/vips/sheets/edit_assignment.php b/app/views/vips/sheets/edit_assignment.php
index d6e1b78..5ced547 100644
--- a/app/views/vips/sheets/edit_assignment.php
+++ b/app/views/vips/sheets/edit_assignment.php
@@ -81,8 +81,8 @@
<section>
<input id="options-toggle" class="options-toggle" type="checkbox" value="on" <?= $assignment_id ? '' : 'checked' ?>>
<a class="caption" href="#" role="button" data-toggles="#options-toggle" aria-controls="options-panel" aria-expanded="<?= $assignment_id ? 'false' : 'true' ?>">
- <?= Icon::create('arr_1down')->asImg(['class' => 'toggle-open']) ?>
- <?= Icon::create('arr_1right')->asImg(['class' => 'toggle-closed']) ?>
+ <?= Icon::create('arr_1down')->asSvg(['class' => 'toggle-open']) ?>
+ <?= Icon::create('arr_1right')->asSvg(['class' => 'toggle-closed']) ?>
<?= _('Weitere Einstellungen') ?>
</a>
@@ -191,8 +191,8 @@
<div class="practice-hidden exam-hidden">
<input id="feedback-toggle" class="options-toggle" type="checkbox" value="on">
<a class="caption" href="#" role="button" data-toggles="#feedback-toggle" aria-controls="feedback-panel" aria-expanded="false">
- <?= Icon::create('arr_1down')->asImg(['class' => 'toggle-open']) ?>
- <?= Icon::create('arr_1right')->asImg(['class' => 'toggle-closed']) ?>
+ <?= Icon::create('arr_1down')->asSvg(['class' => 'toggle-open']) ?>
+ <?= Icon::create('arr_1right')->asSvg(['class' => 'toggle-closed']) ?>
<?= _('Automatisches Feedback') ?>
</a>
diff --git a/app/views/vips/sheets/edit_exercise.php b/app/views/vips/sheets/edit_exercise.php
index 2bac01e..41156e1 100644
--- a/app/views/vips/sheets/edit_exercise.php
+++ b/app/views/vips/sheets/edit_exercise.php
@@ -75,7 +75,7 @@
<td>
<input type="hidden" name="file_ids[]" value="<?= $file_ref->id ?>">
<a href="<?= htmlReady($file_ref->getDownloadURL()) ?>" <?= $file_ref->getContentDisposition() === 'inline' ? 'target="_blank"' : '' ?>>
- <?= Icon::create('file')->asImg(['title' => _('Datei herunterladen')]) ?>
+ <?= Icon::create('file')->asSvg(['title' => _('Datei herunterladen')]) ?>
<?= htmlReady($file_ref->name) ?>
</a>
</td>
@@ -102,7 +102,7 @@
<tfoot>
<tr>
<td colspan="5">
- <?= Studip\Button::create(_('Dateien zur Aufgabe hochladen'), '', ['class' => 'vips_file_upload', 'data-label' => _('%d Dateien ausgewählt')]) ?>
+ <?= Studip\Button::create(_('Dateien zur Aufgabe hochladen'), '', ['class' => 'upload vips_file_upload', 'data-label' => _('%d Dateien ausgewählt')]) ?>
<span class="file_upload_hint" style="display: none;"><?= _('Klicken Sie auf „Speichern“, um die gewählten Dateien hochzuladen.') ?></span>
<?= tooltipIcon(sprintf(_('max. %g MB pro Datei'), FileManager::getUploadTypeConfig($assignment->range_id)['file_size'] / 1048576)) ?>
<input class="file_upload attach" style="display: none;" type="file" name="upload[]" multiple>
@@ -122,8 +122,8 @@
<input id="options-toggle" class="options-toggle" type="checkbox" value="on">
<a class="caption" href="#" role="button" data-toggles="#options-toggle" aria-controls="options-panel" aria-expanded="false">
- <?= Icon::create('arr_1down')->asImg(['class' => 'toggle-open']) ?>
- <?= Icon::create('arr_1right')->asImg(['class' => 'toggle-closed']) ?>
+ <?= Icon::create('arr_1down')->asSvg(['class' => 'toggle-open']) ?>
+ <?= Icon::create('arr_1right')->asSvg(['class' => 'toggle-closed']) ?>
<?= _('Weitere Einstellungen') ?>
</a>
diff --git a/app/views/vips/sheets/show_assignment.php b/app/views/vips/sheets/show_assignment.php
index d598e51..1494b74 100644
--- a/app/views/vips/sheets/show_assignment.php
+++ b/app/views/vips/sheets/show_assignment.php
@@ -56,8 +56,8 @@
<form class="default width-1200" style="margin-bottom: 1.5ex;">
<input id="options-toggle" class="options-toggle" type="checkbox" value="on">
<a class="caption" href="#" role="button" data-toggles="#options-toggle" aria-controls="options-panel" aria-expanded="false">
- <?= Icon::create('arr_1down')->asImg(['class' => 'toggle-open']) ?>
- <?= Icon::create('arr_1right')->asImg(['class' => 'toggle-closed']) ?>
+ <?= Icon::create('arr_1down')->asSvg(['class' => 'toggle-open']) ?>
+ <?= Icon::create('arr_1right')->asSvg(['class' => 'toggle-closed']) ?>
<?= _('Teilnahmebedingungen') ?>
</a>
@@ -148,9 +148,9 @@
</td>
<td style="text-align: center;">
<? if ($solution): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('ja')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('ja')]) ?>
<? else : ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('nein')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('nein')]) ?>
<? endif ?>
</td>
<td style="text-align: center;">
diff --git a/app/views/vips/sheets/show_exercise_link.php b/app/views/vips/sheets/show_exercise_link.php
index 6f41a6a..1abc369 100644
--- a/app/views/vips/sheets/show_exercise_link.php
+++ b/app/views/vips/sheets/show_exercise_link.php
@@ -17,7 +17,7 @@
</div>
<div class="sidebar_exercise_state">
<? if ($assignment->getSolution($solver_id, $item->task_id)): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('Aufgabe bearbeitet')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('Aufgabe bearbeitet')]) ?>
<? endif ?>
</div>
</a>
diff --git a/app/views/vips/solutions/assignment_solutions.php b/app/views/vips/solutions/assignment_solutions.php
index 388574c..472d7ef 100644
--- a/app/views/vips/solutions/assignment_solutions.php
+++ b/app/views/vips/solutions/assignment_solutions.php
@@ -65,8 +65,8 @@
<th style="width: 1em;"></th>
<th>
<a href="#" class="solution-toggle">
- <?= Icon::create('arr_1right')->asImg(['class' => 'arrow_all', 'title' => _('Aufgaben aller Teilnehmenden anzeigen')]) ?>
- <?= Icon::create('arr_1down')->asImg(['class' => 'arrow_all', 'title' => _('Aufgaben aller Teilnehmenden verstecken'), 'style' => 'display: none;']) ?>
+ <?= Icon::create('arr_1right')->asSvg(['class' => 'arrow_all', 'title' => _('Aufgaben aller Teilnehmenden anzeigen')]) ?>
+ <?= Icon::create('arr_1down')->asSvg(['class' => 'arrow_all', 'title' => _('Aufgaben aller Teilnehmenden verstecken'), 'style' => 'display: none;']) ?>
<?= _('Teilnehmende') ?>
</a>
</th>
@@ -108,8 +108,8 @@
<td>
<a href="#" class="solution-toggle">
- <?= Icon::create('arr_1right')->asImg(['class' => 'solution-open', 'title' => _('Aufgaben anzeigen')]) ?>
- <?= Icon::create('arr_1down')->asImg(['class' => 'solution-close', 'title' => _('Aufgaben verstecken')]) ?>
+ <?= Icon::create('arr_1right')->asSvg(['class' => 'solution-open', 'title' => _('Aufgaben anzeigen')]) ?>
+ <?= Icon::create('arr_1down')->asSvg(['class' => 'solution-close', 'title' => _('Aufgaben verstecken')]) ?>
<?= htmlReady($solver['name']) ?>
</a>
diff --git a/app/views/vips/solutions/assignments_list.php b/app/views/vips/solutions/assignments_list.php
index c685e9a..851fd47 100644
--- a/app/views/vips/solutions/assignments_list.php
+++ b/app/views/vips/solutions/assignments_list.php
@@ -109,9 +109,9 @@
<? if (!isset($ass['uncorrected_solutions'])): ?>
&ndash;
<? elseif ($ass['uncorrected_solutions'] == 0): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('ja')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('ja')]) ?>
<? else : ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('nein')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('nein')]) ?>
<? endif ?>
</td>
diff --git a/app/views/vips/solutions/edit_solution.php b/app/views/vips/solutions/edit_solution.php
index 64bd8bb..327342f 100644
--- a/app/views/vips/solutions/edit_solution.php
+++ b/app/views/vips/solutions/edit_solution.php
@@ -25,10 +25,10 @@
<? /* previous solver */ ?>
<? if (isset($prev_solver)): ?>
<a href="<?= $controller->edit_solution(['assignment_id' => $assignment_id, 'exercise_id' => $exercise_id, 'solver_id' => $prev_solver['user_id'], 'view' => $view]) ?>">
- <?= Icon::create('arr_1left')->asImg(['title' => _('Voriger Teilnehmer / vorige Teilnehmerin')]) ?>
+ <?= Icon::create('arr_1left')->asSvg(['title' => _('Voriger Teilnehmer / vorige Teilnehmerin')]) ?>
</a>
<? else: ?>
- <?= Icon::create('arr_1left', Icon::ROLE_INACTIVE)->asImg(['title' => _('Keiner der vorhergehenden Teilnehmenden hat diese Aufgabe bearbeitet')]) ?>
+ <?= Icon::create('arr_1left', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Keiner der vorhergehenden Teilnehmenden hat diese Aufgabe bearbeitet')]) ?>
<? endif ?>
<? /* overview */ ?>
@@ -39,10 +39,10 @@
<? /* next solver */ ?>
<? if (isset($next_solver)): ?>
<a href="<?= $controller->edit_solution(['assignment_id' => $assignment_id, 'exercise_id' => $exercise_id, 'solver_id' => $next_solver['user_id'], 'view' => $view]) ?>">
- <?= Icon::create('arr_1right')->asImg(['title' => _('Nächster Teilnehmer / nächste Teilnehmerin')]) ?>
+ <?= Icon::create('arr_1right')->asSvg(['title' => _('Nächster Teilnehmer / nächste Teilnehmerin')]) ?>
</a>
<? else: ?>
- <?= Icon::create('arr_1right', Icon::ROLE_INACTIVE)->asImg(['title' => _('Keiner der nachfolgenden Teilnehmenden hat diese Aufgabe bearbeitet')]) ?>
+ <?= Icon::create('arr_1right', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Keiner der nachfolgenden Teilnehmenden hat diese Aufgabe bearbeitet')]) ?>
<? endif ?>
&nbsp;/&nbsp;
@@ -50,10 +50,10 @@
<? /* previous exercise */ ?>
<? if (isset($prev_exercise)): ?>
<a href="<?= $controller->edit_solution(['assignment_id' => $assignment_id, 'exercise_id' => $prev_exercise['id'], 'solver_id' => $solver_id, 'view' => $view]) ?>">
- <?= Icon::create('arr_1left')->asImg(['title' => _('Vorige Aufgabe')]) ?>
+ <?= Icon::create('arr_1left')->asSvg(['title' => _('Vorige Aufgabe')]) ?>
</a>
<? else: ?>
- <?= Icon::create('arr_1left', Icon::ROLE_INACTIVE)->asImg(['title' => _('Die teilnehmende Person hat keine der vorhergehenden Aufgaben bearbeitet')]) ?>
+ <?= Icon::create('arr_1left', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Die teilnehmende Person hat keine der vorhergehenden Aufgaben bearbeitet')]) ?>
<? endif ?>
<? /* exercise name */ ?>
@@ -62,10 +62,10 @@
<? /* next exercise */ ?>
<? if (isset($next_exercise)): ?>
<a href="<?= $controller->edit_solution(['assignment_id' => $assignment_id, 'exercise_id' => $next_exercise['id'], 'solver_id' => $solver_id, 'view' => $view]) ?>">
- <?= Icon::create('arr_1right')->asImg(['title' => _('Nächste Aufgabe')]) ?>
+ <?= Icon::create('arr_1right')->asSvg(['title' => _('Nächste Aufgabe')]) ?>
</a>
<? else: ?>
- <?= Icon::create('arr_1right', Icon::ROLE_INACTIVE)->asImg(['title' => _('Die teilnehmende Person hat keine der nachfolgenden Aufgaben bearbeitet')]) ?>
+ <?= Icon::create('arr_1right', Icon::ROLE_INACTIVE)->asSvg(['title' => _('Die teilnehmende Person hat keine der nachfolgenden Aufgaben bearbeitet')]) ?>
<? endif ?>
</div>
@@ -147,7 +147,7 @@
<td>
<input type="hidden" name="file_ids[]" value="<?= htmlReady($file_ref->id) ?>">
<a href="<?= htmlReady($file_ref->getDownloadURL()) ?>">
- <?= Icon::create('file')->asImg(['title' => _('Datei herunterladen')]) ?>
+ <?= Icon::create('file')->asSvg(['title' => _('Datei herunterladen')]) ?>
<?= htmlReady($file_ref->name) ?>
</a>
</td>
@@ -171,7 +171,7 @@
<tfoot>
<tr>
<td colspan="5">
- <?= Studip\Button::create(_('Dateien zur Korrektur hochladen'), '', ['class' => 'vips_file_upload', 'data-label' => _('%d Dateien ausgewählt')]) ?>
+ <?= Studip\Button::create(_('Dateien zur Korrektur hochladen'), '', ['class' => 'upload vips_file_upload', 'data-label' => _('%d Dateien ausgewählt')]) ?>
<span class="file_upload_hint" style="display: none;"><?= _('Klicken Sie auf „Speichern“, um die gewählten Dateien hochzuladen.') ?></span>
<?= tooltipIcon(sprintf(_('max. %g MB pro Datei'), FileManager::getUploadTypeConfig($assignment->range_id)['file_size'] / 1048576)) ?>
<input class="file_upload attach" style="display: none;" type="file" name="upload[]" multiple>
diff --git a/app/views/vips/solutions/feedback_files_table.php b/app/views/vips/solutions/feedback_files_table.php
index dff9869..8c6757c 100644
--- a/app/views/vips/solutions/feedback_files_table.php
+++ b/app/views/vips/solutions/feedback_files_table.php
@@ -31,7 +31,7 @@
<tr>
<td>
<a href="<?= htmlReady($file_ref->getDownloadURL()) ?>">
- <?= Icon::create('file')->asImg(['title' => _('Datei herunterladen')]) ?>
+ <?= Icon::create('file')->asSvg(['title' => _('Datei herunterladen')]) ?>
<?= htmlReady($file_ref->name) ?>
</a>
</td>
diff --git a/app/views/vips/solutions/student_assignment_solutions.php b/app/views/vips/solutions/student_assignment_solutions.php
index d5b717a..b279a36 100644
--- a/app/views/vips/solutions/student_assignment_solutions.php
+++ b/app/views/vips/solutions/student_assignment_solutions.php
@@ -64,9 +64,9 @@
</td>
<td style="text-align: center;">
<? if ($solution): ?>
- <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asImg(['title' => _('ja')]) ?>
+ <?= Icon::create('accept', Icon::ROLE_STATUS_GREEN)->asSvg(['title' => _('ja')]) ?>
<? else : ?>
- <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asImg(['title' => _('nein')]) ?>
+ <?= Icon::create('decline', Icon::ROLE_STATUS_RED)->asSvg(['title' => _('nein')]) ?>
<? endif ?>
</td>
<td style="text-align: center;">
diff --git a/db/migrations/6.1.13_add_themes_config.php b/db/migrations/6.1.13_add_themes_config.php
new file mode 100644
index 0000000..d1b4704
--- /dev/null
+++ b/db/migrations/6.1.13_add_themes_config.php
@@ -0,0 +1,57 @@
+<?php
+
+final class AddThemesConfig extends Migration
+{
+ public function description()
+ {
+ return 'Add configs for Stud.IP Themes';
+ }
+
+ public function up()
+ {
+ $query = 'INSERT INTO `config` (`field`, `value`, `type`, `section`, `range`, `description`, `mkdate`, `chdate`)
+ VALUES (:name, :value, :type, :section, :range, :description, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())';
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute([
+ 'name' => 'STUDIP_THEME_LIGHT',
+ 'value' => '1',
+ 'type' => 'integer',
+ 'section' => 'Themes',
+ 'range' => 'global',
+ 'description' => 'Welches Theme soll im Light-Mode verwendet werden?'
+ ]);
+ $statement->execute([
+ 'name' => 'STUDIP_THEME_DARK',
+ 'value' => '2',
+ 'type' => 'integer',
+ 'section' => 'Themes',
+ 'range' => 'global',
+ 'description' => 'Welches Theme soll im Dark-Mode verwendet werden?'
+ ]);
+ $statement->execute([
+ 'name' => 'STUDIP_THEME_HIGH_CONTRAST',
+ 'value' => '3',
+ 'type' => 'integer',
+ 'section' => 'Themes',
+ 'range' => 'global',
+ 'description' => 'Welches Theme soll im High-Contrast-Mode verwendet werden?'
+ ]);
+ }
+
+ public function down()
+ {
+ $query = "DELETE `config`, `config_values`, `i18n`
+ FROM `config`
+ LEFT JOIN `config_values` USING (`field`)
+ LEFT JOIN `i18n`
+ ON `table` = 'config'
+ AND `field` = 'value'
+ AND `object_id` = MD5(`config`.`field`)
+ WHERE `field` IN (
+ 'STUDIP_THEME_LIGHT',
+ 'STUDIP_THEME_DARK',
+ 'STUDIP_THEME_HIGH_CONTRAST'
+ )";
+ DBManager::get()->exec($query);
+ }
+} \ No newline at end of file
diff --git a/db/migrations/6.1.14_add_themes_table.php b/db/migrations/6.1.14_add_themes_table.php
new file mode 100644
index 0000000..f5ccc70
--- /dev/null
+++ b/db/migrations/6.1.14_add_themes_table.php
@@ -0,0 +1,76 @@
+<?php
+
+final class AddThemesTable extends Migration
+{
+ public function description()
+ {
+ return 'Create table for Stud.IP Themes';
+ }
+
+ public function up()
+ {
+ $query = "CREATE TABLE IF NOT EXISTS `themes` (
+ `id` INT(11) NOT NULL AUTO_INCREMENT,
+ `active` TINYINT(1) NOT NULL DEFAULT 0,
+ `name` VARCHAR(255) NOT NULL,
+ `origin` ENUM('system', 'custom') COLLATE latin1_bin NOT NULL,
+ `version` VARCHAR(50) NOT NULL,
+ `studip_min_version` VARCHAR(50) NOT NULL,
+ `studip_max_version` VARCHAR(50) NOT NULL,
+ `author` VARCHAR(255) NOT NULL,
+ `description` VARCHAR(255) NOT NULL,
+ `type` ENUM('light', 'dark', 'high-contrast') COLLATE latin1_bin NOT NULL,
+ `values` MEDIUMTEXT NOT NULL,
+ `mkdate` INT(11) NOT NULL,
+ `chdate` INT(11) NOT NULL,
+ PRIMARY KEY (`id`)
+ )";
+ DBManager::get()->exec($query);
+
+ $default_values = json_encode([
+ '--color--brand-primary' => '#28497c',
+ '--color--brand-primary-contrast' => '#ffffff',
+ '--color--brand-secondary' => '#28497c',
+ '--color--brand-secondary-contrast' => '#ffffff',
+ '--color--global-background' => '#ffffff',
+ '--color--font-primary' => '#101010',
+ '--color--font-secondary' => '#3c454e',
+ '--color--font-inactive' => '#676767',
+ '--color--font-inverted' => '#ffffff',
+ '--color--main-navigation-item' => '#28497c',
+ '--color--sidebar-item' => '#28497c',
+ '--color--sidebar-item-hover' => '#d60000',
+ '--color--highlight' => '#28497c',
+ '--color--highlight-hover' => '#d60000',
+ '--color--content-link' => '#28497c',
+ '--color--content-link-hover' => '#d60000',
+ ]);
+
+ $stmt = DBManager::get()->prepare("
+ INSERT INTO `themes`
+ (`id`, `active`, `name`, `origin`, `version`, `studip_min_version`, `studip_max_version`, `author`, `description`, `type`, `values`, `mkdate`, `chdate`)
+ VALUES
+ (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
+ ");
+
+ $stmt->execute([
+ 1,
+ 1,
+ 'Stud.IP Light Theme',
+ 'system',
+ '1.0',
+ '6.1',
+ '6.1',
+ 'Ron Lucke',
+ 'Default Light Theme',
+ 'light',
+ $default_values,
+ ]);
+
+ }
+
+ public function down()
+ {
+ DBManager::get()->exec('DROP TABLE IF EXISTS `themes`');
+ }
+}
diff --git a/lib/admissionrules/coursememberadmission/templates/info.php b/lib/admissionrules/coursememberadmission/templates/info.php
index 9c844e3..8616aad 100644
--- a/lib/admissionrules/coursememberadmission/templates/info.php
+++ b/lib/admissionrules/coursememberadmission/templates/info.php
@@ -14,7 +14,7 @@
<li>
<strong><?= htmlReady($course->getFullName('number-name-semester')) ?></strong>
<a href="<?= URLHelper::getLink('dispatch.php/course/details/index/' . $course->id) ?>" data-dialog>
- <?= Icon::create('info-circle')->asImg([
+ <?= Icon::create('info-circle')->asSvg([
'title' => _('Veranstaltungsdetails aufrufen')
]) ?>
</a>
diff --git a/lib/classes/Icon.php b/lib/classes/Icon.php
index ad1327c..bec9bdd 100644
--- a/lib/classes/Icon.php
+++ b/lib/classes/Icon.php
@@ -41,6 +41,7 @@ class Icon implements JsonSerializable
protected string $role;
protected array $attributes = [];
+ private static array $svg_cache = [];
/**
* This is the magical Role to Color mapping.
@@ -153,7 +154,7 @@ class Icon implements JsonSerializable
*/
public function getShape()
{
- return $this->shapeToPath($this->shape);
+ return $this->shapeToPath();
}
/**
@@ -197,7 +198,7 @@ class Icon implements JsonSerializable
*/
public function __toString()
{
- return $this->asImg();
+ return $this->asSvg();
}
public function jsonSerialize(): mixed
@@ -227,6 +228,78 @@ class Icon implements JsonSerializable
);
}
+ public function asSvg($size = self::SIZE_DEFAULT, $view_attributes = []): string
+ {
+ if (self::isStatic($this->shape)) {
+ return $this->asImg($size, $view_attributes);
+ }
+
+ if (is_array($size)) {
+ [$view_attributes, $size] = [$size, $size['size'] ?? self::SIZE_DEFAULT];
+ }
+
+ $cacheKey = md5(json_encode([
+ 'role' => $this->role,
+ 'shape' => $this->shape,
+ 'size' => $size,
+ 'attrs' => $view_attributes
+ ]));
+
+ if (isset(self::$svg_cache[$cacheKey])) {
+ return self::$svg_cache[$cacheKey];
+ }
+
+ $path = __DIR__ . '/../../public/assets/images/icons/' . self::roleToColor($this->role) . '/' . $this->shapeToPath($this->shape) . '.svg';
+ $roleClass = $this->role ? 'icon-role-' . $this->role : '';
+
+ $classes = trim("studip-icon $roleClass");
+ if (!empty($view_attributes['class'])) {
+ $classes .= ' ' . $view_attributes['class'];
+ }
+ $view_attributes['class'] = $classes;
+
+ $titleTag = '';
+ if (!empty($view_attributes['title'])) {
+ $titleTag = '<title>' . htmlspecialchars($view_attributes['title']) . '</title>';
+ unset($view_attributes['title']); // Entfernt 'title' aus den View-Attributen, da es separat hinzugefügt wird
+ }
+
+ $attrString = $this->buildSvgAttributes($view_attributes);
+
+ if (!file_exists($path)) {
+ return '';
+ }
+
+ $svgContent = file_get_contents($path);
+
+ $svgContent = preg_replace('/fill="(?!none)[^"]+"/', 'fill="currentColor"', $svgContent);
+
+ $svgContent = preg_replace('/(width|height)="[^"]+"/', '', $svgContent);
+ if ($size !== false) {
+ $svgContent = preg_replace('/<svg([^>]+)>/', '<svg$1 style="width:' . $size . 'px;height:' . $size . 'px">', $svgContent);
+ }
+
+ $svgContent = preg_replace_callback('/<svg([^>]+)>/', function($matches) use ($attrString) {
+ return '<svg' . $matches[1] . ' ' . $attrString . '>';
+ }, $svgContent);
+
+ if (!empty($titleTag)) {
+ $svgContent = preg_replace('/(<svg[^>]*>)/', '$1' . $titleTag, $svgContent, 1);
+ }
+
+ self::$svg_cache[$cacheKey] = $svgContent;
+ return $svgContent;
+ }
+
+ private function buildSvgAttributes(array $attributes): string
+ {
+ $attrString = '';
+ foreach ($attributes as $key => $value) {
+ $attrString .= sprintf(' %s="%s"', htmlspecialchars($key, ENT_QUOTES, 'UTF-8'), htmlspecialchars($value, ENT_QUOTES, 'UTF-8'));
+ }
+ return trim($attrString);
+ }
+
/**
* Renders the icon inside an input html tag.
*
@@ -236,16 +309,27 @@ class Icon implements JsonSerializable
* into the rendered output
* @return String containing the html representation for the icon.
*/
- public function asInput($size = null, $view_attributes = [])
+ public function asInput($size = self::SIZE_DEFAULT, $view_attributes = [])
{
if (is_array($size)) {
- [$view_attributes, $size] = [$size, null];
+ [$view_attributes, $size] = [$size, self::SIZE_DEFAULT];
}
+
+ $view_attributes['tabindex'] ??= '0';
+ $view_attributes['role'] ??= 'button';
+
+ $text = isset($view_attributes['text']) ? htmlReady($view_attributes['text']) : '';
+
+ $svgContent = $this->asSvg($size, $view_attributes);
+
return sprintf(
- '<input type="image" %s>',
- arrayToHtmlAttributes(
- $this->prepareHTMLAttributes($size, $view_attributes)
- )
+ '<label class="icon-button undecorated">
+ <input type="submit" hidden %s>
+ %s%s
+ </label>',
+ arrayToHtmlAttributes($this->prepareHTMLAttributes($size, $view_attributes)),
+ $svgContent,
+ $text
);
}
diff --git a/lib/classes/JsonApi/RouteMap.php b/lib/classes/JsonApi/RouteMap.php
index 4df0677..9393776 100644
--- a/lib/classes/JsonApi/RouteMap.php
+++ b/lib/classes/JsonApi/RouteMap.php
@@ -139,6 +139,7 @@ class RouteMap
$this->addAuthenticatedNewsRoutes($group);
$this->addAuthenticatedStockImagesRoutes($group);
$this->addAuthenticatedStudyAreasRoutes($group);
+ $this->addAuthenticatedThemesRoutes($group);
$this->addAuthenticatedUserFilterRoutes($group);
$this->addAuthenticatedWikiRoutes($group);
}
@@ -735,6 +736,15 @@ class RouteMap
$group->post('/stock-images/zip', Routes\StockImages\StockImagesZipUpload::class);
}
+ private function addAuthenticatedThemesRoutes(RouteCollectorProxy $group): void
+ {
+ $group->get('/studip-themes', Routes\Themes\ThemesIndex::class);
+ $group->get('/studip-themes/{id}', Routes\Themes\ThemesShow::class);
+ $group->post('/studip-themes', Routes\Themes\ThemesCreate::class);
+ $group->patch('/studip-themes/{id}', Routes\Themes\ThemesUpdate::class);
+ $group->delete('/studip-themes/{id}', Routes\Themes\ThemesDelete::class);
+ }
+
private function addAuthenticatedAvatarRoutes(RouteCollectorProxy $group): void
{
$group->get('/{type:courses|institutes|users}/{id}/avatar', Routes\Avatar\AvatarOfRangeShow::class);
diff --git a/lib/classes/JsonApi/Routes/Themes/Authority.php b/lib/classes/JsonApi/Routes/Themes/Authority.php
new file mode 100644
index 0000000..9d9598d
--- /dev/null
+++ b/lib/classes/JsonApi/Routes/Themes/Authority.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace JsonApi\Routes\Themes;
+
+use User;
+
+class Authority
+{
+ public static function canIndexThemes(User $user): bool
+ {
+ return $GLOBALS['perm']->have_perm('root', $user->id);
+ }
+ public static function canShowTheme(User $user): bool
+ {
+ return self::canIndexThemes($user);
+ }
+
+ public static function canDeleteTheme(User $user): bool
+ {
+ return self::canIndexThemes($user);
+ }
+
+ public static function canUpdateTheme(User $user): bool
+ {
+ return self::canIndexThemes($user);
+ }
+
+ public static function canCreateTheme(User $user): bool
+ {
+ return self::canIndexThemes($user);
+ }
+} \ No newline at end of file
diff --git a/lib/classes/JsonApi/Routes/Themes/ThemesCreate.php b/lib/classes/JsonApi/Routes/Themes/ThemesCreate.php
new file mode 100644
index 0000000..8fae4ff
--- /dev/null
+++ b/lib/classes/JsonApi/Routes/Themes/ThemesCreate.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace JsonApi\Routes\Themes;
+
+use JsonApi\Errors\AuthorizationFailedException;
+use JsonApi\Errors\RecordNotFoundException;
+use JsonApi\JsonApiController;
+use JsonApi\Routes\ValidationTrait;
+use JsonApi\Schemas\StockImage as ResourceSchema;
+use Psr\Http\Message\ResponseInterface as Response;
+use Psr\Http\Message\ServerRequestInterface as Request;
+
+class ThemesCreate extends JsonApiController
+{
+ use ValidationTrait;
+
+ public function __invoke(Request $request, Response $response, $args): Response
+ {
+ $user = $this->getUser($request);
+ if (!Authority::canCreateTheme($user)) {
+ throw new AuthorizationFailedException();
+ }
+
+ $json = $this->validate($request);
+ $resource = $this->createResource($json, $user);
+
+ return $this->getContentResponse($resource);
+ }
+
+ protected function validateResourceDocument($json, $data)
+ {
+ if (!self::arrayHas($json, 'data')) {
+ return 'Missing `data` member at document´s top level.';
+ }
+ }
+
+ private function createResource(array $json, \User $user): \Theme
+ {
+ $theme = \Theme::build([
+ 'name' => self::arrayGet($json, 'data.attributes.name', 'custom theme'),
+ 'origin' => 'custom',
+ 'version' => '1.0',
+ 'studip_min_version' => self::arrayGet($json, 'data.attributes.studip-min-version', '6.1'),
+ 'studip_max_version' => self::arrayGet($json, 'data.attributes.studip-max-version', '6.1'),
+ 'author' => $user->getFullname(),
+ 'description' => self::arrayGet($json, 'data.attributes.description', 'custom theme'),
+ 'type' => self::arrayGet($json, 'data.attributes.type', 'light'),
+ 'values' => json_encode(self::arrayGet($json, 'data.attributes.values', []))
+ ]);
+
+ $theme->store();
+
+ return $theme;
+ }
+} \ No newline at end of file
diff --git a/lib/classes/JsonApi/Routes/Themes/ThemesDelete.php b/lib/classes/JsonApi/Routes/Themes/ThemesDelete.php
new file mode 100644
index 0000000..d96f1b5
--- /dev/null
+++ b/lib/classes/JsonApi/Routes/Themes/ThemesDelete.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace JsonApi\Routes\Themes;
+
+use JsonApi\Errors\AuthorizationFailedException;
+use JsonApi\Errors\RecordNotFoundException;
+use JsonApi\JsonApiController;
+use Psr\Http\Message\ResponseInterface as Response;
+use Psr\Http\Message\ServerRequestInterface as Request;
+
+
+class ThemesDelete extends JsonApiController
+{
+ public function __invoke(Request $request, Response $response, $args): Response
+ {
+ $resource = \Theme::find($args['id']);
+ if (!$resource) {
+ throw new RecordNotFoundException();
+ }
+
+ if (!Authority::canDeleteTheme($this->getUser($request))) {
+ throw new AuthorizationFailedException();
+ }
+ $resource->delete();
+
+ return $this->getCodeResponse(204);
+ }
+}
diff --git a/lib/classes/JsonApi/Routes/Themes/ThemesIndex.php b/lib/classes/JsonApi/Routes/Themes/ThemesIndex.php
new file mode 100644
index 0000000..508b886
--- /dev/null
+++ b/lib/classes/JsonApi/Routes/Themes/ThemesIndex.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace JsonApi\Routes\Themes;
+
+use JsonApi\Errors\AuthorizationFailedException;
+use JsonApi\JsonApiController;
+use Psr\Http\Message\ResponseInterface as Response;
+use Psr\Http\Message\ServerRequestInterface as Request;
+
+class ThemesIndex extends JsonApiController
+{
+ protected $allowedPagingParameters = ['offset', 'limit'];
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function __invoke(Request $request, Response $response): Response
+ {
+ if (!Authority::canIndexThemes($this->getUser($request))) {
+ throw new AuthorizationFailedException();
+ }
+
+ list($offset, $limit) = $this->getOffsetAndLimit();
+ $total = \Theme::countBySQL('1');
+ $themes = \Theme::findBySQL("1 ORDER BY name ASC LIMIT {$offset}, {$limit}");
+
+ return $this->getPaginatedContentResponse($themes, $total);
+ }
+}
diff --git a/lib/classes/JsonApi/Routes/Themes/ThemesShow.php b/lib/classes/JsonApi/Routes/Themes/ThemesShow.php
new file mode 100644
index 0000000..ba85e09
--- /dev/null
+++ b/lib/classes/JsonApi/Routes/Themes/ThemesShow.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace JsonApi\Routes\Themes;
+
+use JsonApi\Errors\AuthorizationFailedException;
+use JsonApi\Errors\RecordNotFoundException;
+use JsonApi\JsonApiController;
+use Psr\Http\Message\ResponseInterface as Response;
+use Psr\Http\Message\ServerRequestInterface as Request;
+
+class ThemesShow extends JsonApiController
+{
+ public function __invoke(Request $request, Response $response, $args): Response
+ {
+ $resource = \Theme::find($args['id']);
+ if (!$resource) {
+ throw new RecordNotFoundException();
+ }
+
+ if (!Authority::canShowTheme($this->getUser($request), $resource)) {
+ throw new AuthorizationFailedException();
+ }
+
+ return $this->getContentResponse($resource);
+ }
+} \ No newline at end of file
diff --git a/lib/classes/JsonApi/Routes/Themes/ThemesUpdate.php b/lib/classes/JsonApi/Routes/Themes/ThemesUpdate.php
new file mode 100644
index 0000000..751b0d0
--- /dev/null
+++ b/lib/classes/JsonApi/Routes/Themes/ThemesUpdate.php
@@ -0,0 +1,86 @@
+<?php
+
+namespace JsonApi\Routes\Themes;
+
+use JsonApi\Errors\AuthorizationFailedException;
+use JsonApi\Errors\RecordNotFoundException;
+use JsonApi\JsonApiController;
+use JsonApi\Routes\ValidationTrait;
+use JsonApi\Schemas\StockImage as ResourceSchema;
+use Psr\Http\Message\ResponseInterface as Response;
+use Psr\Http\Message\ServerRequestInterface as Request;
+
+class ThemesUpdate extends JsonApiController
+{
+ use ValidationTrait;
+
+ public function __invoke(Request $request, Response $response, $args): Response
+ {
+ $resource = \Theme::find($args['id']);
+ if (!$resource) {
+ throw new RecordNotFoundException();
+ }
+
+ $user = $this->getUser($request);
+ if (!Authority::canUpdateTheme($user)) {
+ throw new AuthorizationFailedException();
+ }
+
+ $json = $this->validate($request);
+
+ if ($resource->origin === 'custom') {
+ $resource = $this->updateResource($resource, $json);
+ }
+
+ if (self::arrayGet($json, 'data.attributes.active') === true) {
+ $activeThemes = \Theme::getActiveThemes();
+ foreach ($activeThemes as $theme) {
+ if ($theme->id !== $resource->id && $theme->type === $resource->type) {
+ $theme->active = false;
+ $theme->store();
+ $resource->active = true;
+ $resource->store();
+ }
+ }
+ }
+
+ return $this->getContentResponse($resource);
+ }
+
+ protected function validateResourceDocument($json, $data)
+ {
+ if (!self::arrayHas($json, 'data')) {
+ return 'Missing `data` member at document´s top level.';
+ }
+
+ if (!self::arrayHas($json, 'data.id')) {
+ return 'Document must have an `id`.';
+ }
+ }
+
+ private function updateResource(\Theme $resource, array $json): \Theme
+ {
+ $attributes = [
+ 'name',
+ 'version',
+ 'studip-min-version',
+ 'studip-max-version',
+ 'author',
+ 'description',
+ 'type',
+ 'values'
+ ];
+ foreach ($attributes as $jsonKey) {
+ $sormKey = strtr($jsonKey, '-', '_');
+ $val = self::arrayGet($json, 'data.attributes.' . $jsonKey, '');
+ if ($val) {
+ $resource->$sormKey = $val;
+ }
+ }
+
+ $resource->store();
+
+ return $resource;
+ }
+
+} \ No newline at end of file
diff --git a/lib/classes/JsonApi/SchemaMap.php b/lib/classes/JsonApi/SchemaMap.php
index c5acad7..e460150 100644
--- a/lib/classes/JsonApi/SchemaMap.php
+++ b/lib/classes/JsonApi/SchemaMap.php
@@ -81,6 +81,7 @@ class SchemaMap
\Modul::class => Schemas\Module::class,
\Modulteil::class => Schemas\ModuleComponent::class,
\StgteilAbschnitt::class => Schemas\ComponentSection::class,
+ \Theme::class => Schemas\Theme::class,
\Courseware\Block::class => Schemas\Courseware\Block::class,
\Courseware\BlockComment::class => Schemas\Courseware\BlockComment::class,
diff --git a/lib/classes/JsonApi/Schemas/Theme.php b/lib/classes/JsonApi/Schemas/Theme.php
new file mode 100644
index 0000000..8b8c09f
--- /dev/null
+++ b/lib/classes/JsonApi/Schemas/Theme.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace JsonApi\Schemas;
+
+use JsonApi\Schemas\SchemaProvider;
+use Neomerx\JsonApi\Contracts\Schema\ContextInterface;
+use Neomerx\JsonApi\Schema\Link;
+use Neomerx\JsonApi\Contracts\Schema\LinkInterface;
+
+class Theme extends SchemaProvider
+{
+ public const TYPE = 'studip-themes';
+
+ /**
+ * @param \Theme $resource
+ */
+ public function getId($resource): ?string
+ {
+ return $resource->getId();
+ }
+
+ /**
+ * @param \Theme $resource
+ */
+ public function getAttributes($resource, ContextInterface $context): iterable
+ {
+ return [
+ 'name' => $resource['name'],
+ 'active' => (bool)$resource['active'],
+ 'origin' => $resource['origin'],
+ 'studip_min_version' => $resource['studip_min_version'],
+ 'studip_max_version' => $resource['studip_max_version'],
+ 'author' => $resource['author'],
+ 'description' => $resource['description'],
+ 'type' => $resource['type'],
+ 'values' => empty($resource['values']) ? null : json_decode($resource['values']),
+
+ 'mkdate' => date('c', $resource['mkdate']),
+ 'chdate' => date('c', $resource['chdate']),
+ ];
+ }
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function getRelationships($resource, ContextInterface $context): iterable
+ {
+ return [];
+ }
+
+ public function hasResourceMeta($resource): bool
+ {
+ return true;
+ }
+
+ public function getResourceMeta($resource): iterable
+ {
+ return [
+ 'colorKeyCategories' => $resource->getColorKeyCategories(),
+ ];
+ }
+} \ No newline at end of file
diff --git a/lib/classes/PageLayout.php b/lib/classes/PageLayout.php
index c4d0f6c..94bc133 100644
--- a/lib/classes/PageLayout.php
+++ b/lib/classes/PageLayout.php
@@ -161,6 +161,11 @@ class PageLayout
URLHelper::setBaseURL($old_base);
}
+
+ self::addHeadElement('link', [
+ 'rel' => 'stylesheet',
+ 'href' => Assets::url('stylesheets/theme.php')
+ ]);
}
/**
@@ -271,6 +276,28 @@ class PageLayout
}
/**
+ * Add CSS variables to the :root selector in the HTML HEAD section.
+ *
+ * @param array $variables Associative array of CSS variable names and values.
+ */
+ public static function addRootStyle(array $variables)
+ {
+ if (empty($variables)) {
+ return;
+ }
+
+ $style = ':root {' . PHP_EOL;
+ foreach ($variables as $name => $value) {
+ $style .= " --$name: $value;" . PHP_EOL;
+ }
+ $style .= '}' . PHP_EOL;
+
+ // Add the <style> tag with the generated CSS to the head
+ self::addHeadElement('style', [], $style);
+ }
+
+
+ /**
* Add a STYLE element to the HTML HEAD section.
*
* @param string $content element contents
diff --git a/lib/classes/forms/Link.php b/lib/classes/forms/Link.php
index 6f26f28..eeb0244 100644
--- a/lib/classes/forms/Link.php
+++ b/lib/classes/forms/Link.php
@@ -159,7 +159,7 @@ class Link extends Part
'<div class="formpart"><a href="%1$s" %2$s>%3$s %4$s</a></div>',
\URLHelper::getLink($this->url, [], true),
arrayToHtmlAttributes($this->attributes),
- $this->icon ? $this->icon->asImg(['class' => 'text-bottom']) : '',
+ $this->icon ? $this->icon->asSvg(['class' => 'text-bottom']) : '',
htmlReady($this->label)
);
}
diff --git a/lib/classes/globalsearch/GlobalSearchCourses.php b/lib/classes/globalsearch/GlobalSearchCourses.php
index 939203c..a02e691 100644
--- a/lib/classes/globalsearch/GlobalSearchCourses.php
+++ b/lib/classes/globalsearch/GlobalSearchCourses.php
@@ -185,21 +185,21 @@ class GlobalSearchCourses extends GlobalSearchModule implements GlobalSearchFull
'decline-circle',
Icon::ROLE_STATUS_YELLOW,
tooltip2(_('Eingeschränkter Zugang'))
- )->asImg();
+ )->asSvg();
break;
case 2:
$admission_state = Icon::create(
'decline-circle',
Icon::ROLE_STATUS_RED,
tooltip2(_('Kein Zugang'))
- )->asImg();
+ )->asSvg();
break;
default:
$admission_state = Icon::create(
'check-circle',
Icon::ROLE_STATUS_GREEN,
tooltip2(_('Uneingeschränkter Zugang'))
- )->asImg();
+ )->asSvg();
}
}
diff --git a/lib/classes/globalsearch/GlobalSearchStudygroups.php b/lib/classes/globalsearch/GlobalSearchStudygroups.php
index a9f1398..74bc11f 100644
--- a/lib/classes/globalsearch/GlobalSearchStudygroups.php
+++ b/lib/classes/globalsearch/GlobalSearchStudygroups.php
@@ -188,21 +188,21 @@ class GlobalSearchStudygroups extends GlobalSearchModule implements GlobalSearch
'decline-circle',
Icon::ROLE_STATUS_YELLOW,
tooltip2(_('Eingeschränkter Zugang'))
- )->asImg();
+ )->asSvg();
break;
case 2:
$admission_state = Icon::create(
'decline-circle',
Icon::ROLE_STATUS_RED,
tooltip2(_('Kein Zugang'))
- )->asImg();
+ )->asSvg();
break;
default:
$admission_state = Icon::create(
'check-circle',
Icon::ROLE_STATUS_GREEN,
tooltip2(_('Uneingeschränkter Zugang'))
- )->asImg();
+ )->asSvg();
}
}
diff --git a/lib/classes/sidebar/CourseManagementSelectWidget.php b/lib/classes/sidebar/CourseManagementSelectWidget.php
index 3973502..8f10eaa 100644
--- a/lib/classes/sidebar/CourseManagementSelectWidget.php
+++ b/lib/classes/sidebar/CourseManagementSelectWidget.php
@@ -19,7 +19,7 @@ class CourseManagementSelectWidget extends SelectWidget
'<a href="%s" title="%s" data-dialog="size=auto">%s</a>',
URLHelper::getURL('dispatch.php/course/management/order_settings', ['cid' => $this->course->id, 'from' => Request::url()]),
_('Sortiereinstellungen'),
- Icon::create('settings')
+ Icon::create('settings')->asSvg(['title' => _('Sortiereinstellungen')])
);
$this->setExtra($extra);
$this->class = 'nested-select';
diff --git a/lib/classes/sidebar/LinkElement.php b/lib/classes/sidebar/LinkElement.php
index f8d768b..0376a47 100644
--- a/lib/classes/sidebar/LinkElement.php
+++ b/lib/classes/sidebar/LinkElement.php
@@ -216,17 +216,48 @@ class LinkElement extends WidgetElement implements ArrayAccess
);
}
+ public function renderWithIcon($icon)
+ {
+ $disabled = $this->isDisabled();
+
+ if ($this->as_button && !$disabled) {
+ return $this->renderButton($icon);
+ }
+
+ if ($this->active) {
+ $this->addClass('active');
+ }
+
+ $attributes = (array) $this->attributes;
+
+ if ($disabled) {
+ $tag = 'span';
+ } else {
+ $tag = 'a';
+ $attributes['href'] = $this->url;
+ }
+
+ return sprintf(
+ '<%1$s %2$s>%3$s%4$s</%1$s>',
+ $tag,
+ arrayToHtmlAttributes($attributes),
+ $icon->asSvg(),
+ htmlReady($this->label)
+ );
+ }
+
/**
* Renders the element as a button/form.
*
* @return string
*/
- protected function renderButton()
+ protected function renderButton(?Icon $icon = null)
{
return sprintf(
- '<button formaction="%s" %s>%s</button>',
+ '<button formaction="%s" %s>%s %s</button>',
htmlReady($this->url),
arrayToHtmlAttributes((array) $this->attributes),
+ $icon?->asSvg() ?? '',
htmlReady($this->label)
);
}
diff --git a/lib/ilias_interface/IliasModule.php b/lib/ilias_interface/IliasModule.php
index 84336ab..f792c5d 100644
--- a/lib/ilias_interface/IliasModule.php
+++ b/lib/ilias_interface/IliasModule.php
@@ -374,6 +374,6 @@ class IliasModule
if (!$this->icon_file) {
$this->icon_file = 'learnmodule';
}
- return Icon::create($this->icon_file, 'inactive', [])->asImg();
+ return Icon::create($this->icon_file, 'inactive', [])->asSvg();
}
}
diff --git a/lib/models/OERReview.php b/lib/models/OERReview.php
index 4ae7fa3..09dc73f 100644
--- a/lib/models/OERReview.php
+++ b/lib/models/OERReview.php
@@ -204,15 +204,15 @@ class OERReview extends BlubberThread
$data['thread_posting']['html'] .= "<div>";
$rating = round($this['metadata']['rating'], 1);
$v = $rating >= 0.75 ? "" : ($rating >= 0.25 ? "-halffull" : "-empty");
- $data['thread_posting']['html'] .= Icon::create("star$v", "info")->asImg(25);
+ $data['thread_posting']['html'] .= Icon::create("star{$v}", 'info')->asSvg(25);
$v = $rating >= 1.75 ? "" : ($rating >= 1.25 ? "-halffull" : "-empty");
- $data['thread_posting']['html'] .= Icon::create("star$v", "info")->asImg(25);
+ $data['thread_posting']['html'] .= Icon::create("star{$v}", 'info')->asSvg(25);
$v = $rating >= 2.75 ? "" : ($rating >= 2.25 ? "-halffull" : "-empty");
- $data['thread_posting']['html'] .= Icon::create("star$v", "info")->asImg(25);
+ $data['thread_posting']['html'] .= Icon::create("star{$v}", 'info')->asSvg(25);
$v = $rating >= 3.75 ? "" : ($rating >= 3.25 ? "-halffull" : "-empty");
- $data['thread_posting']['html'] .= Icon::create("star$v", "info")->asImg(25);
+ $data['thread_posting']['html'] .= Icon::create("star{$v}", 'info')->asSvg(25);
$v = $rating >= 4.75 ? "" : ($rating >= 4.25 ? "-halffull" : "-empty");
- $data['thread_posting']['html'] .= Icon::create("star$v", "info")->asImg(25);
+ $data['thread_posting']['html'] .= Icon::create("star{$v}", 'info')->asSvg(25);
$data['thread_posting']['html'] .= "</div>";
return $data;
diff --git a/lib/models/Theme.php b/lib/models/Theme.php
new file mode 100644
index 0000000..e1d93b5
--- /dev/null
+++ b/lib/models/Theme.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * Theme.php - Stud.IP Theme Model Class
+ *
+ * @author Ron Lucke <lucke@elan-ev.de>
+ * @license GPL2 or any later version
+ *
+ * @property string $name
+ * @property string $origin
+ * @property string $version
+ * @property string $studip_min_version
+ * @property string $studip_max_version
+ * @property string $author
+ * @property string $description
+ * @property \JSONArrayObject $values
+ * @property string $type
+ * @property int $mkdate database column
+ * @property int $chdate database column
+ */
+
+ class Theme extends SimpleORMap
+ {
+ public const COLOR_KEY_CATEGORIES = [
+ 'brand' => [
+ '--color--brand-primary' => '#28497c',
+ '--color--brand-primary-contrast' => '#ffffff',
+ '--color--brand-secondary' => '#28497c',
+ '--color--brand-secondary-contrast' => '#ffffff',
+ ],
+ 'general' => [
+ '--color--global-background' => '#ffffff',
+ ],
+ 'text' => [
+ '--color--font-primary' => '#101010',
+ '--color--font-secondary' => '#3c454e',
+ '--color--font-inactive' => '#676767',
+ '--color--font-inverted' => '#ffffff',
+ ],
+ 'navigation' => [
+ '--color--main-navigation-item' => '#28497c',
+ ],
+ 'sidebar' => [
+ '--color--sidebar-item' => '#28497c',
+ '--color--sidebar-item-hover' => '#d60000',
+ ],
+ 'content' => [
+ '--color--highlight' => '#28497c',
+ '--color--highlight-hover' => '#d60000',
+ '--color--content-link' => '#28497c',
+ '--color--content-link-hover' => '#d60000',
+ ],
+ ];
+
+ protected static function configure($config = [])
+ {
+ $config['db_table'] = 'themes';
+ $config['serialized_fields']['values'] = JSONArrayObject::class;
+
+ parent::configure($config);
+ }
+
+ /**
+ * @return static[]
+ */
+ public static function getActiveThemes(): array
+ {
+ return [
+ 'light' => self::getActiveLightTheme(),
+ 'dark' => self::getActiveDarkTheme(),
+ 'high-contrast' => self::getActiveHighContrastTheme(),
+ ];
+ }
+
+ public static function getActiveLightTheme(): ?static
+ {
+ return self::findOneBySQL('active = 1 AND type = "light"');
+ }
+
+ public static function getActiveDarkTheme(): ?static
+ {
+ return self::findOneBySQL('active = 1 AND type = "dark"');
+ }
+
+ public static function getActiveHighContrastTheme(): ?static
+ {
+ return self::findOneBySQL('active = 1 AND type = "high-contrast"');
+ }
+
+ public static function getcolorKeyCategories(): array
+ {
+ return self::COLOR_KEY_CATEGORIES;
+ }
+
+ } \ No newline at end of file
diff --git a/lib/models/resources/ResourcePropertyDefinition.php b/lib/models/resources/ResourcePropertyDefinition.php
index f878975..1e2333d 100644
--- a/lib/models/resources/ResourcePropertyDefinition.php
+++ b/lib/models/resources/ResourcePropertyDefinition.php
@@ -254,7 +254,7 @@ class ResourcePropertyDefinition extends SimpleORMap
),
$this->__toString(),
$search->render(),
- Icon::create('refresh')->asImg(
+ Icon::create('refresh')->asSvg(
[
'class' => 'delete-assigned-user-icon enter-accessible',
'data-input-name' => $input_name,
diff --git a/lib/navigation/AdminNavigation.php b/lib/navigation/AdminNavigation.php
index 7e115b2..033cd88 100644
--- a/lib/navigation/AdminNavigation.php
+++ b/lib/navigation/AdminNavigation.php
@@ -178,6 +178,13 @@ class AdminNavigation extends Navigation
)
);
$navigation->addSubNavigation(
+ 'layout',
+ new Navigation(
+ _('Darstellung'),
+ 'dispatch.php/admin/layout'
+ )
+ );
+ $navigation->addSubNavigation(
'tags',
new Navigation(
_('Schlagwortverwaltung'),
@@ -205,7 +212,7 @@ class AdminNavigation extends Navigation
$navigation->addSubNavigation('roles', new Navigation(_('Rollen'), 'dispatch.php/admin/role'));
$navigation->addSubNavigation('datafields', new Navigation(_('Datenfelder'), 'dispatch.php/admin/datafields'));
$navigation->addSubNavigation('configuration', new Navigation(_('Konfiguration'), 'dispatch.php/admin/configuration/configuration'));
-
+
$navigation->addSubNavigation('coursewizardsteps',
new Navigation(_('Anlegeassistent'), 'dispatch.php/admin/coursewizardsteps'));
$navigation->addSubNavigation('studygroup', new Navigation(_('Studiengruppen'), 'dispatch.php/course/studygroup/globalmodules'));
diff --git a/lib/navigation/Navigation.php b/lib/navigation/Navigation.php
index 9f26ab6..6f4de69 100644
--- a/lib/navigation/Navigation.php
+++ b/lib/navigation/Navigation.php
@@ -202,7 +202,7 @@ class Navigation implements IteratorAggregate
public function getImageTag()
{
if ($image = $this->getImage()) {
- return $image->asImg($this->getLinkAttributes());
+ return $image->asSvg($this->getLinkAttributes());
} else {
return '';
}
diff --git a/lib/statusgruppe.inc.php b/lib/statusgruppe.inc.php
index a9c382c..993ae08 100644
--- a/lib/statusgruppe.inc.php
+++ b/lib/statusgruppe.inc.php
@@ -161,7 +161,7 @@ function get_role_data_recursive($roles, $user_or_id, $default_entries, $level =
if ($role['user_there'] && $role['visible']) {
$out .= '<tr><td>'
- . Icon::create('arr_1right', Icon::ROLE_INFO)->asImg(Icon::SIZE_INLINE, [])
+ . Icon::create('arr_1right', Icon::ROLE_INFO)->asSvg(Icon::SIZE_INLINE, [])
. '</td><td colspan="2"><b>'. htmlReady($new_pred) .'</b></td></tr>';
$entries = DataFieldEntry::getDataFieldEntries([$user->id, $role_id]);
diff --git a/package-lock.json b/package-lock.json
index 1c56c59..9a8d6dd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -109,6 +109,7 @@
"typescript": "^5.7.2",
"typescript-eslint": "^8.17.0",
"vue": "^3.5.13",
+ "vue-color": "^3.0.0",
"vue-dragscroll": "^4.0.6",
"vue-loader": "^17.4.2",
"vue-resizable": "^2.1.7",
@@ -128,25 +129,21 @@
},
"node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/@altcha/crypto": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/@altcha/crypto/-/crypto-0.0.1.tgz",
- "integrity": "sha512-qZMdnoD3lAyvfSUMNtC2adRi666Pxdcw9zqfMU5qBOaJWqpN9K+eqQGWqeiKDMqL0SF+EytNG4kR/Pr/99GJ6g==",
"dev": true,
"license": "MIT"
},
"node_modules/@ampproject/remapping": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -157,9 +154,8 @@
},
"node_modules/@axe-core/playwright": {
"version": "4.7.3",
- "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.7.3.tgz",
- "integrity": "sha512-v2PRgAyGvop7bamrTpNJtc5b1R7giAPnMzZXrS/VDZBCY5+uwVYtCNgDvBsqp5P1QMZxUMoBN+CERJUTMjFN0A==",
"dev": true,
+ "license": "MPL-2.0",
"dependencies": {
"axe-core": "^4.7.0"
},
@@ -169,8 +165,6 @@
},
"node_modules/@babel/code-frame": {
"version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
- "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -184,8 +178,6 @@
},
"node_modules/@babel/compat-data": {
"version": "7.26.8",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
- "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -194,8 +186,6 @@
},
"node_modules/@babel/core": {
"version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
- "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -225,23 +215,19 @@
},
"node_modules/@babel/core/node_modules/convert-source-map": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@babel/core/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/eslint-parser": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz",
- "integrity": "sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -259,17 +245,14 @@
},
"node_modules/@babel/eslint-parser/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/generator": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
- "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -285,8 +268,6 @@
},
"node_modules/@babel/helper-annotate-as-pure": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
- "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -298,8 +279,6 @@
},
"node_modules/@babel/helper-compilation-targets": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
- "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -315,8 +294,6 @@
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -325,8 +302,6 @@
},
"node_modules/@babel/helper-create-class-features-plugin": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
- "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -347,8 +322,6 @@
},
"node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -357,8 +330,6 @@
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz",
- "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -375,8 +346,6 @@
},
"node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -385,8 +354,6 @@
},
"node_modules/@babel/helper-define-polyfill-provider": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
- "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -402,8 +369,6 @@
},
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
- "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -416,8 +381,6 @@
},
"node_modules/@babel/helper-module-imports": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
- "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -430,8 +393,6 @@
},
"node_modules/@babel/helper-module-transforms": {
"version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
- "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -448,8 +409,6 @@
},
"node_modules/@babel/helper-optimise-call-expression": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
- "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -461,8 +420,6 @@
},
"node_modules/@babel/helper-plugin-utils": {
"version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
- "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -471,8 +428,6 @@
},
"node_modules/@babel/helper-remap-async-to-generator": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
- "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -489,8 +444,6 @@
},
"node_modules/@babel/helper-replace-supers": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
- "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -507,8 +460,6 @@
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
- "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -521,8 +472,6 @@
},
"node_modules/@babel/helper-string-parser": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -530,8 +479,6 @@
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -539,8 +486,6 @@
},
"node_modules/@babel/helper-validator-option": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
- "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -549,8 +494,6 @@
},
"node_modules/@babel/helper-wrap-function": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
- "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -564,8 +507,6 @@
},
"node_modules/@babel/helpers": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
- "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -578,8 +519,6 @@
},
"node_modules/@babel/parser": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
- "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.0"
@@ -593,8 +532,6 @@
},
"node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
- "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -610,8 +547,6 @@
},
"node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
- "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -626,8 +561,6 @@
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
- "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -642,8 +575,6 @@
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
- "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -660,8 +591,6 @@
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
- "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -677,9 +606,8 @@
},
"node_modules/@babel/plugin-proposal-private-property-in-object": {
"version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
},
@@ -689,9 +617,8 @@
},
"node_modules/@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -701,9 +628,8 @@
},
"node_modules/@babel/plugin-syntax-bigint": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -713,9 +639,8 @@
},
"node_modules/@babel/plugin-syntax-class-properties": {
"version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
},
@@ -725,9 +650,8 @@
},
"node_modules/@babel/plugin-syntax-dynamic-import": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -737,8 +661,6 @@
},
"node_modules/@babel/plugin-syntax-import-assertions": {
"version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
- "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -753,8 +675,6 @@
},
"node_modules/@babel/plugin-syntax-import-attributes": {
"version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
- "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -769,9 +689,8 @@
},
"node_modules/@babel/plugin-syntax-import-meta": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -781,9 +700,8 @@
},
"node_modules/@babel/plugin-syntax-json-strings": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -793,9 +711,8 @@
},
"node_modules/@babel/plugin-syntax-jsx": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
- "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -808,9 +725,8 @@
},
"node_modules/@babel/plugin-syntax-logical-assignment-operators": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -820,9 +736,8 @@
},
"node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -832,9 +747,8 @@
},
"node_modules/@babel/plugin-syntax-numeric-separator": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -844,9 +758,8 @@
},
"node_modules/@babel/plugin-syntax-object-rest-spread": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -856,9 +769,8 @@
},
"node_modules/@babel/plugin-syntax-optional-catch-binding": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -868,9 +780,8 @@
},
"node_modules/@babel/plugin-syntax-optional-chaining": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -880,9 +791,8 @@
},
"node_modules/@babel/plugin-syntax-top-level-await": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -895,9 +805,8 @@
},
"node_modules/@babel/plugin-syntax-typescript": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
- "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -910,9 +819,8 @@
},
"node_modules/@babel/plugin-syntax-unicode-sets-regex": {
"version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
- "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.18.6",
"@babel/helper-plugin-utils": "^7.18.6"
@@ -926,8 +834,6 @@
},
"node_modules/@babel/plugin-transform-arrow-functions": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
- "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -942,8 +848,6 @@
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
"version": "7.26.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz",
- "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -960,8 +864,6 @@
},
"node_modules/@babel/plugin-transform-async-to-generator": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
- "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -978,8 +880,6 @@
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
"version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz",
- "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -994,8 +894,6 @@
},
"node_modules/@babel/plugin-transform-block-scoping": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
- "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1010,8 +908,6 @@
},
"node_modules/@babel/plugin-transform-class-properties": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
- "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1027,8 +923,6 @@
},
"node_modules/@babel/plugin-transform-class-static-block": {
"version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
- "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1044,8 +938,6 @@
},
"node_modules/@babel/plugin-transform-classes": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
- "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1065,8 +957,6 @@
},
"node_modules/@babel/plugin-transform-classes/node_modules/globals": {
"version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1075,8 +965,6 @@
},
"node_modules/@babel/plugin-transform-computed-properties": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
- "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1092,8 +980,6 @@
},
"node_modules/@babel/plugin-transform-destructuring": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
- "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1108,8 +994,6 @@
},
"node_modules/@babel/plugin-transform-dotall-regex": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
- "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1125,8 +1009,6 @@
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
- "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1141,8 +1023,6 @@
},
"node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
- "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1158,8 +1038,6 @@
},
"node_modules/@babel/plugin-transform-dynamic-import": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
- "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1174,8 +1052,6 @@
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
"version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
- "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1190,8 +1066,6 @@
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
- "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1206,8 +1080,6 @@
},
"node_modules/@babel/plugin-transform-for-of": {
"version": "7.26.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz",
- "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1223,8 +1095,6 @@
},
"node_modules/@babel/plugin-transform-function-name": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
- "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1241,8 +1111,6 @@
},
"node_modules/@babel/plugin-transform-json-strings": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
- "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1257,8 +1125,6 @@
},
"node_modules/@babel/plugin-transform-literals": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
- "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1273,8 +1139,6 @@
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
- "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1289,8 +1153,6 @@
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
- "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1305,8 +1167,6 @@
},
"node_modules/@babel/plugin-transform-modules-amd": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
- "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1322,8 +1182,6 @@
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
"version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
- "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1339,8 +1197,6 @@
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
- "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1358,8 +1214,6 @@
},
"node_modules/@babel/plugin-transform-modules-umd": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
- "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1375,8 +1229,6 @@
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
- "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1392,8 +1244,6 @@
},
"node_modules/@babel/plugin-transform-new-target": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
- "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1408,8 +1258,6 @@
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
"version": "7.26.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz",
- "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1424,8 +1272,6 @@
},
"node_modules/@babel/plugin-transform-numeric-separator": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
- "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1440,8 +1286,6 @@
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
- "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1458,8 +1302,6 @@
},
"node_modules/@babel/plugin-transform-object-super": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
- "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1475,8 +1317,6 @@
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
- "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1491,8 +1331,6 @@
},
"node_modules/@babel/plugin-transform-optional-chaining": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
- "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1508,8 +1346,6 @@
},
"node_modules/@babel/plugin-transform-parameters": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
- "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1524,8 +1360,6 @@
},
"node_modules/@babel/plugin-transform-private-methods": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
- "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1541,8 +1375,6 @@
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
- "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1559,8 +1391,6 @@
},
"node_modules/@babel/plugin-transform-property-literals": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
- "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1575,8 +1405,6 @@
},
"node_modules/@babel/plugin-transform-regenerator": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
- "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1592,8 +1420,6 @@
},
"node_modules/@babel/plugin-transform-regexp-modifiers": {
"version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
- "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1609,8 +1435,6 @@
},
"node_modules/@babel/plugin-transform-reserved-words": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
- "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1625,8 +1449,6 @@
},
"node_modules/@babel/plugin-transform-runtime": {
"version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz",
- "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1646,17 +1468,14 @@
},
"node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
- "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1671,8 +1490,6 @@
},
"node_modules/@babel/plugin-transform-spread": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
- "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1688,8 +1505,6 @@
},
"node_modules/@babel/plugin-transform-sticky-regex": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
- "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1704,8 +1519,6 @@
},
"node_modules/@babel/plugin-transform-template-literals": {
"version": "7.26.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz",
- "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1720,8 +1533,6 @@
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz",
- "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1736,8 +1547,6 @@
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
- "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1752,8 +1561,6 @@
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
- "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1769,8 +1576,6 @@
},
"node_modules/@babel/plugin-transform-unicode-regex": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
- "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1786,8 +1591,6 @@
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
- "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1803,8 +1606,6 @@
},
"node_modules/@babel/preset-env": {
"version": "7.26.9",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz",
- "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1887,18 +1688,16 @@
},
"node_modules/@babel/preset-env/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/preset-modules": {
"version": "0.1.6-no-external-plugins",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
- "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/types": "^7.4.4",
@@ -1910,8 +1709,6 @@
},
"node_modules/@babel/register": {
"version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz",
- "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1930,8 +1727,6 @@
},
"node_modules/@babel/runtime": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz",
- "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1943,15 +1738,11 @@
},
"node_modules/@babel/runtime/node_modules/regenerator-runtime": {
"version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true,
"license": "MIT"
},
"node_modules/@babel/template": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
- "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1965,8 +1756,6 @@
},
"node_modules/@babel/traverse": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
- "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1984,8 +1773,6 @@
},
"node_modules/@babel/traverse/node_modules/globals": {
"version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1994,8 +1781,6 @@
},
"node_modules/@babel/types": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
- "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
@@ -2007,15 +1792,13 @@
},
"node_modules/@bcoe/v8-coverage": {
"version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@ckeditor/ckeditor5-adapter-ckfinder": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-43.2.0.tgz",
- "integrity": "sha512-RiZXc6l05yfkkSyJRxyDAnqqUxMXHboZxooptBUweUm1ofXltyaGkFa5D4kBMS5prrAEXrdpJ9uMZPvjY2BF7g==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-upload": "43.2.0",
@@ -2024,9 +1807,8 @@
},
"node_modules/@ckeditor/ckeditor5-alignment": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-43.2.0.tgz",
- "integrity": "sha512-Yhh+1FmmcycBtFRX3nqULe/EiF5Y28eLEkmdus16jhfImtMFLzt344+SrcTkd2uQfC4U+yVlxmOo6/lbR1R7Qw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2036,9 +1818,8 @@
},
"node_modules/@ckeditor/ckeditor5-autoformat": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-43.2.0.tgz",
- "integrity": "sha512-8b/POJT08kR9eDeZXIEiU0CKIBanusbnSku+a//63hrW2urzS3F9umKsD8Y1I/xoKGm/ew4yVtncQRaCUEE7lA==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2049,9 +1830,8 @@
},
"node_modules/@ckeditor/ckeditor5-autosave": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-43.2.0.tgz",
- "integrity": "sha512-ZDpWibRaXmwsFNPE0Q3Mc93yarR+zcgiCpEW5oZh68vUdR1aL63D3GqGI3ok4EgFKsCTQWHpB1WejyUJecVcMw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-utils": "43.2.0",
@@ -2061,9 +1841,8 @@
},
"node_modules/@ckeditor/ckeditor5-basic-styles": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-43.2.0.tgz",
- "integrity": "sha512-v1BS3JtD+6fAPx23Sbr+IZ39RAaiIoISursInuGTWU+kJ3RDh7fByKEt4A8kia4ZfSd1b469i/4LOiikN+jfxQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-typing": "43.2.0",
@@ -2073,9 +1852,8 @@
},
"node_modules/@ckeditor/ckeditor5-block-quote": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-43.2.0.tgz",
- "integrity": "sha512-0T5zy3vitecSWaRd7uhxvyHLLVJUutpeJHMqupKPZaOJlgJOqa9hFOFsK2t4y8EVTtLTx5UfFzTudK449kFnBg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-enter": "43.2.0",
@@ -2087,9 +1865,8 @@
},
"node_modules/@ckeditor/ckeditor5-ckbox": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-43.2.0.tgz",
- "integrity": "sha512-HSjYz2fYA2iJhua3wExApBYKz6k6AuSZmm2CG/X7cYFvq44OCIuOOkjqSABcByvVAtzOUerqWhurwBXTp/QrUg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2103,9 +1880,8 @@
},
"node_modules/@ckeditor/ckeditor5-ckfinder": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-43.2.0.tgz",
- "integrity": "sha512-GOMI/FTTGglQBxVIGMxQwVIDD+gCQenegjMlol2eCDsys3td5mtzp0sEYPXCHeJY8u/R28K3ySWvKlrp8YBQ0Q==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2115,9 +1891,8 @@
},
"node_modules/@ckeditor/ckeditor5-clipboard": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-43.2.0.tgz",
- "integrity": "sha512-109dffphyvUEhdGDP7GIj6zEHb493QNVEY6Rbl8o9Q0Ia+AAmDGX3VWFewiFC325tWaeVW72wwXXeaCSLRpt2w==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2129,9 +1904,8 @@
},
"node_modules/@ckeditor/ckeditor5-cloud-services": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-43.2.0.tgz",
- "integrity": "sha512-bcnklICj88ZNXTnjHdXt74zsxk9RBK1KXIZXKMT2K8NLZQZkppnzPICjDfFJ31BvcvYmFE3mKuVNeLnsofyezQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-utils": "43.2.0",
@@ -2140,9 +1914,8 @@
},
"node_modules/@ckeditor/ckeditor5-code-block": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-43.2.0.tgz",
- "integrity": "sha512-tNgqpcgigruSdbaJnl08BpOYkKs9mFA284hsTyptmxOloq/igEBvSgBfJDchUGVT0Lm78hAlcirdVKrwku5Eew==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2155,9 +1928,8 @@
},
"node_modules/@ckeditor/ckeditor5-core": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-43.2.0.tgz",
- "integrity": "sha512-LLyDuNQdTC+P1E91SMAPGNTpDOLwsQK4OayO/qUS1sDxqWfv/YFxEpN/vBXEHbg5Q3LS2wW1HR6a4o/w7Wwt8w==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-engine": "43.2.0",
"@ckeditor/ckeditor5-utils": "43.2.0",
@@ -2167,9 +1939,8 @@
},
"node_modules/@ckeditor/ckeditor5-easy-image": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-43.2.0.tgz",
- "integrity": "sha512-mRIU5GRVTwv2uMHdoP4p/Jv6lgusmOBUp7p2PkmEEyo1MBG7t+b76rMWePFfBZKmXFmdO8lATJg/SGUNK7JIyg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-upload": "43.2.0",
@@ -2179,9 +1950,8 @@
},
"node_modules/@ckeditor/ckeditor5-editor-balloon": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-43.2.0.tgz",
- "integrity": "sha512-KtSX8mZTHphUMn7Uf9S3lRDBJI+m5POVvvCRFYDo+AsPO6FN72hZslpseOlAVTcJ0FIYM4aiqAFg1jojeoDyqQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2193,9 +1963,8 @@
},
"node_modules/@ckeditor/ckeditor5-editor-classic": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-43.2.0.tgz",
- "integrity": "sha512-D07TxNnJb0qSKe3QicNsaZh28tIXEjmrib4Gnbc2McWi7nDYoxoF1dyUygxFR4OHQ6DXfYU4VUW9EKlJ8ZfSAg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2207,9 +1976,8 @@
},
"node_modules/@ckeditor/ckeditor5-editor-decoupled": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-43.2.0.tgz",
- "integrity": "sha512-2vgfOd7sqptBRu6de0qq+hwQd7BuUu1rgfbuWB/msa2zMxwKLNoWwYNFz0N9Mm7b49jaMkQYjaOYFh1zE7BEMQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2221,9 +1989,8 @@
},
"node_modules/@ckeditor/ckeditor5-editor-inline": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-43.2.0.tgz",
- "integrity": "sha512-MCb5ljlr4Jp9pYtKAUhLbtOcxHuiMOOPWCrwYmpDogzBss//G2+LILqWqal3b6YUm2WSm37NorGQ+KdPmOh5ow==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2235,9 +2002,8 @@
},
"node_modules/@ckeditor/ckeditor5-editor-multi-root": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-43.2.0.tgz",
- "integrity": "sha512-nQcYWsetSG2h5NZOWuHf90VTxE82KBqetO3S0emMmlUstGmVk69KMlQDxU6UZhbB5NptVsgMSG2Y9Cd8XnrO0A==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2249,9 +2015,8 @@
},
"node_modules/@ckeditor/ckeditor5-engine": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-43.2.0.tgz",
- "integrity": "sha512-fTrhFe+qUFZ+mvRd6KrvDzXAdMoyE44P4640iU7aOoqnlf2Z7D9wQN7ak+ysRKuccIt9t6Tidl8pmT3BRoBGfA==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-utils": "43.2.0",
"lodash-es": "4.17.21"
@@ -2259,9 +2024,8 @@
},
"node_modules/@ckeditor/ckeditor5-enter": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-43.2.0.tgz",
- "integrity": "sha512-uFnexEaYyOYgekrpPgbA6tCiEPEXOtr1AoATVlIzy2Kb0SfJkfUyciV8559+tK9w16zI4tgMYJrwt0ktg55EYA==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2270,9 +2034,8 @@
},
"node_modules/@ckeditor/ckeditor5-essentials": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-43.2.0.tgz",
- "integrity": "sha512-Nb0utwH+j4Kqn8OBzcHYBexJAnlJUMC3jrLnVW2mqbd71HTRFozJ6/MDdX1gIUoQswhl6pVZRLmly26HEubUPQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2286,9 +2049,8 @@
},
"node_modules/@ckeditor/ckeditor5-find-and-replace": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-43.2.0.tgz",
- "integrity": "sha512-MKN4rEeq/RWi+++dLBIA/b9tacEd7pnFM8mewLDsehT1RPvWPeGy2e5dN6ugi5zn3It7UcIdkCQE7GLmsLGGBA==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2299,9 +2061,8 @@
},
"node_modules/@ckeditor/ckeditor5-font": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-font/-/ckeditor5-font-43.2.0.tgz",
- "integrity": "sha512-3BUhy3AtB+SGiLA3ZsX3+JAhD7KmexEwfGKgrX4kDs9iMOg7xVXXHbdeJGEGV8oJc4hNgp34lt3lpFtCApBNgw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2312,9 +2073,8 @@
},
"node_modules/@ckeditor/ckeditor5-heading": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-43.2.0.tgz",
- "integrity": "sha512-nGvzMYN+2SRHxe99YhFwRpqw44W2lHbFNuWp0YiV3iYSgpQPwATFFpLXvyOMXOKY4dcob2KiDcogfWVoFxmMdQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2326,9 +2086,8 @@
},
"node_modules/@ckeditor/ckeditor5-highlight": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-43.2.0.tgz",
- "integrity": "sha512-9zhf80TyheMxUXXScjSstVUAZMjeDs/SCbhWYwFR/ZZN3Vyhp7kD+WhyyezueHQLyPNiLZNzer7LQ/MB3b+8Lg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2337,9 +2096,8 @@
},
"node_modules/@ckeditor/ckeditor5-horizontal-line": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-43.2.0.tgz",
- "integrity": "sha512-d92LsTiOSsHEHeQbWJz5xqj+yYRbo1xiz2bix0cN1BoEsm6iEFJKUPewvh48cISdkw5RPKfDrfzbiBCDZsMlEw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2349,9 +2107,8 @@
},
"node_modules/@ckeditor/ckeditor5-html-embed": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-43.2.0.tgz",
- "integrity": "sha512-F55r0UQy53cKlWWGRcYTjrYpQd86jkHEqk901uC0FJdBwpLqV6ZDxCb+w5dMQ6cUh5oYKuILeu0ZZ0KF1C+HQA==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2362,9 +2119,8 @@
},
"node_modules/@ckeditor/ckeditor5-html-support": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-43.2.0.tgz",
- "integrity": "sha512-VOjT73VbtiBLy/Qsn9aWib9LhkfXZSbfAHSttIsW3Y8v2am827uf4dL2Y2pop3pcXJdoB+LVGiTFdk1mBDvAFg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2377,9 +2133,8 @@
},
"node_modules/@ckeditor/ckeditor5-image": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-43.2.0.tgz",
- "integrity": "sha512-UZVd9sZ9nuG3kZUUUgXzqTkT7YSZs4wvu98NuSgBC3T6l0UlJjdf//GQa1estxNDDc+yCjRk02u+sbHW+eUY0A==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2396,9 +2151,8 @@
},
"node_modules/@ckeditor/ckeditor5-indent": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-43.2.0.tgz",
- "integrity": "sha512-hzqAXOlxblaWNQ9eAGP/30kMLk+mMPES2/02B6QmI/CSYgwhXK1FVSTfZN0u6Cw94lWQ+EJr7riP2LCc85Rvfw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2409,9 +2163,8 @@
},
"node_modules/@ckeditor/ckeditor5-language": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-language/-/ckeditor5-language-43.2.0.tgz",
- "integrity": "sha512-NSL9E0ROyffTHGKyIpqD27NclOXDhAFO8L9Z9kghqESNsCdOZJKKme+EK376r5gWHsiBNnKZ/5yQOUrGwATtuw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2421,9 +2174,8 @@
},
"node_modules/@ckeditor/ckeditor5-link": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-43.2.0.tgz",
- "integrity": "sha512-PyU3bPyCzvNEp/7Hwx4oxuPSRN7ptaDuBe+Jhlz70PWegtANOUPvMIYlcZBB2E20Ruo0ukvrRRR0teqqFKHLug==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2438,9 +2190,8 @@
},
"node_modules/@ckeditor/ckeditor5-list": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-43.2.0.tgz",
- "integrity": "sha512-HljK5Ew3fgPX/FYiK0ieuGIrjCqiNeVG825UaAeuRHkNm1QgCBF0xQ1fsaiJw7/lTXfPA5KhzD3ezEwI1qWytQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2454,9 +2205,8 @@
},
"node_modules/@ckeditor/ckeditor5-markdown-gfm": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-43.2.0.tgz",
- "integrity": "sha512-TJklEGxL7tTm8OfLFAEWDsKRD4TxgSbai45CvuXNuoSnwcUWsXYhsBT8kUD2zAv8zTlh7gy3tFnuhKnLu157uQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2469,9 +2219,8 @@
},
"node_modules/@ckeditor/ckeditor5-media-embed": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-43.2.0.tgz",
- "integrity": "sha512-N+MJUAC7+KPi3CaplVGLmA26W2GEFEukKxKDpjDbpBBgDgwyrJlpfFIOWIvrk+6J1QOwS4yMU+H+1aGypIgd+Q==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2486,9 +2235,8 @@
},
"node_modules/@ckeditor/ckeditor5-mention": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-43.2.0.tgz",
- "integrity": "sha512-psEgMErFg6cKdEh2cM02tB/s7QJz+g5LlXCQ0k6OaNa/V7zO/qcT/pChrZ/13Mu2dgRKZqBUeeAG4aUXHN7QFQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-typing": "43.2.0",
@@ -2500,9 +2248,8 @@
},
"node_modules/@ckeditor/ckeditor5-minimap": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-43.2.0.tgz",
- "integrity": "sha512-rKECbba7QZtb8Kg5znYSez3y63RfX+19TvMvRwmiNw1aiNluyG04ykC0BBvejavO8Kz/EuNrliNMM3h44Og6jg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2513,9 +2260,8 @@
},
"node_modules/@ckeditor/ckeditor5-page-break": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-43.2.0.tgz",
- "integrity": "sha512-ukHpucDP0hskHEV1ql9G55dFiNCamI87vuHdLvEy0x/Th89C2ITswxfQAxMbZb1W0Vg93eMKyYf8pbg+YvcjwQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2525,9 +2271,8 @@
},
"node_modules/@ckeditor/ckeditor5-paragraph": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-43.2.0.tgz",
- "integrity": "sha512-Gi7Plu75rlwiV55K1V06iVdPAGOn1FKX2JPgK+eTfYe2uZeJlJWkjvkl8x32IxJxT9Z8V1yECcg/I8A0J4IdlA==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2536,9 +2281,8 @@
},
"node_modules/@ckeditor/ckeditor5-paste-from-office": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-43.2.0.tgz",
- "integrity": "sha512-+jPVd79p1oyuIcW5Pq4LsxAN5ZxjtJaasx2flGi9mLMFaLxnO/JteFs0rH7BAavURrxdhvXuIosYMGfPWleGLw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2548,9 +2292,8 @@
},
"node_modules/@ckeditor/ckeditor5-remove-format": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-43.2.0.tgz",
- "integrity": "sha512-BrtlTWrvg4hcbPvTck9bqIVtDfbanPYGvh+qf3NCX4USxqzAs+zz3tT105JUAY0FF0Qngcvjz6gTfTTwXom//g==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2560,9 +2303,8 @@
},
"node_modules/@ckeditor/ckeditor5-restricted-editing": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-43.2.0.tgz",
- "integrity": "sha512-RKYLNbbKks0O6axiE0acYOq5IAdtRGhCC557szUSzFZsGh31LHRPxa7ZpwjKuuefUp4uI11HzFyXXBQfykdnDQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2573,9 +2315,8 @@
},
"node_modules/@ckeditor/ckeditor5-select-all": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-43.2.0.tgz",
- "integrity": "sha512-wHFKg/7UsxmR6YBKZnF+4kS8m0cDe+r4IotVcnJcxDRpIuHDNlROKohdMrKdBl6I++6nwvkD3da0Dsxd9gJ8Sw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2584,9 +2325,8 @@
},
"node_modules/@ckeditor/ckeditor5-show-blocks": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-43.2.0.tgz",
- "integrity": "sha512-VFXRvDRZvTX+t+lUxdK6sGPy/Lqu5h2OIYnTHykknwwySunOH1gCUjo1iVs0mrCKLwhmcp8fOeQjjdL811xcXQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2595,9 +2335,8 @@
},
"node_modules/@ckeditor/ckeditor5-source-editing": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-43.2.0.tgz",
- "integrity": "sha512-b8/PGBybNp//2thS2Objsl7Q+YZ7JHhVZhqH2T27cEIkFlMOag5lfA0Rpz8ClrNxY4MDu/0ArHyjFG8TkjPkvA==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-theme-lark": "43.2.0",
@@ -2608,9 +2347,8 @@
},
"node_modules/@ckeditor/ckeditor5-special-characters": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-43.2.0.tgz",
- "integrity": "sha512-VHe2MHFUwxFMSo/RKDqLF18dobaIMQoGnMWqZtWi5maQ1xs/l1Mo0Ohh+tdFYCQq97lNuZ4Z3z/FravZAlqV7A==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-typing": "43.2.0",
@@ -2621,9 +2359,8 @@
},
"node_modules/@ckeditor/ckeditor5-style": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-style/-/ckeditor5-style-43.2.0.tgz",
- "integrity": "sha512-24Gk9iWOtiN1YaJh24QNSjafFMeidmW6NbtaldVibLKwJRFD2oNXvqccSGztj/+cv0FLK8rK1KHFYcm4WSCT3w==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-typing": "43.2.0",
@@ -2635,9 +2372,8 @@
},
"node_modules/@ckeditor/ckeditor5-table": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-43.2.0.tgz",
- "integrity": "sha512-sIA1Ik8shdrsy2sgDXLX7uZgPuNTEgZ0/H9/aKDX7cg8Z+vQozhElHb1H17oC5a1qoxwQF+qt8FoLgtguZ5gDQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "43.2.0",
"@ckeditor/ckeditor5-core": "43.2.0",
@@ -2651,18 +2387,16 @@
},
"node_modules/@ckeditor/ckeditor5-theme-lark": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-43.2.0.tgz",
- "integrity": "sha512-K6KH0Wakzuf43XFmLN49qu1svwpb2FDP/wM+Vo+UolI3krRRxr6uTXQ9D3O8S4ckMJhwcrVRerBHtlZst0dXew==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-ui": "43.2.0"
}
},
"node_modules/@ckeditor/ckeditor5-typing": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-43.2.0.tgz",
- "integrity": "sha512-IfuEYE9PonfxNe6RENtMIRqeN/ytX64781EVVhVl5FOebNFGKHscw+j0cCrqDGPGq7yVVvehEdCrl2xAXy+gyw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2672,9 +2406,8 @@
},
"node_modules/@ckeditor/ckeditor5-ui": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-43.2.0.tgz",
- "integrity": "sha512-sGWW4tqGvs7VvZJHZG2qLYBV3+fU4yLiZcLLG6zDU+RrK6rS2cndspjyBIDj94gdFA2tEXqMkteZeEekPrtLIw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2687,9 +2420,8 @@
},
"node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -2699,9 +2431,8 @@
},
"node_modules/@ckeditor/ckeditor5-undo": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-43.2.0.tgz",
- "integrity": "sha512-BXApTSSicRIeKReYt3mla9IQfEpgSOFJjtC0jvHbfsVcC9xvo6B0Fxu9DhTzkXFasZtZvCdOqPCSF3oulqJGxQ==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2710,9 +2441,8 @@
},
"node_modules/@ckeditor/ckeditor5-upload": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-43.2.0.tgz",
- "integrity": "sha512-KPyXPCFTKQxjuwmyk3vgUoXTuBJctH4U67LdarsplwszOOS0Ho89bExY3VOQ5aGB7y7mk4oOS9tSKWyt64ASIg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-utils": "43.2.0"
@@ -2720,17 +2450,14 @@
},
"node_modules/@ckeditor/ckeditor5-utils": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-43.2.0.tgz",
- "integrity": "sha512-0Q2Yj22+a2lcj+YHqe7JOmJANVjmDqAGOwjfYRUoZGXefb6yuEzEpzDin4rU/Msrnll1KrH+mD73HSxUgmgi1Q==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-vue": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-vue/-/ckeditor5-vue-5.1.0.tgz",
- "integrity": "sha512-KEx4Tj2Irr4ZbLG8LnaKpb0Dgd8qmLmKFWeiKkQwM3RAAeYRYOCcBVB2Y168I9KA8wRosPxgOO9jbQ92yopYHA==",
"dev": true,
"hasInstallScript": true,
"license": "GPL-2.0-or-later",
@@ -2741,18 +2468,16 @@
},
"node_modules/@ckeditor/ckeditor5-watchdog": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-43.2.0.tgz",
- "integrity": "sha512-hQ6+8uGJekGkPiAW6+DzhvJNXzo7SKaS+rRcI7ERm9O6CSP/vFyc77uw5Y1SDr1PlzF/bdWksEv5zqxiebQW0Q==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-widget": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-43.2.0.tgz",
- "integrity": "sha512-qWyh4ZRvEmz+prHSx+oIaEIqS4jO1UcCFgmC/cuVp3jSXovBgbkSK1G8FqNdf+JHjc2hrZnfKm3Tb4N8OmEbLg==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-engine": "43.2.0",
@@ -2765,9 +2490,8 @@
},
"node_modules/@ckeditor/ckeditor5-word-count": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-43.2.0.tgz",
- "integrity": "sha512-gp9hHmOGStvA6wpSY4h0LwqTGYSdMRZ8/8XnUFHQ4QiKirejzmHA9K2lWL4grqCTZh5sfO7ZzaX1mx/QctpFxw==",
"dev": true,
+ "license": "GPL-2.0-or-later",
"dependencies": {
"@ckeditor/ckeditor5-core": "43.2.0",
"@ckeditor/ckeditor5-ui": "43.2.0",
@@ -2778,8 +2502,6 @@
},
"node_modules/@csstools/css-parser-algorithms": {
"version": "2.7.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz",
- "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==",
"dev": true,
"funding": [
{
@@ -2801,8 +2523,6 @@
},
"node_modules/@csstools/css-tokenizer": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz",
- "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==",
"dev": true,
"funding": [
{
@@ -2821,8 +2541,6 @@
},
"node_modules/@csstools/media-query-list-parser": {
"version": "2.1.13",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz",
- "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==",
"dev": true,
"funding": [
{
@@ -2845,18 +2563,16 @@
},
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^3.3.0"
},
@@ -2869,9 +2585,8 @@
},
"node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
"version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -2881,8 +2596,6 @@
},
"node_modules/@eslint-community/regexpp": {
"version": "4.11.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
- "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2891,8 +2604,6 @@
},
"node_modules/@eslint/eslintrc": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2915,15 +2626,11 @@
},
"node_modules/@eslint/eslintrc/node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"license": "Python-2.0"
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
"version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2938,8 +2645,6 @@
},
"node_modules/@eslint/eslintrc/node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2951,8 +2656,6 @@
},
"node_modules/@eslint/eslintrc/node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -2964,8 +2667,6 @@
},
"node_modules/@eslint/js": {
"version": "9.16.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz",
- "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2974,42 +2675,37 @@
},
"node_modules/@fullcalendar/core": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz",
- "integrity": "sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@fullcalendar/daygrid": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz",
- "integrity": "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"@fullcalendar/core": "~4.4.0"
}
},
"node_modules/@fullcalendar/interaction": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-4.4.2.tgz",
- "integrity": "sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"@fullcalendar/core": "~4.4.0"
}
},
"node_modules/@fullcalendar/resource-common": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/resource-common/-/resource-common-4.4.2.tgz",
- "integrity": "sha512-aypS0cu1pao5iRzhDkSGCSpizqDIFELcMyxZTzkzv9dozccU9wCgDK3rM6qFnSldn7CdOdGRgrUDAAvb3OmzFQ==",
"dev": true,
+ "license": "SEE LICENSE IN LICENSE.md",
"peerDependencies": {
"@fullcalendar/core": "~4.4.0"
}
},
"node_modules/@fullcalendar/resource-daygrid": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/resource-daygrid/-/resource-daygrid-4.4.2.tgz",
- "integrity": "sha512-5FAVe+FqSuvbhSd3c3QFMqGySgI3pupiU3Frlr80xtwN193A3lZdzDf9SCKU3py0wY5IImv+whS4/pOIPRuZTw==",
"dev": true,
+ "license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@fullcalendar/daygrid": "~4.4.0",
"@fullcalendar/resource-common": "~4.4.0"
@@ -3020,9 +2716,8 @@
},
"node_modules/@fullcalendar/resource-timegrid": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/resource-timegrid/-/resource-timegrid-4.4.2.tgz",
- "integrity": "sha512-QI6gn8I4uYi7lIgA68k/EDLNTSiSBD3+HZUziCP7ivPx/AwrL38PY2OZVep/uDjYWG/In44Laf6SSWRdWTkOQA==",
"dev": true,
+ "license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@fullcalendar/resource-common": "~4.4.0",
"@fullcalendar/resource-daygrid": "~4.4.0",
@@ -3034,9 +2729,8 @@
},
"node_modules/@fullcalendar/resource-timeline": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/resource-timeline/-/resource-timeline-4.4.2.tgz",
- "integrity": "sha512-gCXCqfYwUJmgpSLGO+rM29VRrYiJ76dBqpZuzIDSleZoC4h+MOf+TuaTmJI3OXqjfDGQThfGoMGu8FC1rEJ2ag==",
"dev": true,
+ "license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@fullcalendar/resource-common": "~4.4.0",
"@fullcalendar/timeline": "~4.4.0"
@@ -3047,9 +2741,8 @@
},
"node_modules/@fullcalendar/timegrid": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz",
- "integrity": "sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@fullcalendar/daygrid": "~4.4.0"
},
@@ -3059,18 +2752,14 @@
},
"node_modules/@fullcalendar/timeline": {
"version": "4.4.3",
- "resolved": "https://registry.npmjs.org/@fullcalendar/timeline/-/timeline-4.4.3.tgz",
- "integrity": "sha512-9Bt/YbslxI7/1MAF1sMCGgaxq+wwohWtcj7tdD0q0TUFoTx083XVZ+zSLiVkv5p6e9ksI1hsdIV681iw7NfDWQ==",
"dev": true,
+ "license": "SEE LICENSE IN LICENSE.md",
"peerDependencies": {
"@fullcalendar/core": "~4.4.0"
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
- "deprecated": "Use @eslint/config-array instead",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -3084,8 +2773,6 @@
},
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -3098,16 +2785,11 @@
},
"node_modules/@humanwhocodes/object-schema": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
"dev": true,
"license": "BSD-3-Clause"
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -3124,8 +2806,6 @@
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3137,8 +2817,6 @@
},
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3150,15 +2828,11 @@
},
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true,
"license": "MIT"
},
"node_modules/@isaacs/cliui/node_modules/string-width": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3175,8 +2849,6 @@
},
"node_modules/@isaacs/cliui/node_modules/strip-ansi": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3191,8 +2863,6 @@
},
"node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3209,9 +2879,8 @@
},
"node_modules/@isaul32/ckeditor5-math": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/@isaul32/ckeditor5-math/-/ckeditor5-math-43.2.0.tgz",
- "integrity": "sha512-Moa5Gnvy7SOvEk8aD4ZczBfFdp/hJL4SBym8AyOyoyurmGyiuvBZQLiGEzipKGjn+Un6MTa23ijb/6x3/GsBjw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"ckeditor5": "43.2.0"
},
@@ -3222,9 +2891,8 @@
},
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"camelcase": "^5.3.1",
"find-up": "^4.1.0",
@@ -3238,27 +2906,24 @@
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/@jest/console": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
- "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -3273,9 +2938,8 @@
},
"node_modules/@jest/core": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
- "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
"@jest/reporters": "^29.7.0",
@@ -3320,9 +2984,8 @@
},
"node_modules/@jest/environment": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
- "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/fake-timers": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -3335,9 +2998,8 @@
},
"node_modules/@jest/expect": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"expect": "^29.7.0",
"jest-snapshot": "^29.7.0"
@@ -3348,9 +3010,8 @@
},
"node_modules/@jest/expect-utils": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
- "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jest-get-type": "^29.6.3"
},
@@ -3360,9 +3021,8 @@
},
"node_modules/@jest/fake-timers": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
- "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@sinonjs/fake-timers": "^10.0.2",
@@ -3377,9 +3037,8 @@
},
"node_modules/@jest/globals": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
- "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/expect": "^29.7.0",
@@ -3392,9 +3051,8 @@
},
"node_modules/@jest/reporters": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
- "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
"@jest/console": "^29.7.0",
@@ -3435,9 +3093,8 @@
},
"node_modules/@jest/reporters/node_modules/jest-worker": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"jest-util": "^29.7.0",
@@ -3450,9 +3107,8 @@
},
"node_modules/@jest/schemas": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sinclair/typebox": "^0.27.8"
},
@@ -3462,9 +3118,8 @@
},
"node_modules/@jest/source-map": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
- "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.18",
"callsites": "^3.0.0",
@@ -3476,9 +3131,8 @@
},
"node_modules/@jest/test-result": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
- "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -3491,9 +3145,8 @@
},
"node_modules/@jest/test-sequencer": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
- "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/test-result": "^29.7.0",
"graceful-fs": "^4.2.9",
@@ -3506,9 +3159,8 @@
},
"node_modules/@jest/transform": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
- "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
"@jest/types": "^29.6.3",
@@ -3532,15 +3184,13 @@
},
"node_modules/@jest/transform/node_modules/convert-source-map": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@jest/types": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -3555,8 +3205,6 @@
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3570,17 +3218,14 @@
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/set-array": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3589,9 +3234,8 @@
},
"node_modules/@jridgewell/source-map": {
"version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
- "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -3599,14 +3243,10 @@
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3616,14 +3256,11 @@
},
"node_modules/@mixmark-io/domino": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz",
- "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/@napi-rs/canvas": {
"version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.70.tgz",
- "integrity": "sha512-nD6NGa4JbNYSZYsTnLGrqe9Kn/lCkA4ybXt8sx5ojDqZjr2i0TWAHxx/vhgfjX+i3hCdKWufxYwi7CfXqtITSA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -3643,27 +3280,8 @@
"@napi-rs/canvas-win32-x64-msvc": "0.1.70"
}
},
- "node_modules/@napi-rs/canvas-android-arm64": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.70.tgz",
- "integrity": "sha512-I/YOuQ0wbkVYxVaYtCgN42WKTYxNqFA0gTcTrHIGG1jfpDSyZWII/uHcjOo4nzd19io6Y4+/BqP8E5hJgf9OmQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@napi-rs/canvas-darwin-arm64": {
"version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.70.tgz",
- "integrity": "sha512-4pPGyXetHIHkw2TOJHujt3mkCP8LdDu8+CT15ld9Id39c752RcI0amDHSuMLMQfAjvusA9B5kKxazwjMGjEJpQ==",
"cpu": [
"arm64"
],
@@ -3677,156 +3295,18 @@
"node": ">= 10"
}
},
- "node_modules/@napi-rs/canvas-darwin-x64": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.70.tgz",
- "integrity": "sha512-+2N6Os9LbkmDMHL+raknrUcLQhsXzc5CSXRbXws9C3pv/mjHRVszQ9dhFUUe9FjfPhCJznO6USVdwOtu7pOrzQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.70.tgz",
- "integrity": "sha512-QjscX9OaKq/990sVhSMj581xuqLgiaPVMjjYvWaCmAJRkNQ004QfoSMEm3FoTqM4DRoquP8jvuEXScVJsc1rqQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@napi-rs/canvas-linux-arm64-gnu": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.70.tgz",
- "integrity": "sha512-LNakMOwwqwiHIwMpnMAbFRczQMQ7TkkMyATqFCOtUJNlE6LPP/QiUj/mlFrNbUn/hctqShJ60gWEb52ZTALbVw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@napi-rs/canvas-linux-arm64-musl": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.70.tgz",
- "integrity": "sha512-wBTOllEYNfJCHOdZj9v8gLzZ4oY3oyPX8MSRvaxPm/s7RfEXxCyZ8OhJ5xAyicsDdbE5YBZqdmaaeP5+xKxvtg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.70.tgz",
- "integrity": "sha512-GVUUPC8TuuFqHip0rxHkUqArQnlzmlXmTEBuXAWdgCv85zTCFH8nOHk/YCF5yo0Z2eOm8nOi90aWs0leJ4OE5Q==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@napi-rs/canvas-linux-x64-gnu": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.70.tgz",
- "integrity": "sha512-/kvUa2lZRwGNyfznSn5t1ShWJnr/m5acSlhTV3eXECafObjl0VBuA1HJw0QrilLpb4Fe0VLywkpD1NsMoVDROQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@napi-rs/canvas-linux-x64-musl": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.70.tgz",
- "integrity": "sha512-aqlv8MLpycoMKRmds7JWCfVwNf1fiZxaU7JwJs9/ExjTD8lX2KjsO7CTeAj5Cl4aEuzxUWbJPUUE2Qu9cZ1vfg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@napi-rs/canvas-win32-x64-msvc": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.70.tgz",
- "integrity": "sha512-Q9QU3WIpwBTVHk4cPfBjGHGU4U0llQYRXgJtFtYqqGNEOKVN4OT6PQ+ve63xwIPODMpZ0HHyj/KLGc9CWc3EtQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
"version": "5.1.1-v1",
- "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
- "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-scope": "5.1.1"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -3837,18 +3317,16 @@
},
"node_modules/@nodelib/fs.stat": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/@nodelib/fs.walk": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -3859,8 +3337,6 @@
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -3870,9 +3346,8 @@
},
"node_modules/@playwright/test": {
"version": "1.38.1",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.38.1.tgz",
- "integrity": "sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"playwright": "1.38.1"
},
@@ -3885,39 +3360,20 @@
},
"node_modules/@polka/url": {
"version": "1.0.0-next.29",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
- "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
"dev": true,
"license": "MIT"
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"dev": true,
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.18.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
- "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
"node_modules/@rsbuild/plugin-check-syntax": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@rsbuild/plugin-check-syntax/-/plugin-check-syntax-1.3.0.tgz",
- "integrity": "sha512-lHrd6hToPFVOGWr0U/Ox7pudHWdhPSFsr2riWpjNRlUuwiXdU2SYMROaVUCrLJvYFzJyEMsFOi1w59rBQCG2HQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3938,8 +3394,6 @@
},
"node_modules/@rsbuild/plugin-check-syntax/node_modules/acorn": {
"version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3951,8 +3405,6 @@
},
"node_modules/@rsbuild/plugin-check-syntax/node_modules/entities": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz",
- "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -3964,8 +3416,6 @@
},
"node_modules/@rsbuild/plugin-check-syntax/node_modules/htmlparser2": {
"version": "10.0.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz",
- "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==",
"dev": true,
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
@@ -3984,8 +3434,6 @@
},
"node_modules/@rsbuild/plugin-check-syntax/node_modules/source-map": {
"version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -3994,15 +3442,11 @@
},
"node_modules/@rsdoctor/client": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@rsdoctor/client/-/client-1.1.2.tgz",
- "integrity": "sha512-AHYShNzRhpThBiYVjecipEhvyJzkdjfICp7y4E149w2wucELTz2louQomUHEI+V7SMJmMCPlno3o/HDl23NRKA==",
"dev": true,
"license": "MIT"
},
"node_modules/@rsdoctor/core": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@rsdoctor/core/-/core-1.1.2.tgz",
- "integrity": "sha512-/SylDcroagJXCM5/0gEvrrDIJWeXXMcJ8fx/Ckb6L5DuriyeHoOZmoQTlJaGSQJZdWH74/wAzGJ8aLHnF23P7w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4025,8 +3469,6 @@
},
"node_modules/@rsdoctor/core/node_modules/axios": {
"version": "1.9.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
- "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4037,8 +3479,6 @@
},
"node_modules/@rsdoctor/core/node_modules/enhanced-resolve": {
"version": "5.12.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
- "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4051,8 +3491,6 @@
},
"node_modules/@rsdoctor/core/node_modules/fs-extra": {
"version": "11.3.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
- "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4066,8 +3504,6 @@
},
"node_modules/@rsdoctor/core/node_modules/jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4079,8 +3515,6 @@
},
"node_modules/@rsdoctor/core/node_modules/source-map": {
"version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -4089,8 +3523,6 @@
},
"node_modules/@rsdoctor/core/node_modules/universalify": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4099,8 +3531,6 @@
},
"node_modules/@rsdoctor/graph": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@rsdoctor/graph/-/graph-1.1.2.tgz",
- "integrity": "sha512-U6tOsDJjzy1Nb8Xb04zepNcwR+GfIXB/N76yWnuBx/Q07c1RuUJS/P0/YkEo7CfgLq4e9HujgDlzewhANqlRYw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4113,8 +3543,6 @@
},
"node_modules/@rsdoctor/graph/node_modules/source-map": {
"version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -4123,8 +3551,6 @@
},
"node_modules/@rsdoctor/sdk": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@rsdoctor/sdk/-/sdk-1.1.2.tgz",
- "integrity": "sha512-aplXFM/PXbFDYbFtZF+RTHGetDbQRnoS4BQfFE37BdsTBoCOP2AaG8Y6Jg5mrCn7D9JLmqugB+zJb/OxmXTHTQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4148,8 +3574,6 @@
},
"node_modules/@rsdoctor/sdk/node_modules/fs-extra": {
"version": "11.3.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
- "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4163,8 +3587,6 @@
},
"node_modules/@rsdoctor/sdk/node_modules/jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4176,8 +3598,6 @@
},
"node_modules/@rsdoctor/sdk/node_modules/source-map": {
"version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -4186,8 +3606,6 @@
},
"node_modules/@rsdoctor/sdk/node_modules/universalify": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4196,8 +3614,6 @@
},
"node_modules/@rsdoctor/types": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@rsdoctor/types/-/types-1.1.2.tgz",
- "integrity": "sha512-DtCDXP+vzoPcnjwqycwpMuTfrPtd2+u4r/LPVkMSTotfGQC0PczwvW2B6rXtiIfEWWy3prCwXfb2fkinMh7UHg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4221,15 +3637,11 @@
},
"node_modules/@rsdoctor/types/node_modules/@types/estree": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true,
"license": "MIT"
},
"node_modules/@rsdoctor/types/node_modules/source-map": {
"version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -4238,8 +3650,6 @@
},
"node_modules/@rsdoctor/utils": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@rsdoctor/utils/-/utils-1.1.2.tgz",
- "integrity": "sha512-pGPSc3HKXgNP6whQqX8HBbzrSsEmOlq/PJ0z0EpNeXeYC09u3WL0LTvoNQN/p7FldK/fS/cifCuYn+a+rdrv6w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4264,15 +3674,11 @@
},
"node_modules/@rsdoctor/utils/node_modules/@types/estree": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true,
"license": "MIT"
},
"node_modules/@rsdoctor/utils/node_modules/acorn": {
"version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -4284,8 +3690,6 @@
},
"node_modules/@rsdoctor/utils/node_modules/acorn-import-attributes": {
"version": "1.9.5",
- "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
- "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -4294,8 +3698,6 @@
},
"node_modules/@rsdoctor/utils/node_modules/fs-extra": {
"version": "11.3.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
- "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4309,8 +3711,6 @@
},
"node_modules/@rsdoctor/utils/node_modules/jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4322,8 +3722,6 @@
},
"node_modules/@rsdoctor/utils/node_modules/lines-and-columns": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
- "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4332,8 +3730,6 @@
},
"node_modules/@rsdoctor/utils/node_modules/universalify": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4342,8 +3738,6 @@
},
"node_modules/@rsdoctor/webpack-plugin": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@rsdoctor/webpack-plugin/-/webpack-plugin-1.1.2.tgz",
- "integrity": "sha512-6GjGbRJjxAEb6vIZ8nL8bNW+P6Oz/XWSh5vUoySOIrA2iCyB6v0FILCK3YS7zOqFN1Rnh1GmyQkOMkIL00mbPg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4361,8 +3755,6 @@
},
"node_modules/@rsdoctor/webpack-plugin/node_modules/fs-extra": {
"version": "11.3.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
- "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4376,8 +3768,6 @@
},
"node_modules/@rsdoctor/webpack-plugin/node_modules/jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4389,8 +3779,6 @@
},
"node_modules/@rsdoctor/webpack-plugin/node_modules/universalify": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4399,39 +3787,32 @@
},
"node_modules/@sinclair/typebox": {
"version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@sinonjs/commons": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/fake-timers": {
"version": "10.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
- "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.0"
}
},
"node_modules/@socket.io/component-emitter": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
- "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
"dev": true,
"license": "MIT"
},
"node_modules/@studip/pdfjs-studip": {
"version": "5.3.54",
- "resolved": "https://registry.npmjs.org/@studip/pdfjs-studip/-/pdfjs-studip-5.3.54.tgz",
- "integrity": "sha512-soIy9BcPjLrXWt67JUyO/PHbEFRcfp8+6xntI7OODyr8geNVU3MF2HsepIeTL+OmYU36Ay87XRLm/mE+KyBWNw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -4443,27 +3824,24 @@
},
"node_modules/@tootallnate/once": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
- "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10"
}
},
"node_modules/@trysound/sax": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
- "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/@types/babel__core": {
"version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz",
- "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7",
@@ -4474,18 +3852,16 @@
},
"node_modules/@types/babel__generator": {
"version": "7.6.5",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz",
- "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.0.0"
}
},
"node_modules/@types/babel__template": {
"version": "7.4.2",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz",
- "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.1.0",
"@babel/types": "^7.0.0"
@@ -4493,17 +3869,14 @@
},
"node_modules/@types/babel__traverse": {
"version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz",
- "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.20.7"
}
},
"node_modules/@types/connect": {
"version": "3.4.38",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
- "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4512,8 +3885,6 @@
},
"node_modules/@types/cors": {
"version": "2.8.18",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.18.tgz",
- "integrity": "sha512-nX3d0sxJW41CqQvfOzVG1NCTXfFDrDWIghCZncpHeWlVFd81zxB/DLhg7avFg6eHLCRX7ckBmoIIcqa++upvJA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4522,8 +3893,6 @@
},
"node_modules/@types/eslint": {
"version": "8.56.12",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz",
- "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4533,8 +3902,6 @@
},
"node_modules/@types/eslint-scope": {
"version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4544,15 +3911,11 @@
},
"node_modules/@types/estree": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
- "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/fs-extra": {
"version": "11.0.4",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz",
- "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4562,9 +3925,8 @@
},
"node_modules/@types/glob": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/minimatch": "*",
"@types/node": "*"
@@ -4572,60 +3934,53 @@
},
"node_modules/@types/graceful-fs": {
"version": "4.1.7",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz",
- "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/istanbul-lib-report": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-coverage": "*"
}
},
"node_modules/@types/istanbul-reports": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-report": "*"
}
},
"node_modules/@types/jquery": {
"version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.22.tgz",
- "integrity": "sha512-ISQFeUK5GwRftLK4PVvKTWEVCxZ2BpaqBz0TWkIq5w4vGojxZP9+XkqgcPjxoqmPeew+HLyWthCBvK7GdF5NYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/sizzle": "*"
}
},
"node_modules/@types/jqueryui": {
"version": "1.12.18",
- "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.18.tgz",
- "integrity": "sha512-crlmH8kFzIiU+4aBFgvYUjykSaOTP5RDw7NqkFkcSNWFAF/SMPrr7sY1uNXDEhite/2pEwUoZlufQoy87A22LA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/jquery": "*"
}
},
"node_modules/@types/jsdom": {
"version": "20.0.1",
- "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz",
- "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"@types/tough-cookie": "*",
@@ -4634,14 +3989,11 @@
},
"node_modules/@types/json-schema": {
"version": "7.0.12",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
- "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/jsonfile": {
"version": "6.1.4",
- "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz",
- "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4650,66 +4002,52 @@
},
"node_modules/@types/lodash": {
"version": "4.14.199",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
- "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/minimatch": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/minimist": {
"version": "1.2.5",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/node": {
"version": "20.3.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz",
- "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
- "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/parse5": {
"version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
- "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/raf": {
"version": "3.4.0",
- "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz",
- "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/@types/sizzle": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz",
- "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/stack-utils": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
- "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/tapable": {
"version": "2.2.7",
- "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-2.2.7.tgz",
- "integrity": "sha512-D6QzACV9vNX3r8HQQNTOnpG+Bv1rko+yEA82wKs3O9CQ5+XW7HI7TED17/UE7+5dIxyxZIWTxKbsBeF6uKFCwA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4718,29 +4056,24 @@
},
"node_modules/@types/tough-cookie": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz",
- "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/yargs": {
"version": "17.0.24",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/yargs-parser": "*"
}
},
"node_modules/@types/yargs-parser": {
"version": "21.0.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
- "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4773,8 +4106,6 @@
},
"node_modules/@typescript-eslint/parser": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
- "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -4802,8 +4133,6 @@
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
- "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4820,8 +4149,6 @@
},
"node_modules/@typescript-eslint/type-utils": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
- "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4848,8 +4175,6 @@
},
"node_modules/@typescript-eslint/types": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
- "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4862,8 +4187,6 @@
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
- "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -4891,8 +4214,6 @@
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4901,8 +4222,6 @@
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
"version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -4917,8 +4236,6 @@
},
"node_modules/@typescript-eslint/utils": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
- "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4940,8 +4257,6 @@
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "7.18.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
- "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4958,8 +4273,6 @@
},
"node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
"version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -4971,15 +4284,11 @@
},
"node_modules/@ungap/structured-clone": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
"dev": true,
"license": "ISC"
},
"node_modules/@vojtechlanka/vue-tags-input": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@vojtechlanka/vue-tags-input/-/vue-tags-input-3.1.1.tgz",
- "integrity": "sha512-GdREECH+k2pQCKdbHHh4/IxRXje3QQ8rXzXd9/6L1kzGYXqHlG1tbRoi1qC7enph67/g2nvGaZfpqLuuW+CX3g==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -4992,8 +4301,6 @@
},
"node_modules/@vue/compiler-core": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
- "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.25.3",
@@ -5005,8 +4312,6 @@
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
- "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
"license": "MIT",
"dependencies": {
"@vue/compiler-core": "3.5.13",
@@ -5015,8 +4320,6 @@
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
- "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.25.3",
@@ -5032,8 +4335,6 @@
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
- "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.5.13",
@@ -5042,15 +4343,11 @@
},
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
- "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
"dev": true,
"license": "MIT"
},
"node_modules/@vue/eslint-config-typescript": {
"version": "13.0.0",
- "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz",
- "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5074,8 +4371,6 @@
},
"node_modules/@vue/reactivity": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
- "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
"license": "MIT",
"dependencies": {
"@vue/shared": "3.5.13"
@@ -5083,8 +4378,6 @@
},
"node_modules/@vue/runtime-core": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
- "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.13",
@@ -5093,8 +4386,6 @@
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
- "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.13",
@@ -5105,8 +4396,6 @@
},
"node_modules/@vue/server-renderer": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
- "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
"license": "MIT",
"dependencies": {
"@vue/compiler-ssr": "3.5.13",
@@ -5118,14 +4407,10 @@
},
"node_modules/@vue/shared": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz",
- "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
"license": "MIT"
},
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
- "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5135,29 +4420,21 @@
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
- "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
"dev": true,
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
- "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
- "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
"dev": true,
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
- "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5168,15 +4445,11 @@
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
- "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
"dev": true,
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
- "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5188,8 +4461,6 @@
},
"node_modules/@webassemblyjs/ieee754": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
- "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5198,8 +4469,6 @@
},
"node_modules/@webassemblyjs/leb128": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
- "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -5208,15 +4477,11 @@
},
"node_modules/@webassemblyjs/utf8": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
- "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
- "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5232,8 +4497,6 @@
},
"node_modules/@webassemblyjs/wasm-gen": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
- "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5246,8 +4509,6 @@
},
"node_modules/@webassemblyjs/wasm-opt": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
- "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5259,8 +4520,6 @@
},
"node_modules/@webassemblyjs/wasm-parser": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
- "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5274,8 +4533,6 @@
},
"node_modules/@webassemblyjs/wast-printer": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
- "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5285,8 +4542,6 @@
},
"node_modules/@webpack-cli/configtest": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
- "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5299,8 +4554,6 @@
},
"node_modules/@webpack-cli/info": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
- "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5313,8 +4566,6 @@
},
"node_modules/@webpack-cli/serve": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
- "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5332,28 +4583,21 @@
},
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true,
"license": "BSD-3-Clause"
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true,
"license": "Apache-2.0"
},
"node_modules/abab": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/accepts": {
"version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5366,9 +4610,8 @@
},
"node_modules/acorn": {
"version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -5378,9 +4621,8 @@
},
"node_modules/acorn-class-fields": {
"version": "0.3.7",
- "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz",
- "integrity": "sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn-private-class-elements": "^0.2.7"
},
@@ -5393,9 +4635,8 @@
},
"node_modules/acorn-globals": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
- "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn": "^8.1.0",
"acorn-walk": "^8.0.2"
@@ -5403,9 +4644,8 @@
},
"node_modules/acorn-globals/node_modules/acorn": {
"version": "8.9.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
- "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -5415,18 +4655,16 @@
},
"node_modules/acorn-jsx": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/acorn-private-class-elements": {
"version": "0.2.7",
- "resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz",
- "integrity": "sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4.8.2"
},
@@ -5436,9 +4674,8 @@
},
"node_modules/acorn-private-methods": {
"version": "0.3.3",
- "resolved": "https://registry.npmjs.org/acorn-private-methods/-/acorn-private-methods-0.3.3.tgz",
- "integrity": "sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn-private-class-elements": "^0.2.7"
},
@@ -5451,9 +4688,8 @@
},
"node_modules/acorn-stage3": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz",
- "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn-class-fields": "^0.3.7",
"acorn-private-methods": "^0.3.3",
@@ -5468,9 +4704,8 @@
},
"node_modules/acorn-static-class-features": {
"version": "0.2.4",
- "resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz",
- "integrity": "sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn-private-class-elements": "^0.2.7"
},
@@ -5483,8 +4718,6 @@
},
"node_modules/acorn-walk": {
"version": "8.3.4",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
- "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5496,8 +4729,6 @@
},
"node_modules/acorn-walk/node_modules/acorn": {
"version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -5509,9 +4740,8 @@
},
"node_modules/agent-base": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "4"
},
@@ -5521,9 +4751,8 @@
},
"node_modules/ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -5537,9 +4766,8 @@
},
"node_modules/ajv-formats": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^8.0.0"
},
@@ -5554,9 +4782,8 @@
},
"node_modules/ajv-formats/node_modules/ajv": {
"version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -5570,23 +4797,19 @@
},
"node_modules/ajv-formats/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"ajv": "^6.9.1"
}
},
"node_modules/altcha": {
"version": "1.4.2",
- "resolved": "https://registry.npmjs.org/altcha/-/altcha-1.4.2.tgz",
- "integrity": "sha512-7UcWh4tHWqP5YHo+jC8vmm+sThYUi1R9qXsiiXtmdoOiimfA0LCLccSKqYSoDmYvqq+CBV79WpQVWafKQCKHmw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -5599,9 +4822,8 @@
},
"node_modules/ansi-escapes": {
"version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.21.3"
},
@@ -5614,17 +4836,14 @@
},
"node_modules/ansi-regex": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5639,8 +4858,6 @@
},
"node_modules/ansi-styles/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5652,9 +4869,8 @@
},
"node_modules/anymatch": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -5665,23 +4881,19 @@
},
"node_modules/argparse": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sprintf-js": "~1.0.2"
}
},
"node_modules/argparse/node_modules/sprintf-js": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/array-back": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
- "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5690,17 +4902,14 @@
},
"node_modules/array-union": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/arrify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5709,23 +4918,18 @@
},
"node_modules/asap": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/assert-never": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.4.0.tgz",
- "integrity": "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/astral-regex": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5734,15 +4938,13 @@
},
"node_modules/asynckit": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/atob": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true,
+ "license": "(MIT OR Apache-2.0)",
"bin": {
"atob": "bin/atob.js"
},
@@ -5752,8 +4954,6 @@
},
"node_modules/autoprefixer": {
"version": "10.4.20",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
- "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
"dev": true,
"funding": [
{
@@ -5790,27 +4990,24 @@
},
"node_modules/axe-core": {
"version": "4.7.2",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz",
- "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==",
"dev": true,
+ "license": "MPL-2.0",
"engines": {
"node": ">=4"
}
},
"node_modules/axios": {
"version": "0.21.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
- "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"follow-redirects": "^1.14.0"
}
},
"node_modules/babel-jest": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
- "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/transform": "^29.7.0",
"@types/babel__core": "^7.1.14",
@@ -5829,8 +5026,6 @@
},
"node_modules/babel-loader": {
"version": "10.0.0",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz",
- "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5846,8 +5041,6 @@
},
"node_modules/babel-loader/node_modules/find-up": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5863,8 +5056,6 @@
},
"node_modules/babel-loader/node_modules/locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5879,8 +5070,6 @@
},
"node_modules/babel-loader/node_modules/p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5895,9 +5084,8 @@
},
"node_modules/babel-plugin-istanbul": {
"version": "6.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
- "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
"@istanbuljs/load-nyc-config": "^1.0.0",
@@ -5911,9 +5099,8 @@
},
"node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/core": "^7.12.3",
"@babel/parser": "^7.14.7",
@@ -5927,18 +5114,16 @@
},
"node_modules/babel-plugin-istanbul/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/babel-plugin-jest-hoist": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
- "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/template": "^7.3.3",
"@babel/types": "^7.3.3",
@@ -5951,8 +5136,6 @@
},
"node_modules/babel-plugin-polyfill-corejs2": {
"version": "0.4.12",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz",
- "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5966,8 +5149,6 @@
},
"node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -5976,8 +5157,6 @@
},
"node_modules/babel-plugin-polyfill-corejs3": {
"version": "0.11.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz",
- "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5990,8 +5169,6 @@
},
"node_modules/babel-plugin-polyfill-regenerator": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz",
- "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6003,9 +5180,8 @@
},
"node_modules/babel-preset-current-node-syntax": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-bigint": "^7.8.3",
@@ -6026,9 +5202,8 @@
},
"node_modules/babel-preset-jest": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
- "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"babel-plugin-jest-hoist": "^29.6.3",
"babel-preset-current-node-syntax": "^1.0.0"
@@ -6042,8 +5217,6 @@
},
"node_modules/babel-walk": {
"version": "3.0.0-canary-5",
- "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
- "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -6056,15 +5229,13 @@
},
"node_modules/balanced-match": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/base64-arraybuffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
- "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">= 0.6.0"
@@ -6072,8 +5243,6 @@
},
"node_modules/base64-js": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
"funding": [
{
@@ -6088,12 +5257,11 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/base64id": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
- "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6102,34 +5270,30 @@
},
"node_modules/big.js": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/binary-extensions": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/blueimp-canvas-to-blob": {
"version": "3.29.0",
- "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz",
- "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/blueimp-file-upload": {
"version": "10.31.0",
- "resolved": "https://registry.npmjs.org/blueimp-file-upload/-/blueimp-file-upload-10.31.0.tgz",
- "integrity": "sha512-dGAxOf9+SsMDvZPTsIUpe0cOk57taMJYE3FocHEUebhn5BnDbu1hcWOmrP8oswIe6V61Qcm9UDuhq/Pv1t/eRw==",
"dev": true,
+ "license": "MIT",
"optionalDependencies": {
"blueimp-canvas-to-blob": "3",
"blueimp-load-image": "5",
@@ -6141,16 +5305,14 @@
},
"node_modules/blueimp-load-image": {
"version": "5.16.0",
- "resolved": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-5.16.0.tgz",
- "integrity": "sha512-3DUSVdOtlfNRk7moRZuTwDmA3NnG8KIJuLcq3c0J7/BIr6X3Vb/EpX3kUH1joxUhmoVF4uCpDfz7wHkz8pQajA==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/blueimp-tmpl": {
"version": "3.20.0",
- "resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-3.20.0.tgz",
- "integrity": "sha512-g6ln9L+VX8ZA4WA8mgKMethYH+5teroJ2uOkCvcthy9Y9d9LrQ42OAMn+r3ECKu9CB+xe9GOChlIUJBSxwkI6g==",
"dev": true,
+ "license": "MIT",
"optional": true,
"bin": {
"tmpl.js": "js/compile.js"
@@ -6158,14 +5320,11 @@
},
"node_modules/blurhash": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz",
- "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/body-parser": {
"version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6189,8 +5348,6 @@
},
"node_modules/body-parser/node_modules/debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6199,8 +5356,6 @@
},
"node_modules/body-parser/node_modules/iconv-lite": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6212,22 +5367,18 @@
},
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true,
"license": "MIT"
},
"node_modules/boolbase": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/brace-expansion": {
"version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -6235,8 +5386,6 @@
},
"node_modules/braces": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6248,8 +5397,6 @@
},
"node_modules/browserslist": {
"version": "4.24.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
- "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"dev": true,
"funding": [
{
@@ -6281,15 +5428,11 @@
},
"node_modules/browserslist-load-config": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browserslist-load-config/-/browserslist-load-config-1.0.0.tgz",
- "integrity": "sha512-jj4xzExS1hRVMUIFQSkW4l3KPni5JRxnKfYfRpirooK5S4CjY31PhqfEjCB/mfqgCxkZIxc9rcu0pyXlEpYp/Q==",
"dev": true,
"license": "MIT"
},
"node_modules/browserslist-to-es-version": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browserslist-to-es-version/-/browserslist-to-es-version-1.0.0.tgz",
- "integrity": "sha512-i6dR03ClGy9ti97FSa4s0dpv01zW/t5VbvGjFfTLsrRQFsPgSeyGkCrlU7BTJuI5XDHVY5S2JgDnDsvQXifJ8w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6298,18 +5441,16 @@
},
"node_modules/bser": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"node-int64": "^0.4.0"
}
},
"node_modules/btoa": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
- "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
"dev": true,
+ "license": "(MIT OR Apache-2.0)",
"bin": {
"btoa": "bin/btoa.js"
},
@@ -6319,8 +5460,6 @@
},
"node_modules/buffer": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"dev": true,
"funding": [
{
@@ -6336,6 +5475,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
@@ -6343,20 +5483,16 @@
},
"node_modules/buffer-from": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/buntis": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/buntis/-/buntis-0.2.1.tgz",
- "integrity": "sha512-5wszfQlsqJmZrfxpPkO5yQcEoBAmfUYlXxXU/IM6PhPZ8DMnMMJQ9rvAHfe5WZmnB6E1IoJYylFfTaf1e2FJbQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/bytes": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6365,8 +5501,6 @@
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
- "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
"dev": true,
"dependencies": {
"es-errors": "^1.3.0",
@@ -6378,8 +5512,6 @@
},
"node_modules/call-bound": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
- "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
"dev": true,
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -6394,26 +5526,22 @@
},
"node_modules/callsites": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/camelcase": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/camelcase-keys": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz",
- "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6431,8 +5559,6 @@
},
"node_modules/camelcase-keys/node_modules/camelcase": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6444,8 +5570,6 @@
},
"node_modules/camelcase-keys/node_modules/type-fest": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -6457,9 +5581,8 @@
},
"node_modules/caniuse-api": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
- "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"browserslist": "^4.0.0",
"caniuse-lite": "^1.0.0",
@@ -6469,8 +5592,6 @@
},
"node_modules/caniuse-lite": {
"version": "1.0.30001688",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz",
- "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==",
"dev": true,
"funding": [
{
@@ -6485,12 +5606,11 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/canvg": {
"version": "3.0.11",
- "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.11.tgz",
- "integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -6510,8 +5630,6 @@
},
"node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6527,8 +5645,6 @@
},
"node_modules/chalk/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6540,18 +5656,16 @@
},
"node_modules/char-regex": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/character-parser": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
- "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"is-regex": "^1.0.3"
@@ -6559,18 +5673,16 @@
},
"node_modules/charenc": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": "*"
}
},
"node_modules/chart.js": {
"version": "2.9.4",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz",
- "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chartjs-color": "^2.1.0",
"moment": "^2.10.2"
@@ -6578,18 +5690,16 @@
},
"node_modules/chartist": {
"version": "0.11.4",
- "resolved": "https://registry.npmjs.org/chartist/-/chartist-0.11.4.tgz",
- "integrity": "sha512-H4AimxaUD738/u9Mq8t27J4lh6STsLi4BQHt65nOtpLk3xyrBPaLiLMrHw7/WV9CmsjGA02WihjuL5qpSagLYw==",
"dev": true,
+ "license": "MIT OR WTFPL",
"engines": {
"node": ">=4.6.0"
}
},
"node_modules/chartjs-color": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
- "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chartjs-color-string": "^0.6.0",
"color-convert": "^1.9.3"
@@ -6597,18 +5707,16 @@
},
"node_modules/chartjs-color-string": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
- "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "^1.0.0"
}
},
"node_modules/cheerio": {
"version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cheerio-select": "^2.1.0",
"dom-serializer": "^2.0.0",
@@ -6627,9 +5735,8 @@
},
"node_modules/cheerio-select": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-select": "^5.1.0",
@@ -6644,8 +5751,6 @@
},
"node_modules/chokidar": {
"version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
"funding": [
{
@@ -6653,6 +5758,7 @@
"url": "https://paulmillr.com/funding/"
}
],
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -6671,17 +5777,14 @@
},
"node_modules/chrome-trace-event": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.0"
}
},
"node_modules/ci-info": {
"version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
"dev": true,
"funding": [
{
@@ -6689,20 +5792,18 @@
"url": "https://github.com/sponsors/sibiraj-s"
}
],
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/cjs-module-lexer": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
- "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ckeditor5": {
"version": "43.2.0",
- "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-43.2.0.tgz",
- "integrity": "sha512-wtW2TICJiXoOPK2K4L1oiO+HWBS6ifVQW2k80DoQI7cDranUC0FKMNirYZZXNdK0SYH87RSLZR8hHAAdbbOPBA==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -6767,9 +5868,8 @@
},
"node_modules/cliui": {
"version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -6781,9 +5881,8 @@
},
"node_modules/clone-deep": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4",
"kind-of": "^6.0.2",
@@ -6795,9 +5894,8 @@
},
"node_modules/co": {
"version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">= 1.0.0",
"node": ">= 0.12.0"
@@ -6805,63 +5903,54 @@
},
"node_modules/collect-v8-coverage": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
- "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/color-convert/node_modules/color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/color-parse": {
"version": "1.4.2",
- "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.2.tgz",
- "integrity": "sha512-RI7s49/8yqDj3fECFZjUI1Yi0z/Gq1py43oNJivAIIDSyJiOZLfYCRQEgn8HEVAj++PcRe8AnL2XF0fRJ3BTnA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "^1.0.0"
}
},
"node_modules/colord": {
"version": "2.9.3",
- "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
- "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/colorette": {
"version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/colorpare": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/colorpare/-/colorpare-2.2.0.tgz",
- "integrity": "sha512-GVtxzF1YKkeoKgYa2PBOOS6reC/D1qewhv9se+8Nkh0zfY/JNaIuc2OdORLP8p+4GP7Z9IDYrkjz9XUak6imxQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/combined-stream": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -6871,8 +5960,6 @@
},
"node_modules/command-line-args": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
- "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6887,29 +5974,24 @@
},
"node_modules/commander": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10"
}
},
"node_modules/commondir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/connect": {
"version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6924,8 +6006,6 @@
},
"node_modules/connect/node_modules/debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6934,16 +6014,13 @@
},
"node_modules/connect/node_modules/ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true,
"license": "MIT"
},
"node_modules/constantinople": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
- "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"@babel/parser": "^7.6.0",
@@ -6952,8 +6029,6 @@
},
"node_modules/content-type": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6962,8 +6037,6 @@
},
"node_modules/cookie": {
"version": "0.7.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
- "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6972,8 +6045,6 @@
},
"node_modules/copy-webpack-plugin": {
"version": "13.0.0",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.0.tgz",
- "integrity": "sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7009,10 +6080,9 @@
},
"node_modules/core-js": {
"version": "3.31.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.0.tgz",
- "integrity": "sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"funding": {
"type": "opencollective",
@@ -7021,8 +6091,6 @@
},
"node_modules/core-js-compat": {
"version": "3.41.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz",
- "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7035,14 +6103,11 @@
},
"node_modules/core-util-is": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cors": {
"version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7055,9 +6120,8 @@
},
"node_modules/create-jest": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
- "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"chalk": "^4.0.0",
@@ -7076,14 +6140,11 @@
},
"node_modules/cropperjs": {
"version": "1.5.9",
- "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.9.tgz",
- "integrity": "sha512-aPWlg43sLIcYN4GBXIdyvM09wNPgn1ug+vNVwV8jlb3dbgEX/B34Iw6hrjGSajkUDQBmaCi6uPOevFb7N0yUsw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cross-spawn": {
"version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7097,18 +6158,16 @@
},
"node_modules/crypt": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": "*"
}
},
"node_modules/css-declaration-sorter": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
- "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^14 || ^16 || >=18"
},
@@ -7118,8 +6177,6 @@
},
"node_modules/css-functions-list": {
"version": "3.2.3",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz",
- "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7128,9 +6185,8 @@
},
"node_modules/css-line-break": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
- "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"utrie": "^1.0.2"
@@ -7138,8 +6194,6 @@
},
"node_modules/css-loader": {
"version": "7.1.2",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz",
- "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7174,8 +6228,6 @@
},
"node_modules/css-minimizer-webpack-plugin": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.0.tgz",
- "integrity": "sha512-niy66jxsQHqO+EYbhPuIhqRQ1mNcNVUHrMnkzzir9kFOERJUaQDDRhh7dKDz33kBpkWMF9M8Vx0QlDbc5AHOsw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7219,8 +6271,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/cssnano": {
"version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz",
- "integrity": "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7240,8 +6290,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-preset-default": {
"version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz",
- "integrity": "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7285,8 +6333,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-utils": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz",
- "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7298,8 +6344,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7314,8 +6358,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-calc": {
"version": "10.0.2",
- "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.2.tgz",
- "integrity": "sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7331,8 +6373,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-colormin": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz",
- "integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7350,8 +6390,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-convert-values": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz",
- "integrity": "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7367,8 +6405,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-comments": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz",
- "integrity": "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7383,8 +6419,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-duplicates": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz",
- "integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7396,8 +6430,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-empty": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz",
- "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7409,8 +6441,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-overridden": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz",
- "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7422,8 +6452,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-longhand": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz",
- "integrity": "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7439,8 +6467,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-rules": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz",
- "integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7458,8 +6484,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-font-values": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz",
- "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7474,8 +6498,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-gradients": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz",
- "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7492,8 +6514,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-params": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz",
- "integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7510,8 +6530,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-selectors": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz",
- "integrity": "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7527,8 +6545,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-charset": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz",
- "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7540,8 +6556,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-display-values": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz",
- "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7556,8 +6570,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-positions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz",
- "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7572,8 +6584,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-repeat-style": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz",
- "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7588,8 +6598,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-string": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz",
- "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7604,8 +6612,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-timing-functions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz",
- "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7620,8 +6626,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-unicode": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz",
- "integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7637,8 +6641,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-url": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz",
- "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7653,8 +6655,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-whitespace": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz",
- "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7669,8 +6669,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-ordered-values": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz",
- "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7686,8 +6684,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-initial": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz",
- "integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7703,8 +6699,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-transforms": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz",
- "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7719,8 +6713,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-svgo": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz",
- "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7736,8 +6728,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/postcss-unique-selectors": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz",
- "integrity": "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7752,8 +6742,6 @@
},
"node_modules/css-minimizer-webpack-plugin/node_modules/stylehacks": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz",
- "integrity": "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7769,9 +6757,8 @@
},
"node_modules/css-select": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.1.0",
@@ -7785,16 +6772,13 @@
},
"node_modules/css-selector-parser": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
- "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==",
"dev": true,
"license": "MIT"
},
"node_modules/css-what": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">= 6"
},
@@ -7804,9 +6788,8 @@
},
"node_modules/cssesc": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
+ "license": "MIT",
"bin": {
"cssesc": "bin/cssesc"
},
@@ -7816,15 +6799,13 @@
},
"node_modules/cssom": {
"version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
- "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cssstyle": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cssom": "~0.3.6"
},
@@ -7834,21 +6815,17 @@
},
"node_modules/cssstyle/node_modules/cssom": {
"version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/csstype": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
"node_modules/data-urls": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
- "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"abab": "^2.0.6",
"whatwg-mimetype": "^3.0.0",
@@ -7860,23 +6837,18 @@
},
"node_modules/dayjs": {
"version": "1.11.13",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"dev": true,
"license": "MIT"
},
"node_modules/debounce": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
"dev": true,
"license": "MIT"
},
"node_modules/debug": {
"version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "2.1.2"
},
@@ -7891,8 +6863,6 @@
},
"node_modules/decamelize": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz",
- "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7904,8 +6874,6 @@
},
"node_modules/decamelize-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7921,8 +6889,6 @@
},
"node_modules/decamelize-keys/node_modules/decamelize": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7931,8 +6897,6 @@
},
"node_modules/decamelize-keys/node_modules/map-obj": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7941,15 +6905,13 @@
},
"node_modules/decimal.js": {
"version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/dedent": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
- "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"babel-plugin-macros": "^3.1.0"
},
@@ -7961,8 +6923,6 @@
},
"node_modules/deep-eql": {
"version": "4.1.4",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
- "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7974,23 +6934,19 @@
},
"node_modules/deep-is": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/deepmerge": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/define-lazy-prop": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7999,17 +6955,14 @@
},
"node_modules/delayed-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/depd": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8018,8 +6971,6 @@
},
"node_modules/destroy": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8029,27 +6980,24 @@
},
"node_modules/detect-newline": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/diff-sequences": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/dir-glob": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-type": "^4.0.0"
},
@@ -8059,9 +7007,8 @@
},
"node_modules/doctrine": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
@@ -8071,17 +7018,14 @@
},
"node_modules/doctypes": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
- "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/dom-serializer": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -8093,21 +7037,19 @@
},
"node_modules/domelementtype": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
- ]
+ ],
+ "license": "BSD-2-Clause"
},
"node_modules/domexception": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
- "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"webidl-conversions": "^7.0.0"
},
@@ -8117,9 +7059,8 @@
},
"node_modules/domhandler": {
"version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -8132,24 +7073,17 @@
},
"node_modules/dommatrix": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz",
- "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==",
- "deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix.",
"dev": true,
"license": "MIT"
},
"node_modules/dompurify": {
"version": "2.5.8",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.8.tgz",
- "integrity": "sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==",
"dev": true,
"license": "(MPL-2.0 OR Apache-2.0)",
"optional": true
},
"node_modules/domutils": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
- "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -8163,9 +7097,8 @@
},
"node_modules/dotenv": {
"version": "16.3.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
- "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
},
@@ -8175,8 +7108,6 @@
},
"node_modules/dunder-proto": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dev": true,
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -8189,23 +7120,18 @@
},
"node_modules/duplexer": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
- "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true,
"license": "MIT"
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true,
"license": "MIT"
},
"node_modules/easygettext": {
"version": "2.17.0",
- "resolved": "https://registry.npmjs.org/easygettext/-/easygettext-2.17.0.tgz",
- "integrity": "sha512-QmMWIu6l83SW2QuEFd4GIDrTey0qOn0haTOMt4NdPKPHEBihAqdo9HHYRDHiPg/msZSKaye7qDOLAcqHlmfo+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
"acorn": "^7.4.0",
@@ -8232,23 +7158,18 @@
},
"node_modules/ee-first": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
"dev": true,
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.141",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.141.tgz",
- "integrity": "sha512-qS+qH9oqVYc1ooubTiB9l904WVyM6qNYxtOEEGReoZXw3xlqeYdFr5GclNzbkAufWgwWLEPoDi3d9MoRwwIjGw==",
"dev": true,
"license": "ISC"
},
"node_modules/emittery": {
"version": "0.13.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
- "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -8258,23 +7179,19 @@
},
"node_modules/emoji-regex": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/emojis-list": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/encodeurl": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8283,8 +7200,6 @@
},
"node_modules/engine.io": {
"version": "6.6.4",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz",
- "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8304,8 +7219,6 @@
},
"node_modules/engine.io-parser": {
"version": "5.2.3",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
- "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8314,8 +7227,6 @@
},
"node_modules/engine.io/node_modules/ws": {
"version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8336,8 +7247,6 @@
},
"node_modules/enhanced-resolve": {
"version": "5.17.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
- "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8350,8 +7259,7 @@
},
"node_modules/entities": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -8361,8 +7269,6 @@
},
"node_modules/env-paths": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8371,8 +7277,6 @@
},
"node_modules/envinfo": {
"version": "7.14.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz",
- "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -8384,17 +7288,14 @@
},
"node_modules/error-ex": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-arrayish": "^0.2.1"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -8402,8 +7303,6 @@
},
"node_modules/es-errors": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -8411,14 +7310,11 @@
},
"node_modules/es-module-lexer": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
- "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"dev": true,
"dependencies": {
"es-errors": "^1.3.0"
@@ -8429,14 +7325,11 @@
},
"node_modules/es6-promise": {
"version": "4.2.8",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
- "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/escalade": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8445,15 +7338,11 @@
},
"node_modules/escape-html": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
"dev": true,
"license": "MIT"
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8465,9 +7354,8 @@
},
"node_modules/escodegen": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
@@ -8486,17 +7374,14 @@
},
"node_modules/escodegen/node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/eslint": {
"version": "8.57.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8551,8 +7436,6 @@
},
"node_modules/eslint-formatter-gitlab": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/eslint-formatter-gitlab/-/eslint-formatter-gitlab-5.1.0.tgz",
- "integrity": "sha512-IxhrjLYzDlbFgPWEnvZlWLwPjMeyymbyo0hDHWntZ3DSAP9AP9huj15KbU+BK3OqeO3OHhbFEh2TA6sR0KZhkA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8568,8 +7451,6 @@
},
"node_modules/eslint-formatter-gitlab/node_modules/yaml": {
"version": "2.6.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
- "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
"dev": true,
"license": "ISC",
"bin": {
@@ -8581,8 +7462,6 @@
},
"node_modules/eslint-plugin-vue": {
"version": "9.32.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz",
- "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8604,8 +7483,6 @@
},
"node_modules/eslint-plugin-vue/node_modules/globals": {
"version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8620,8 +7497,6 @@
},
"node_modules/eslint-plugin-vue/node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -8633,9 +7508,8 @@
},
"node_modules/eslint-scope": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -8646,17 +7520,14 @@
},
"node_modules/eslint-visitor-keys": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10"
}
},
"node_modules/eslint-webpack-plugin": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz",
- "integrity": "sha512-rsfpFQ01AWQbqtjgPRr2usVRxhWDuG0YDYcG8DJOteD3EFnpeuYuOwk0PQiN7PRBTqS6ElNdtPZPggj8If9WnA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8680,8 +7551,6 @@
},
"node_modules/eslint-webpack-plugin/node_modules/jest-worker": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8696,8 +7565,6 @@
},
"node_modules/eslint/node_modules/@eslint/js": {
"version": "8.57.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8706,15 +7573,11 @@
},
"node_modules/eslint/node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"license": "Python-2.0"
},
"node_modules/eslint/node_modules/eslint-scope": {
"version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -8730,8 +7593,6 @@
},
"node_modules/eslint/node_modules/eslint-visitor-keys": {
"version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -8743,8 +7604,6 @@
},
"node_modules/eslint/node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -8753,8 +7612,6 @@
},
"node_modules/eslint/node_modules/find-up": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8770,8 +7627,6 @@
},
"node_modules/eslint/node_modules/glob-parent": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -8783,9 +7638,8 @@
},
"node_modules/eslint/node_modules/globals": {
"version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -8798,8 +7652,6 @@
},
"node_modules/eslint/node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8811,8 +7663,6 @@
},
"node_modules/eslint/node_modules/locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8827,8 +7677,6 @@
},
"node_modules/eslint/node_modules/p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8843,9 +7691,8 @@
},
"node_modules/eslint/node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -8855,8 +7702,6 @@
},
"node_modules/espree": {
"version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -8873,8 +7718,6 @@
},
"node_modules/espree/node_modules/acorn": {
"version": "8.12.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -8886,8 +7729,6 @@
},
"node_modules/espree/node_modules/eslint-visitor-keys": {
"version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -8899,9 +7740,8 @@
},
"node_modules/esprima": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
+ "license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -8912,9 +7752,8 @@
},
"node_modules/esquery": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -8924,18 +7763,16 @@
},
"node_modules/esquery/node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/esrecurse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -8945,50 +7782,44 @@
},
"node_modules/esrecurse/node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/estraverse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ "license": "MIT"
},
"node_modules/esutils": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/events": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.x"
}
},
"node_modules/execa": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^6.0.0",
@@ -9009,8 +7840,6 @@
},
"node_modules/exit": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
"dev": true,
"engines": {
"node": ">= 0.8.0"
@@ -9018,9 +7847,8 @@
},
"node_modules/expect": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/expect-utils": "^29.7.0",
"jest-get-type": "^29.6.3",
@@ -9034,8 +7862,6 @@
},
"node_modules/expose-loader": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-5.0.0.tgz",
- "integrity": "sha512-BtUqYRmvx1bEY5HN6eK2I9URUZgNmN0x5UANuocaNjXSgfoDlkXt+wyEMe7i5DzDNh2BKJHPc5F4rBwEdSQX6w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9051,13 +7877,10 @@
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "license": "MIT"
},
"node_modules/fast-glob": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9073,68 +7896,57 @@
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-uri": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
- "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
"dev": true,
"license": "BSD-3-Clause"
},
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4.9.1"
}
},
"node_modules/fastq": {
"version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
},
"node_modules/favico.js": {
"version": "0.3.10",
- "resolved": "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz",
- "integrity": "sha512-S5KvqAOczRjlyjQPPZPSlUEybBkfBgKosY/pzTIxkvKgigB+DkITvIEI70dxQarbv4PZ+UD77QzquCAcU/6LHQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fb-watchman": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
- "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"bser": "2.1.1"
}
},
"node_modules/fflate": {
"version": "0.8.2",
- "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
- "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
"dev": true,
"license": "MIT"
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flat-cache": "^3.0.4"
},
@@ -9144,14 +7956,11 @@
},
"node_modules/file-saver": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
- "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/filesize": {
"version": "10.1.6",
- "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz",
- "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -9160,8 +7969,6 @@
},
"node_modules/fill-range": {
"version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9173,8 +7980,6 @@
},
"node_modules/finalhandler": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9192,8 +7997,6 @@
},
"node_modules/finalhandler/node_modules/debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9202,15 +8005,11 @@
},
"node_modules/finalhandler/node_modules/ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true,
"license": "MIT"
},
"node_modules/finalhandler/node_modules/on-finished": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9222,9 +8021,8 @@
},
"node_modules/find-cache-dir": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"commondir": "^1.0.1",
"make-dir": "^2.0.0",
@@ -9236,8 +8034,6 @@
},
"node_modules/find-replace": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
- "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9249,9 +8045,8 @@
},
"node_modules/find-up": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -9262,8 +8057,6 @@
},
"node_modules/flat": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true,
"license": "BSD-3-Clause",
"bin": {
@@ -9272,8 +8065,6 @@
},
"node_modules/flat-cache": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9287,25 +8078,21 @@
},
"node_modules/flatted": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
- "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
"dev": true,
"license": "ISC"
},
"node_modules/flow-parser": {
"version": "0.211.0",
- "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.211.0.tgz",
- "integrity": "sha512-Ftqkqisn4MA8u+1I7KGYz35y/RtLsRETsK4qrH6KkDUjxnC4mgq3CcXbckHpGyfTErqMyVhJnlJ56feEn9Cn7A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/flow-remove-types": {
"version": "2.211.0",
- "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.211.0.tgz",
- "integrity": "sha512-R5NA46R8/2UTbRnl2vwcZk1MyASKh60sXUM/ekMBgu/lIgAhMCQo8PMpqNEAe/Wn2Sr0siourTb8dbW/6e9aPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flow-parser": "^0.211.0",
"pirates": "^3.0.2",
@@ -9321,9 +8108,8 @@
},
"node_modules/flow-remove-types/node_modules/pirates": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-3.0.2.tgz",
- "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"node-modules-regexp": "^1.0.0"
},
@@ -9333,8 +8119,6 @@
},
"node_modules/focus-trap": {
"version": "7.6.2",
- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.2.tgz",
- "integrity": "sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9343,8 +8127,6 @@
},
"node_modules/focus-trap-vue": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/focus-trap-vue/-/focus-trap-vue-4.0.3.tgz",
- "integrity": "sha512-cIX5rybkCAlNZ4IHYJ3nCFIsipDDljJHHjtTO2IgYWkVYg7X9ipUVdab3HzYp88kmHgMwjcB71LYnXRRsF6ZqQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -9354,8 +8136,6 @@
},
"node_modules/follow-redirects": {
"version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"dev": true,
"funding": [
{
@@ -9375,8 +8155,6 @@
},
"node_modules/foreground-child": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -9392,8 +8170,6 @@
},
"node_modules/foreground-child/node_modules/signal-exit": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
"license": "ISC",
"engines": {
@@ -9405,9 +8181,8 @@
},
"node_modules/form-data": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -9419,8 +8194,6 @@
},
"node_modules/fraction.js": {
"version": "4.3.7",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
- "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9433,9 +8206,8 @@
},
"node_modules/fs-extra": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
@@ -9447,16 +8219,13 @@
},
"node_modules/fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/fsevents": {
"version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
- "hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -9467,35 +8236,30 @@
},
"node_modules/function-bind": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/get-caller-file": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-intrinsic": {
"version": "1.2.7",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
- "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
"dev": true,
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -9518,17 +8282,14 @@
},
"node_modules/get-package-type": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/get-port": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
- "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9540,8 +8301,6 @@
},
"node_modules/get-proto": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"dev": true,
"dependencies": {
"dunder-proto": "^1.0.1",
@@ -9553,9 +8312,8 @@
},
"node_modules/get-stream": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -9565,8 +8323,6 @@
},
"node_modules/gettext-extractor": {
"version": "3.8.0",
- "resolved": "https://registry.npmjs.org/gettext-extractor/-/gettext-extractor-3.8.0.tgz",
- "integrity": "sha512-i/3mDQufQoJd2/EKm/B+VlaYrt3yGjVfLZu8DQpESKH29klNiW6z2S89FVCIEB85bDNgtGCeM/3A/yR1njr/Lw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9584,22 +8340,17 @@
},
"node_modules/gettext-extractor/node_modules/parse5": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true,
"license": "MIT"
},
"node_modules/gettext-extractor/node_modules/pofile": {
"version": "1.0.11",
- "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.11.tgz",
- "integrity": "sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg==",
"dev": true
},
"node_modules/glob": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -9617,9 +8368,8 @@
},
"node_modules/glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -9629,14 +8379,11 @@
},
"node_modules/glob-to-regexp": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/global-modules": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
- "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9648,8 +8395,6 @@
},
"node_modules/global-prefix": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9663,8 +8408,6 @@
},
"node_modules/global-prefix/node_modules/which": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -9676,8 +8419,6 @@
},
"node_modules/globals": {
"version": "15.13.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz",
- "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9689,8 +8430,6 @@
},
"node_modules/globby": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9710,15 +8449,11 @@
},
"node_modules/globjoin": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
- "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
"dev": true,
"license": "MIT"
},
"node_modules/gopd": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -9729,27 +8464,21 @@
},
"node_modules/graceful-fs": {
"version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/graphemer": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true,
"license": "MIT"
},
"node_modules/growly": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/gzip-size": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
- "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9764,8 +8493,6 @@
},
"node_modules/hard-rejection": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9774,9 +8501,8 @@
},
"node_modules/has": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.1"
},
@@ -9786,8 +8512,6 @@
},
"node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9796,8 +8520,6 @@
},
"node_modules/has-symbols": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -9808,9 +8530,8 @@
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"has-symbols": "^1.0.3"
@@ -9824,15 +8545,11 @@
},
"node_modules/hash-sum": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
- "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
"dev": true,
"license": "MIT"
},
"node_modules/hasown": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.2"
@@ -9843,17 +8560,14 @@
},
"node_modules/highlight.js": {
"version": "10.5.0",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.5.0.tgz",
- "integrity": "sha512-xTmvd9HiIHR6L53TMC7TKolEj65zG1XU+Onr8oi86mYa+nLcIbxTTWkpW7CsEwv/vK7u1zb8alZIMLDqqN6KTw==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": "*"
}
},
"node_modules/hosted-git-info": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -9865,8 +8579,6 @@
},
"node_modules/hosted-git-info/node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -9878,16 +8590,13 @@
},
"node_modules/hosted-git-info/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true,
"license": "ISC"
},
"node_modules/html-encoding-sniffer": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
- "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-encoding": "^2.0.0"
},
@@ -9897,14 +8606,11 @@
},
"node_modules/html-escaper": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/html-tags": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
- "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9916,9 +8622,8 @@
},
"node_modules/html2canvas": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
- "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"css-line-break": "^2.1.0",
@@ -9930,8 +8635,6 @@
},
"node_modules/htmlparser2": {
"version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
"dev": true,
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
@@ -9940,6 +8643,7 @@
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
@@ -9949,8 +8653,6 @@
},
"node_modules/http-errors": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9966,8 +8668,6 @@
},
"node_modules/http-errors/node_modules/statuses": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9976,9 +8676,8 @@
},
"node_modules/http-proxy-agent": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@tootallnate/once": "2",
"agent-base": "6",
@@ -9990,9 +8689,8 @@
},
"node_modules/https-proxy-agent": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "6",
"debug": "4"
@@ -10003,18 +8701,16 @@
},
"node_modules/human-signals": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10.17.0"
}
},
"node_modules/iconv-lite": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
@@ -10024,9 +8720,8 @@
},
"node_modules/icss-utils": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
- "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^10 || ^12 || >= 14"
},
@@ -10036,8 +8731,6 @@
},
"node_modules/ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"dev": true,
"funding": [
{
@@ -10052,12 +8745,11 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/ignore": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10066,21 +8758,18 @@
},
"node_modules/immediate": {
"version": "3.0.6",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/immutable": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/import-fresh": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -10094,8 +8783,6 @@
},
"node_modules/import-lazy": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
- "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10104,9 +8791,8 @@
},
"node_modules/import-local": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pkg-dir": "^4.2.0",
"resolve-cwd": "^3.0.0"
@@ -10123,9 +8809,8 @@
},
"node_modules/import-local/node_modules/pkg-dir": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^4.0.0"
},
@@ -10135,9 +8820,8 @@
},
"node_modules/imurmurhash": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
@@ -10150,9 +8834,8 @@
},
"node_modules/inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -10160,28 +8843,23 @@
},
"node_modules/inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/ini": {
"version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true,
"license": "ISC"
},
"node_modules/is-arrayish": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-binary-path": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -10191,15 +8869,13 @@
},
"node_modules/is-buffer": {
"version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-core-module": {
"version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
- "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has": "^1.0.3"
},
@@ -10209,9 +8885,8 @@
},
"node_modules/is-docker": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
@@ -10224,9 +8899,8 @@
},
"node_modules/is-expression": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
- "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"acorn": "^7.1.1",
@@ -10235,36 +8909,32 @@
},
"node_modules/is-extglob": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-generator-fn": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -10274,8 +8944,6 @@
},
"node_modules/is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10284,17 +8952,14 @@
},
"node_modules/is-path-inside": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-plain-obj": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10303,9 +8968,8 @@
},
"node_modules/is-plain-object": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.1"
},
@@ -10315,22 +8979,19 @@
},
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-promise": {
"version": "2.2.2",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
- "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/is-regex": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
- "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"call-bound": "^1.0.2",
@@ -10347,9 +9008,8 @@
},
"node_modules/is-stream": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -10359,9 +9019,8 @@
},
"node_modules/is-wsl": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-docker": "^2.0.0"
},
@@ -10371,39 +9030,34 @@
},
"node_modules/isarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/isobject": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/istanbul-lib-coverage": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
- "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=8"
}
},
"node_modules/istanbul-lib-instrument": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz",
- "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/core": "^7.12.3",
"@babel/parser": "^7.14.7",
@@ -10417,9 +9071,8 @@
},
"node_modules/istanbul-lib-report": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
- "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"istanbul-lib-coverage": "^3.0.0",
"make-dir": "^4.0.0",
@@ -10431,9 +9084,8 @@
},
"node_modules/istanbul-lib-report/node_modules/make-dir": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
- "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver": "^7.5.3"
},
@@ -10446,9 +9098,8 @@
},
"node_modules/istanbul-lib-report/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -10458,9 +9109,8 @@
},
"node_modules/istanbul-lib-source-maps": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"debug": "^4.1.1",
"istanbul-lib-coverage": "^3.0.0",
@@ -10472,9 +9122,8 @@
},
"node_modules/istanbul-reports": {
"version": "3.1.6",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
- "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"html-escaper": "^2.0.0",
"istanbul-lib-report": "^3.0.0"
@@ -10485,8 +9134,6 @@
},
"node_modules/jackspeak": {
"version": "3.4.0",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
- "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
@@ -10504,9 +9151,8 @@
},
"node_modules/jest": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
- "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -10530,9 +9176,8 @@
},
"node_modules/jest-changed-files": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
- "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"execa": "^5.0.0",
"jest-util": "^29.7.0",
@@ -10544,9 +9189,8 @@
},
"node_modules/jest-circus": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
- "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/expect": "^29.7.0",
@@ -10575,9 +9219,8 @@
},
"node_modules/jest-cli": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
- "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/test-result": "^29.7.0",
@@ -10608,9 +9251,8 @@
},
"node_modules/jest-config": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
- "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
"@jest/test-sequencer": "^29.7.0",
@@ -10653,9 +9295,8 @@
},
"node_modules/jest-diff": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
- "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"diff-sequences": "^29.6.3",
@@ -10668,9 +9309,8 @@
},
"node_modules/jest-docblock": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
- "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"detect-newline": "^3.0.0"
},
@@ -10680,9 +9320,8 @@
},
"node_modules/jest-each": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
- "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"chalk": "^4.0.0",
@@ -10696,9 +9335,8 @@
},
"node_modules/jest-environment-jsdom": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz",
- "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/fake-timers": "^29.7.0",
@@ -10723,9 +9361,8 @@
},
"node_modules/jest-environment-node": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
- "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/fake-timers": "^29.7.0",
@@ -10740,18 +9377,16 @@
},
"node_modules/jest-get-type": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
- "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-haste-map": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
- "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/graceful-fs": "^4.1.3",
@@ -10774,9 +9409,8 @@
},
"node_modules/jest-haste-map/node_modules/jest-worker": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"jest-util": "^29.7.0",
@@ -10789,9 +9423,8 @@
},
"node_modules/jest-junit": {
"version": "16.0.0",
- "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-16.0.0.tgz",
- "integrity": "sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"mkdirp": "^1.0.4",
"strip-ansi": "^6.0.1",
@@ -10804,9 +9437,8 @@
},
"node_modules/jest-leak-detector": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
- "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jest-get-type": "^29.6.3",
"pretty-format": "^29.7.0"
@@ -10817,9 +9449,8 @@
},
"node_modules/jest-matcher-utils": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
- "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"jest-diff": "^29.7.0",
@@ -10832,9 +9463,8 @@
},
"node_modules/jest-message-util": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
- "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.12.13",
"@jest/types": "^29.6.3",
@@ -10852,9 +9482,8 @@
},
"node_modules/jest-mock": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
- "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -10866,9 +9495,8 @@
},
"node_modules/jest-pnp-resolver": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -10883,18 +9511,16 @@
},
"node_modules/jest-regex-util": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
- "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
- "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
@@ -10912,9 +9538,8 @@
},
"node_modules/jest-resolve-dependencies": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
- "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jest-regex-util": "^29.6.3",
"jest-snapshot": "^29.7.0"
@@ -10925,9 +9550,8 @@
},
"node_modules/jest-runner": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
- "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
"@jest/environment": "^29.7.0",
@@ -10957,9 +9581,8 @@
},
"node_modules/jest-runner/node_modules/jest-worker": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"jest-util": "^29.7.0",
@@ -10972,9 +9595,8 @@
},
"node_modules/jest-runner/node_modules/source-map-support": {
"version": "0.5.13",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
- "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -10982,9 +9604,8 @@
},
"node_modules/jest-runtime": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
- "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/fake-timers": "^29.7.0",
@@ -11015,9 +9636,8 @@
},
"node_modules/jest-snapshot": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
- "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
"@babel/generator": "^7.7.2",
@@ -11046,9 +9666,8 @@
},
"node_modules/jest-util": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -11063,9 +9682,8 @@
},
"node_modules/jest-validate": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
- "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"camelcase": "^6.2.0",
@@ -11080,9 +9698,8 @@
},
"node_modules/jest-validate/node_modules/camelcase": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -11092,9 +9709,8 @@
},
"node_modules/jest-watcher": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
- "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/test-result": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -11111,8 +9727,6 @@
},
"node_modules/jest-worker": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11126,8 +9740,6 @@
},
"node_modules/jiti": {
"version": "1.21.6",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
- "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
"dev": true,
"license": "MIT",
"bin": {
@@ -11136,29 +9748,23 @@
},
"node_modules/jquery": {
"version": "3.5.1",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
- "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/jquery-nestable": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/jquery-nestable/-/jquery-nestable-0.8.0.tgz",
- "integrity": "sha512-YABQy43zhz7NLnZkiTEYDc03/K6kNtX+Ho+bGP2RzIYgiPpHRquxN2Ub1ucoR8dwTz4219rDnDK9djjUUt2NkA==",
"dev": true
},
"node_modules/jquery-ui": {
"version": "1.13.2",
- "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz",
- "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jquery": ">=1.8.0 <4.0.0"
}
},
"node_modules/jquery-ui-timepicker-addon": {
"version": "1.6.3",
- "resolved": "https://registry.npmjs.org/jquery-ui-timepicker-addon/-/jquery-ui-timepicker-addon-1.6.3.tgz",
- "integrity": "sha512-JvZTp1vGN1Ws9tr39VPRBC1/cOVdY/pa6a2mMcAXpEgjrsXc02xBXQthDtQsBXEqR0FbZV+GdXi/c+LDpuyk/A==",
"dev": true,
"engines": {
"node": ">= 0.8.0"
@@ -11166,45 +9772,37 @@
},
"node_modules/jquery-ui-touch-punch": {
"version": "0.2.3",
- "resolved": "https://registry.npmjs.org/jquery-ui-touch-punch/-/jquery-ui-touch-punch-0.2.3.tgz",
- "integrity": "sha512-Q/7aAd+SjbV0SspHO7Kuk96NJIbLwJAS0lD81U1PKcU2T5ZKayXMORH+Y5qvYLuy41xqVQbWimsRKDn1v3oI2Q==",
- "dev": true
+ "dev": true,
+ "license": "Dual licensed under the MIT or GPL Version 2 licenses."
},
"node_modules/jquery.qrcode": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/jquery.qrcode/-/jquery.qrcode-1.0.3.tgz",
- "integrity": "sha512-NGA2IYGIgmAlE3RXk2RPRR2Pj7glBX2oQBhY5L/IH9Pb6ui2GcVqZ4XVQsDX6QoKA1jtyKpoInKmW6Ccg9C/Xw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/jquery.scrollto": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/jquery.scrollto/-/jquery.scrollto-2.1.2.tgz",
- "integrity": "sha512-ONeJ429vq7bdzPcuq12K40+tV+whsp/F5aP3jMJFjLxzsQjr7lSSGPzUU0mUiSlPVNa3Aqowt7jTFxCNhkbPOw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jquery": ">=1.8"
}
},
"node_modules/js-stringify": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
- "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/js-tokens": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true,
"license": "MIT"
},
"node_modules/js-yaml": {
"version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -11215,9 +9813,8 @@
},
"node_modules/jsdom": {
"version": "20.0.3",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
- "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"abab": "^2.0.6",
"acorn": "^8.8.1",
@@ -11260,9 +9857,8 @@
},
"node_modules/jsdom/node_modules/acorn": {
"version": "8.9.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
- "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -11272,8 +9868,6 @@
},
"node_modules/jsesc": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
"dev": true,
"license": "MIT",
"bin": {
@@ -11285,15 +9879,11 @@
},
"node_modules/json-buffer": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true,
"license": "MIT"
},
"node_modules/json-cycle": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.5.0.tgz",
- "integrity": "sha512-GOehvd5PO2FeZ5T4c+RxobeT5a1PiGpF4u9/3+UvrMU4bhnVqzJY7hm39wg8PDCqkU91fWGH8qjWR4bn+wgq9w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11302,34 +9892,28 @@
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-stream-stringify": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.0.1.tgz",
- "integrity": "sha512-vuxs3G1ocFDiAQ/SX0okcZbtqXwgj1g71qE9+vrjJ2EkjKQlEFDAcUNRxRU8O+GekV4v5cM2qXP0Wyt/EMDBiQ==",
"dev": true,
"license": "MIT"
},
"node_modules/json5": {
"version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
+ "license": "MIT",
"bin": {
"json5": "lib/cli.js"
},
@@ -11352,17 +9936,14 @@
},
"node_modules/jsonfile": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
+ "license": "MIT",
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/jspdf": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz",
- "integrity": "sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11380,9 +9961,8 @@
},
"node_modules/jstransformer": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
- "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"is-promise": "^2.0.0",
@@ -11391,9 +9971,8 @@
},
"node_modules/jszip": {
"version": "3.10.1",
- "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
- "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"dev": true,
+ "license": "(MIT OR GPL-3.0-or-later)",
"dependencies": {
"lie": "~3.3.0",
"pako": "~1.0.2",
@@ -11403,8 +9982,6 @@
},
"node_modules/keyv": {
"version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11413,43 +9990,37 @@
},
"node_modules/kind-of": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/kleur": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/known-css-properties": {
"version": "0.29.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz",
- "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==",
"dev": true,
"license": "MIT"
},
"node_modules/leven": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/levn": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -11460,18 +10031,16 @@
},
"node_modules/lie": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
- "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"immediate": "~3.0.5"
}
},
"node_modules/lilconfig": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
- "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
},
@@ -11481,24 +10050,21 @@
},
"node_modules/lines-and-columns": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/loader-runner": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.11.5"
}
},
"node_modules/loader-utils": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
- "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -11510,9 +10076,8 @@
},
"node_modules/locate-path": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -11527,60 +10092,46 @@
},
"node_modules/lodash-es": {
"version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.camelcase": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"dev": true,
"license": "MIT"
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"dev": true,
"license": "MIT"
},
"node_modules/lodash.memoize": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.merge": {
"version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.truncate": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
"dev": true,
"license": "MIT"
},
"node_modules/lodash.unionby": {
"version": "4.8.0",
- "resolved": "https://registry.npmjs.org/lodash.unionby/-/lodash.unionby-4.8.0.tgz",
- "integrity": "sha512-e60kn4GJIunNkw6v9MxRnUuLYI/Tyuanch7ozoCtk/1irJTYBj+qNTxr5B3qVflmJhwStJBv387Cb+9VOfABMg==",
"dev": true,
"license": "MIT"
},
"node_modules/lodash.uniq": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lru-cache": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -11589,8 +10140,6 @@
},
"node_modules/magic-string": {
"version": "0.30.11",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
- "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
@@ -11598,9 +10147,8 @@
},
"node_modules/make-dir": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pify": "^4.0.1",
"semver": "^5.6.0"
@@ -11611,26 +10159,22 @@
},
"node_modules/make-dir/node_modules/semver": {
"version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/makeerror": {
"version": "1.0.12",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
- "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"tmpl": "1.0.5"
}
},
"node_modules/map-obj": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11642,9 +10186,8 @@
},
"node_modules/marked": {
"version": "4.0.12",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz",
- "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
@@ -11652,10 +10195,15 @@
"node": ">= 12"
}
},
+ "node_modules/material-colors": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
+ "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/math-intrinsics": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -11663,8 +10211,6 @@
},
"node_modules/mathml-tag-names": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
- "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
"dev": true,
"license": "MIT",
"funding": {
@@ -11674,9 +10220,8 @@
},
"node_modules/md5": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
- "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
@@ -11685,8 +10230,6 @@
},
"node_modules/media-typer": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11695,8 +10238,6 @@
},
"node_modules/meow": {
"version": "10.1.5",
- "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz",
- "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11722,8 +10263,6 @@
},
"node_modules/meow/node_modules/type-fest": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -11735,8 +10274,6 @@
},
"node_modules/meow/node_modules/yargs-parser": {
"version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
"license": "ISC",
"engines": {
@@ -11745,23 +10282,19 @@
},
"node_modules/merge-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/merge2": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/micromatch": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11774,18 +10307,16 @@
},
"node_modules/mime-db": {
"version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -11795,17 +10326,14 @@
},
"node_modules/mimic-fn": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/min-indent": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11814,8 +10342,6 @@
},
"node_modules/mini-css-extract-plugin": {
"version": "2.9.2",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz",
- "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11835,9 +10361,8 @@
},
"node_modules/minimatch": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -11847,17 +10372,14 @@
},
"node_modules/minimist": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/minimist-options": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11871,16 +10393,13 @@
},
"node_modules/mitt": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
- "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
"dev": true,
"license": "MIT"
},
"node_modules/mkdirp": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
+ "license": "MIT",
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -11890,23 +10409,19 @@
},
"node_modules/moment": {
"version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/mp3tag.js": {
"version": "3.7.1",
- "resolved": "https://registry.npmjs.org/mp3tag.js/-/mp3tag.js-3.7.1.tgz",
- "integrity": "sha512-T/PcQ04526J6pez11Z8hkfFkYGyy7lqoOZMCA7PtTG0JBLfkuuc5H1KCled9CwrilqtfXBOD6Q3e1+cxItIocw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/mrmime": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
- "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11915,23 +10430,19 @@
},
"node_modules/ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/multiselect": {
"version": "0.9.12",
- "resolved": "https://registry.npmjs.org/multiselect/-/multiselect-0.9.12.tgz",
- "integrity": "sha512-JCuFC288lp9m5xNlxsgX10dhZZv+5lIQQt4kM4H8uLysbiMJTYQBi0LuYguRunCvlXlGjFvH8O/YpL8x2lu9EA==",
"dev": true,
+ "license": "WTFPL",
"dependencies": {
"jquery": ">= 1.7.1"
}
},
"node_modules/nanoid": {
"version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
@@ -11948,14 +10459,11 @@
},
"node_modules/natural-compare": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/negotiator": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11964,30 +10472,26 @@
},
"node_modules/neo-async": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-int64": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-modules-regexp": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
- "integrity": "sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/node-notifier": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz",
- "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"growly": "^1.3.0",
"is-wsl": "^2.2.0",
@@ -11999,15 +10503,11 @@
},
"node_modules/node-releases": {
"version": "2.0.19",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
"dev": true,
"license": "MIT"
},
"node_modules/normalize-package-data": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -12022,27 +10522,24 @@
},
"node_modules/normalize-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/normalize-range": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/npm-run-path": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.0.0"
},
@@ -12052,9 +10549,8 @@
},
"node_modules/nth-check": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0"
},
@@ -12064,23 +10560,19 @@
},
"node_modules/nwsapi": {
"version": "2.2.6",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.6.tgz",
- "integrity": "sha512-vSZ4miHQ4FojLjmz2+ux4B0/XA16jfwt/LBzIUftDpRd8tujHFkXjMyLwjS08fIZCzesj2z7gJukOKJwqebJAQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/object-assign": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-inspect": {
"version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12092,8 +10584,6 @@
},
"node_modules/on-finished": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12105,18 +10595,16 @@
},
"node_modules/once": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/onetime": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -12129,8 +10617,6 @@
},
"node_modules/open": {
"version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12147,8 +10633,6 @@
},
"node_modules/opener": {
"version": "1.5.2",
- "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
- "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true,
"license": "(WTFPL OR MIT)",
"bin": {
@@ -12157,9 +10641,8 @@
},
"node_modules/optionator": {
"version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
@@ -12174,9 +10657,8 @@
},
"node_modules/p-limit": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -12189,9 +10671,8 @@
},
"node_modules/p-locate": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -12201,9 +10682,8 @@
},
"node_modules/p-locate/node_modules/p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -12216,24 +10696,21 @@
},
"node_modules/p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/pako": {
"version": "1.0.11",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
+ "dev": true,
+ "license": "(MIT AND Zlib)"
},
"node_modules/parent-module": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
@@ -12243,9 +10720,8 @@
},
"node_modules/parse-json": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
@@ -12261,15 +10737,13 @@
},
"node_modules/parse-srcset": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
- "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/parse5": {
"version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"entities": "^4.4.0"
},
@@ -12279,9 +10753,8 @@
},
"node_modules/parse5-htmlparser2-tree-adapter": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"domhandler": "^5.0.2",
"parse5": "^7.0.0"
@@ -12292,8 +10765,6 @@
},
"node_modules/parseurl": {
"version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12302,48 +10773,40 @@
},
"node_modules/path-browserify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
"dev": true,
"license": "MIT"
},
"node_modules/path-exists": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/path-key": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/path-parse": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/path-scurry": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
@@ -12359,8 +10822,6 @@
},
"node_modules/path-scurry/node_modules/lru-cache": {
"version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
"dev": true,
"license": "ISC",
"engines": {
@@ -12369,8 +10830,6 @@
},
"node_modules/path-scurry/node_modules/minipass": {
"version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
@@ -12379,17 +10838,14 @@
},
"node_modules/path-type": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/pdfjs-dist": {
"version": "2.16.105",
- "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.16.105.tgz",
- "integrity": "sha512-J4dn41spsAwUxCpEoVf6GVoz908IAA3mYiLmNxg8J9kfRXc2jxpbUepcP0ocp0alVNLFthTAM8DZ1RaHh8sU0A==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -12407,22 +10863,18 @@
},
"node_modules/performance-now": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/picocolors": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -12432,17 +10884,14 @@
},
"node_modules/pify": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/pinia": {
"version": "2.2.8",
- "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.8.tgz",
- "integrity": "sha512-NRTYy2g+kju5tBRe0oNlriZIbMNvma8ZJrpHsp3qudyiMEA8jMmPPKQ2QMHg0Oc4BkUyQYWagACabrwriCK9HQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12468,8 +10917,6 @@
},
"node_modules/pinia/node_modules/vue-demi": {
"version": "0.14.10",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
- "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -12495,18 +10942,16 @@
},
"node_modules/pirates": {
"version": "4.0.6",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
- "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/pkg-dir": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^3.0.0"
},
@@ -12516,9 +10961,8 @@
},
"node_modules/pkg-dir/node_modules/find-up": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^3.0.0"
},
@@ -12528,9 +10972,8 @@
},
"node_modules/pkg-dir/node_modules/locate-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
@@ -12541,9 +10984,8 @@
},
"node_modules/pkg-dir/node_modules/p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -12556,9 +10998,8 @@
},
"node_modules/pkg-dir/node_modules/p-locate": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.0.0"
},
@@ -12568,18 +11009,16 @@
},
"node_modules/pkg-dir/node_modules/path-exists": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/playwright": {
"version": "1.38.1",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.38.1.tgz",
- "integrity": "sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"playwright-core": "1.38.1"
},
@@ -12595,9 +11034,8 @@
},
"node_modules/playwright-core": {
"version": "1.38.1",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.38.1.tgz",
- "integrity": "sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
@@ -12607,14 +11045,11 @@
},
"node_modules/pofile": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.1.4.tgz",
- "integrity": "sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/portal-vue": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-3.0.0.tgz",
- "integrity": "sha512-9eprMxNURLx6ijbcgkWjYNcTWJYu/H8QF8nyAeBzOmk9lKCea01BW1hYBeLkgz+AestmPOvznAEOFmNuO4Adjw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12631,8 +11066,6 @@
},
"node_modules/postcss": {
"version": "8.4.49",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
- "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
"funding": [
{
"type": "opencollective",
@@ -12659,8 +11092,6 @@
},
"node_modules/postcss-loader": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz",
- "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12691,15 +11122,11 @@
},
"node_modules/postcss-loader/node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"license": "Python-2.0"
},
"node_modules/postcss-loader/node_modules/cosmiconfig": {
"version": "9.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
- "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12725,8 +11152,6 @@
},
"node_modules/postcss-loader/node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12738,15 +11163,11 @@
},
"node_modules/postcss-media-query-parser": {
"version": "0.2.3",
- "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
- "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
"dev": true,
"license": "MIT"
},
"node_modules/postcss-modules-extract-imports": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
- "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
"dev": true,
"license": "ISC",
"engines": {
@@ -12758,8 +11179,6 @@
},
"node_modules/postcss-modules-local-by-default": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz",
- "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12776,8 +11195,6 @@
},
"node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12790,8 +11207,6 @@
},
"node_modules/postcss-modules-scope": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
- "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -12806,8 +11221,6 @@
},
"node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12820,9 +11233,8 @@
},
"node_modules/postcss-modules-values": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
- "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"icss-utils": "^5.0.0"
},
@@ -12835,15 +11247,11 @@
},
"node_modules/postcss-resolve-nested-selector": {
"version": "0.1.6",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz",
- "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==",
"dev": true,
"license": "MIT"
},
"node_modules/postcss-safe-parser": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
- "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12859,8 +11267,6 @@
},
"node_modules/postcss-scss": {
"version": "4.0.9",
- "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
- "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
"dev": true,
"funding": [
{
@@ -12876,6 +11282,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"engines": {
"node": ">=12.0"
},
@@ -12885,8 +11292,6 @@
},
"node_modules/postcss-selector-parser": {
"version": "6.1.2",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
- "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12899,24 +11304,21 @@
},
"node_modules/postcss-value-parser": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/prelude-ls": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/pretty-format": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
@@ -12928,9 +11330,8 @@
},
"node_modules/pretty-format/node_modules/ansi-styles": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -12940,15 +11341,13 @@
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/promise": {
"version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"asap": "~2.0.3"
@@ -12956,9 +11355,8 @@
},
"node_modules/prompts": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"kleur": "^3.0.3",
"sisteransi": "^1.0.5"
@@ -12969,21 +11367,16 @@
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true,
"license": "MIT"
},
"node_modules/psl": {
"version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pug": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz",
- "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -13000,8 +11393,6 @@
},
"node_modules/pug-attrs": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
- "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -13013,8 +11404,6 @@
},
"node_modules/pug-code-gen": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz",
- "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -13031,17 +11420,14 @@
},
"node_modules/pug-error": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz",
- "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/pug-filters": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
- "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"constantinople": "^4.0.1",
@@ -13053,9 +11439,8 @@
},
"node_modules/pug-lexer": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
- "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"character-parser": "^2.2.0",
@@ -13065,9 +11450,8 @@
},
"node_modules/pug-linker": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
- "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"pug-error": "^2.0.0",
@@ -13076,9 +11460,8 @@
},
"node_modules/pug-load": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
- "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"object-assign": "^4.1.1",
@@ -13087,9 +11470,8 @@
},
"node_modules/pug-parser": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
- "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"pug-error": "^2.0.0",
@@ -13098,17 +11480,14 @@
},
"node_modules/pug-runtime": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
- "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/pug-strip-comments": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
- "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"pug-error": "^2.0.0"
@@ -13116,24 +11495,20 @@
},
"node_modules/pug-walk": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
- "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/punycode": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/pure-rand": {
"version": "6.0.4",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz",
- "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==",
"dev": true,
"funding": [
{
@@ -13144,12 +11519,11 @@
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/qs": {
"version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -13164,14 +11538,11 @@
},
"node_modules/querystringify": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/queue-microtask": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
"funding": [
{
@@ -13186,12 +11557,11 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/quick-lru": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -13203,9 +11573,8 @@
},
"node_modules/raf": {
"version": "3.4.1",
- "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
- "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"performance-now": "^2.1.0"
@@ -13213,17 +11582,14 @@
},
"node_modules/randombytes": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "^5.1.0"
}
},
"node_modules/raw-body": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13238,8 +11604,6 @@
},
"node_modules/raw-body/node_modules/iconv-lite": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13251,9 +11615,8 @@
},
"node_modules/raw-loader": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
- "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"loader-utils": "^2.0.0",
"schema-utils": "^3.0.0"
@@ -13271,9 +11634,8 @@
},
"node_modules/raw-loader/node_modules/schema-utils": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
@@ -13289,14 +11651,11 @@
},
"node_modules/react-is": {
"version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/read-pkg": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz",
- "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13314,8 +11673,6 @@
},
"node_modules/read-pkg-up": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz",
- "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13332,8 +11689,6 @@
},
"node_modules/read-pkg-up/node_modules/find-up": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13349,8 +11704,6 @@
},
"node_modules/read-pkg-up/node_modules/locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13365,8 +11718,6 @@
},
"node_modules/read-pkg-up/node_modules/p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13381,8 +11732,6 @@
},
"node_modules/read-pkg-up/node_modules/type-fest": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -13394,8 +11743,6 @@
},
"node_modules/read-pkg/node_modules/type-fest": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -13407,9 +11754,8 @@
},
"node_modules/readable-stream": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -13422,9 +11768,8 @@
},
"node_modules/readdirp": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -13434,8 +11779,6 @@
},
"node_modules/redent": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
- "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13451,8 +11794,6 @@
},
"node_modules/redent/node_modules/indent-string": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
- "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -13464,15 +11805,11 @@
},
"node_modules/regenerate": {
"version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
"dev": true,
"license": "MIT"
},
"node_modules/regenerate-unicode-properties": {
"version": "10.2.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
- "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13484,15 +11821,12 @@
},
"node_modules/regenerator-runtime": {
"version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/regenerator-transform": {
"version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13501,8 +11835,6 @@
},
"node_modules/regexpu-core": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
- "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13519,15 +11851,11 @@
},
"node_modules/regjsgen": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
"dev": true,
"license": "MIT"
},
"node_modules/regjsparser": {
"version": "0.12.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz",
- "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -13539,33 +11867,29 @@
},
"node_modules/require-directory": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/require-from-string": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/requires-port": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/resolve": {
"version": "1.22.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-core-module": "^2.11.0",
"path-parse": "^1.0.7",
@@ -13580,9 +11904,8 @@
},
"node_modules/resolve-cwd": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-from": "^5.0.0"
},
@@ -13592,36 +11915,32 @@
},
"node_modules/resolve-cwd/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/resolve-from": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/resolve.exports": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/reusify": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -13629,9 +11948,8 @@
},
"node_modules/rgbcolor": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
- "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
"dev": true,
+ "license": "MIT OR SEE LICENSE IN FEEL-FREE.md",
"optional": true,
"engines": {
"node": ">= 0.8.15"
@@ -13639,9 +11957,8 @@
},
"node_modules/rimraf": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -13654,8 +11971,6 @@
},
"node_modules/rslog": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/rslog/-/rslog-1.2.3.tgz",
- "integrity": "sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==",
"dev": true,
"engines": {
"node": ">=14.17.6"
@@ -13663,8 +11978,6 @@
},
"node_modules/run-parallel": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [
{
@@ -13680,26 +11993,23 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
"node_modules/safe-buffer": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/safer-buffer": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/sanitize-html": {
"version": "2.15.0",
- "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.15.0.tgz",
- "integrity": "sha512-wIjst57vJGpLyBP8ioUbg6ThwJie5SuSIjHxJg53v5Fg+kUK+AXlb7bK3RNXpp315MvwM+0OBGCV6h5pPHsVhA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13713,18 +12023,16 @@
},
"node_modules/sanitize-html/node_modules/is-plain-object": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sass": {
"version": "1.69.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.0.tgz",
- "integrity": "sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -13739,8 +12047,6 @@
},
"node_modules/sass-loader": {
"version": "16.0.4",
- "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.4.tgz",
- "integrity": "sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13780,9 +12086,8 @@
},
"node_modules/saxes": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
- "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"xmlchars": "^2.2.0"
},
@@ -13792,8 +12097,6 @@
},
"node_modules/schema-utils": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz",
- "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13812,8 +12115,6 @@
},
"node_modules/schema-utils/node_modules/ajv": {
"version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13829,8 +12130,6 @@
},
"node_modules/schema-utils/node_modules/ajv-keywords": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13842,21 +12141,16 @@
},
"node_modules/schema-utils/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
"license": "MIT"
},
"node_modules/select2": {
"version": "4.0.13",
- "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz",
- "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/semver": {
"version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
"license": "ISC",
"bin": {
@@ -13868,8 +12162,6 @@
},
"node_modules/serialize-javascript": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
- "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -13878,22 +12170,18 @@
},
"node_modules/setimmediate": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/setprototypeof": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"dev": true,
"license": "ISC"
},
"node_modules/shallow-clone": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"kind-of": "^6.0.2"
},
@@ -13903,9 +12191,8 @@
},
"node_modules/shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -13915,23 +12202,19 @@
},
"node_modules/shebang-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/shellwords": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/side-channel": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13950,8 +12233,6 @@
},
"node_modules/side-channel-list": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13967,8 +12248,6 @@
},
"node_modules/side-channel-map": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13986,8 +12265,6 @@
},
"node_modules/side-channel-weakmap": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14006,14 +12283,11 @@
},
"node_modules/signal-exit": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/sirv": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
- "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14027,23 +12301,19 @@
},
"node_modules/sisteransi": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/slash": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/slice-ansi": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14060,8 +12330,6 @@
},
"node_modules/socket.io": {
"version": "4.8.1",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz",
- "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14079,8 +12347,6 @@
},
"node_modules/socket.io-adapter": {
"version": "2.5.5",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
- "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14090,8 +12356,6 @@
},
"node_modules/socket.io-adapter/node_modules/ws": {
"version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14112,8 +12376,6 @@
},
"node_modules/socket.io-parser": {
"version": "4.2.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
- "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14126,23 +12388,18 @@
},
"node_modules/sortablejs": {
"version": "1.14.0",
- "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz",
- "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==",
"license": "MIT"
},
"node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -14150,9 +12407,8 @@
},
"node_modules/source-map-support": {
"version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -14160,8 +12416,6 @@
},
"node_modules/spdx-correct": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -14171,15 +12425,11 @@
},
"node_modules/spdx-exceptions": {
"version": "2.5.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
- "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
"dev": true,
"license": "CC-BY-3.0"
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14189,22 +12439,18 @@
},
"node_modules/spdx-license-ids": {
"version": "3.0.20",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
- "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
"dev": true,
"license": "CC0-1.0"
},
"node_modules/sprintf-js": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/stack-utils": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
- "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^2.0.0"
},
@@ -14214,18 +12460,16 @@
},
"node_modules/stack-utils/node_modules/escape-string-regexp": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/stackblur-canvas": {
"version": "2.6.0",
- "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.6.0.tgz",
- "integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.1.14"
@@ -14233,8 +12477,6 @@
},
"node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14243,9 +12485,8 @@
},
"node_modules/stream-browserify": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
- "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "~2.0.4",
"readable-stream": "^3.5.0"
@@ -14253,9 +12494,8 @@
},
"node_modules/stream-browserify/node_modules/readable-stream": {
"version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -14267,18 +12507,16 @@
},
"node_modules/string_decoder": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/string-length": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"char-regex": "^1.0.2",
"strip-ansi": "^6.0.0"
@@ -14289,9 +12527,8 @@
},
"node_modules/string-width": {
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -14304,8 +12541,6 @@
"node_modules/string-width-cjs": {
"name": "string-width",
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14319,9 +12554,8 @@
},
"node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -14332,8 +12566,6 @@
"node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14345,26 +12577,22 @@
},
"node_modules/strip-bom": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/strip-final-newline": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/strip-indent": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
- "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14379,9 +12607,8 @@
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -14391,8 +12618,6 @@
},
"node_modules/style-loader": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz",
- "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14408,15 +12633,11 @@
},
"node_modules/style-search": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
- "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
"dev": true,
"license": "ISC"
},
"node_modules/stylelint": {
"version": "15.11.0",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz",
- "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14474,8 +12695,6 @@
},
"node_modules/stylelint-config-recommended": {
"version": "13.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz",
- "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14487,8 +12706,6 @@
},
"node_modules/stylelint-config-recommended-scss": {
"version": "13.1.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.1.0.tgz",
- "integrity": "sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14508,8 +12725,6 @@
},
"node_modules/stylelint-config-standard": {
"version": "34.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz",
- "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14524,8 +12739,6 @@
},
"node_modules/stylelint-config-standard-scss": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-11.1.0.tgz",
- "integrity": "sha512-5gnBgeNTgRVdchMwiFQPuBOtj9QefYtfXiddrOMJA2pI22zxt6ddI2s+e5Oh7/6QYl7QLJujGnaUR5YyGq72ow==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14544,8 +12757,6 @@
},
"node_modules/stylelint-formatter-gitlab": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stylelint-formatter-gitlab/-/stylelint-formatter-gitlab-1.0.2.tgz",
- "integrity": "sha512-Iu5NjHSp/WdhUeICuUKNi6QvpEut5KPwnrx4XU5q1GZEcAvpyqbjBq7yMAEX6850BUza45ARpsfX4yfOcnFWLQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14559,8 +12770,6 @@
},
"node_modules/stylelint-scss": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz",
- "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14576,8 +12785,6 @@
},
"node_modules/stylelint/node_modules/@csstools/selector-specificity": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
- "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
"dev": true,
"funding": [
{
@@ -14599,22 +12806,16 @@
},
"node_modules/stylelint/node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"license": "Python-2.0"
},
"node_modules/stylelint/node_modules/balanced-match": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
- "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
"dev": true,
"license": "MIT"
},
"node_modules/stylelint/node_modules/cosmiconfig": {
"version": "8.3.6",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
- "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14640,8 +12841,6 @@
},
"node_modules/stylelint/node_modules/css-tree": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14654,8 +12853,6 @@
},
"node_modules/stylelint/node_modules/file-entry-cache": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz",
- "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14667,8 +12864,6 @@
},
"node_modules/stylelint/node_modules/is-plain-object": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14677,8 +12872,6 @@
},
"node_modules/stylelint/node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14690,15 +12883,11 @@
},
"node_modules/stylelint/node_modules/mdn-data": {
"version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
"dev": true,
"license": "CC0-1.0"
},
"node_modules/stylelint/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -14707,8 +12896,6 @@
},
"node_modules/stylelint/node_modules/signal-exit": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
"license": "ISC",
"engines": {
@@ -14720,8 +12907,6 @@
},
"node_modules/stylelint/node_modules/write-file-atomic": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
- "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -14734,8 +12919,6 @@
},
"node_modules/supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14750,8 +12933,6 @@
},
"node_modules/supports-hyperlinks": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz",
- "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14767,8 +12948,6 @@
},
"node_modules/supports-hyperlinks/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14780,9 +12959,8 @@
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -14792,9 +12970,8 @@
},
"node_modules/svg-pathdata": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
- "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=12.0.0"
@@ -14802,15 +12979,12 @@
},
"node_modules/svg-tags": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
- "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"dev": true
},
"node_modules/svgo": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz",
- "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@trysound/sax": "0.2.0",
"commander": "^7.2.0",
@@ -14833,9 +13007,8 @@
},
"node_modules/svgo/node_modules/css-tree": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mdn-data": "2.0.30",
"source-map-js": "^1.0.1"
@@ -14846,9 +13019,8 @@
},
"node_modules/svgo/node_modules/csso": {
"version": "5.0.5",
- "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
- "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"css-tree": "~2.2.0"
},
@@ -14859,9 +13031,8 @@
},
"node_modules/svgo/node_modules/csso/node_modules/css-tree": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
- "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mdn-data": "2.0.28",
"source-map-js": "^1.0.1"
@@ -14873,33 +13044,26 @@
},
"node_modules/svgo/node_modules/csso/node_modules/mdn-data": {
"version": "2.0.28",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
- "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
- "dev": true
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/svgo/node_modules/mdn-data": {
"version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/symbol-tree": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/tabbable": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
- "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
"dev": true,
"license": "MIT"
},
"node_modules/table": {
"version": "6.9.0",
- "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
- "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -14915,8 +13079,6 @@
},
"node_modules/table/node_modules/ajv": {
"version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14932,33 +13094,27 @@
},
"node_modules/table/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
"license": "MIT"
},
"node_modules/tablesorter": {
"version": "2.31.3",
- "resolved": "https://registry.npmjs.org/tablesorter/-/tablesorter-2.31.3.tgz",
- "integrity": "sha512-ueEzeKiMajDcCWnUoT1dOeNEaS1OmPh9+8J0O2Sjp3TTijMygH74EA9QNJiNkLJqULyNU0RhbKY26UMUq9iurA==",
"dev": true,
+ "license": "(MIT OR GPL-2.0)",
"dependencies": {
"jquery": ">=1.2.6"
}
},
"node_modules/tapable": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/terser": {
"version": "5.34.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz",
- "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -14976,8 +13132,6 @@
},
"node_modules/terser-webpack-plugin": {
"version": "5.3.14",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
- "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15011,9 +13165,8 @@
},
"node_modules/terser/node_modules/acorn": {
"version": "8.9.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
- "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -15023,15 +13176,13 @@
},
"node_modules/terser/node_modules/commander": {
"version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/test-exclude": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
"glob": "^7.1.4",
@@ -15043,9 +13194,8 @@
},
"node_modules/text-segmentation": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
- "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"utrie": "^1.0.2"
@@ -15053,14 +13203,18 @@
},
"node_modules/text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/tinyglobby": {
"version": "0.2.14",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
- "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15076,8 +13230,6 @@
},
"node_modules/tinyglobby/node_modules/fdir": {
"version": "6.4.5",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
- "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -15091,8 +13243,6 @@
},
"node_modules/tinyglobby/node_modules/picomatch": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15104,14 +13254,11 @@
},
"node_modules/tmpl": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
- "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15123,8 +13270,6 @@
},
"node_modules/toidentifier": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15133,15 +13278,12 @@
},
"node_modules/token-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
- "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/totalist": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
- "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15150,9 +13292,8 @@
},
"node_modules/tough-cookie": {
"version": "4.1.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
- "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -15165,18 +13306,16 @@
},
"node_modules/tough-cookie/node_modules/universalify": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/tr46": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
- "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"punycode": "^2.1.1"
},
@@ -15186,8 +13325,6 @@
},
"node_modules/trim-newlines": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz",
- "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15199,8 +13336,6 @@
},
"node_modules/ts-api-utils": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
- "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15212,8 +13347,6 @@
},
"node_modules/ts-loader": {
"version": "9.5.1",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
- "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15233,40 +13366,34 @@
},
"node_modules/ts-loader/node_modules/source-map": {
"version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">= 8"
}
},
"node_modules/tslib": {
"version": "2.6.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
"dev": true,
"license": "0BSD"
},
"node_modules/turndown": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.0.tgz",
- "integrity": "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@mixmark-io/domino": "^2.2.0"
}
},
"node_modules/turndown-plugin-gfm": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.2.tgz",
- "integrity": "sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/type-check": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -15276,18 +13403,16 @@
},
"node_modules/type-detect": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/type-fest": {
"version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -15297,8 +13422,6 @@
},
"node_modules/type-is": {
"version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15311,8 +13434,6 @@
},
"node_modules/typescript": {
"version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
"devOptional": true,
"license": "Apache-2.0",
"bin": {
@@ -15325,8 +13446,6 @@
},
"node_modules/typescript-eslint": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz",
- "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15352,8 +13471,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz",
- "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15386,8 +13503,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz",
- "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -15415,8 +13530,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz",
- "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15433,8 +13546,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz",
- "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15461,8 +13572,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/types": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz",
- "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15475,8 +13584,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz",
- "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -15504,8 +13611,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz",
- "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15532,8 +13637,6 @@
},
"node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": {
"version": "8.17.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz",
- "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15550,8 +13653,6 @@
},
"node_modules/typescript-eslint/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15560,8 +13661,6 @@
},
"node_modules/typescript-eslint/node_modules/eslint-visitor-keys": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
- "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -15573,8 +13672,6 @@
},
"node_modules/typescript-eslint/node_modules/minimatch": {
"version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -15589,8 +13686,6 @@
},
"node_modules/typical": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
- "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15599,8 +13694,6 @@
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
- "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15609,8 +13702,6 @@
},
"node_modules/unicode-match-property-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15623,8 +13714,6 @@
},
"node_modules/unicode-match-property-value-ecmascript": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
- "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15633,8 +13722,6 @@
},
"node_modules/unicode-property-aliases-ecmascript": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15643,17 +13730,14 @@
},
"node_modules/universalify": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/unpipe": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15662,8 +13746,6 @@
},
"node_modules/update-browserslist-db": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
- "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"dev": true,
"funding": [
{
@@ -15693,18 +13775,16 @@
},
"node_modules/uri-js": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/url-parse": {
"version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
@@ -15712,14 +13792,11 @@
},
"node_modules/util-deprecate": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/utils-merge": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15728,9 +13805,8 @@
},
"node_modules/utrie": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
- "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"base64-arraybuffer": "^1.0.2"
@@ -15738,18 +13814,16 @@
},
"node_modules/uuid": {
"version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"dev": true,
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/v8-to-istanbul": {
"version": "9.1.3",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz",
- "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
"@types/istanbul-lib-coverage": "^2.0.1",
@@ -15761,14 +13835,11 @@
},
"node_modules/v8-to-istanbul/node_modules/convert-source-map": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -15778,14 +13849,11 @@
},
"node_modules/vanilla-colorful": {
"version": "0.7.2",
- "resolved": "https://registry.npmjs.org/vanilla-colorful/-/vanilla-colorful-0.7.2.tgz",
- "integrity": "sha512-z2YZusTFC6KnLERx1cgoIRX2CjPRP0W75N+3CC6gbvdX5Ch47rZkEMGO2Xnf+IEmi3RiFLxS18gayMA27iU7Kg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/vary": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15794,14 +13862,11 @@
},
"node_modules/vlq": {
"version": "0.2.3",
- "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
- "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/void-elements": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
- "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -15811,8 +13876,6 @@
},
"node_modules/vue": {
"version": "3.5.13",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz",
- "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.5.13",
@@ -15830,10 +13893,21 @@
}
}
},
+ "node_modules/vue-color": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/vue-color/-/vue-color-3.2.0.tgz",
+ "integrity": "sha512-pODAZoMnKNNyjf6uimZQlTx7dXAV4YfjOfU21gKxALOki32lTxMnJ/2J4LqpXwIg1TVMjROA/1P/z16u7mIexA==",
+ "dev": true,
+ "dependencies": {
+ "material-colors": "^1.2.6",
+ "tinycolor2": "^1.6.0"
+ },
+ "peerDependencies": {
+ "vue": ">=2.7.0 <4.0.0"
+ }
+ },
"node_modules/vue-dragscroll": {
"version": "4.0.6",
- "resolved": "https://registry.npmjs.org/vue-dragscroll/-/vue-dragscroll-4.0.6.tgz",
- "integrity": "sha512-zW1k58p41yhmFhmg/JxfesUM4Srl0JfXg7xSINqffVGpHJKvnEHMK4QgF6mUVkPMTgibn976fhPYkomcXPvvFA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15842,8 +13916,6 @@
},
"node_modules/vue-eslint-parser": {
"version": "9.4.3",
- "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
- "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15867,9 +13939,8 @@
},
"node_modules/vue-eslint-parser/node_modules/eslint-scope": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
- "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
@@ -15883,9 +13954,8 @@
},
"node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
"version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -15895,17 +13965,14 @@
},
"node_modules/vue-eslint-parser/node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/vue-loader": {
"version": "17.4.2",
- "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.4.2.tgz",
- "integrity": "sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15927,15 +13994,11 @@
},
"node_modules/vue-resizable": {
"version": "2.1.7",
- "resolved": "https://registry.npmjs.org/vue-resizable/-/vue-resizable-2.1.7.tgz",
- "integrity": "sha512-zEbWhRR8iXT8+nt3u8rkfrNpkPNsPkf7HteBh+AlPIsJ7rf9fyNwMqr0Q4FRzIpNIpZD5Zrr4+3+YELU0vc1Iw==",
"dev": true,
"license": "MIT"
},
"node_modules/vue-router": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
- "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15950,8 +14013,6 @@
},
"node_modules/vue-select": {
"version": "4.0.0-beta.6",
- "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-4.0.0-beta.6.tgz",
- "integrity": "sha512-K+zrNBSpwMPhAxYLTCl56gaMrWZGgayoWCLqe5rWwkB8aUbAUh7u6sXjIR7v4ckp2WKC7zEEUY27g6h1MRsIHw==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -15960,8 +14021,6 @@
},
"node_modules/vue3-gettext": {
"version": "3.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/vue3-gettext/-/vue3-gettext-3.0.0-beta.5.tgz",
- "integrity": "sha512-Dn1qZrFgtaKg/9mMMypvQn+lyyHPAAylQBN4kPGqqr8oAMOJGyKg+rCLCcoyuLGLDvPGBgtawOTQ/0dFmGbDrw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15989,15 +14048,11 @@
},
"node_modules/vue3-gettext/node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"license": "Python-2.0"
},
"node_modules/vue3-gettext/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16006,8 +14061,6 @@
},
"node_modules/vue3-gettext/node_modules/cosmiconfig": {
"version": "9.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
- "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16033,8 +14086,6 @@
},
"node_modules/vue3-gettext/node_modules/glob": {
"version": "10.4.1",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
- "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -16056,8 +14107,6 @@
},
"node_modules/vue3-gettext/node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16069,8 +14118,6 @@
},
"node_modules/vue3-gettext/node_modules/minimatch": {
"version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -16085,8 +14132,6 @@
},
"node_modules/vue3-gettext/node_modules/minipass": {
"version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
@@ -16095,15 +14140,11 @@
},
"node_modules/vue3-gettext/node_modules/parse5": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true,
"license": "MIT"
},
"node_modules/vue3-gettext/node_modules/parse5-htmlparser2-tree-adapter": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16112,8 +14153,6 @@
},
"node_modules/vuedraggable": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz",
- "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
"license": "MIT",
"dependencies": {
"sortablejs": "1.14.0"
@@ -16124,8 +14163,6 @@
},
"node_modules/vuex": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
- "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16137,9 +14174,8 @@
},
"node_modules/w3c-xmlserializer": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
- "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"xml-name-validator": "^4.0.0"
},
@@ -16149,17 +14185,14 @@
},
"node_modules/walker": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
- "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"makeerror": "1.0.12"
}
},
"node_modules/watchpack": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
- "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16172,8 +14205,6 @@
},
"node_modules/web-streams-polyfill": {
"version": "3.3.3",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
- "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -16182,17 +14213,14 @@
},
"node_modules/webidl-conversions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
}
},
"node_modules/webpack": {
"version": "5.97.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.0.tgz",
- "integrity": "sha512-CWT8v7ShSfj7tGs4TLRtaOLmOCPWhoKEvp+eA7FVx8Xrjb3XfT0aXdxDItnRZmE8sHcH+a8ayDrJCOjXKxVFfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16238,8 +14266,6 @@
},
"node_modules/webpack-bundle-analyzer": {
"version": "4.10.2",
- "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
- "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16265,8 +14291,6 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/acorn": {
"version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -16278,8 +14302,6 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/ws": {
"version": "7.5.10",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
- "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -16300,8 +14322,6 @@
},
"node_modules/webpack-cli": {
"version": "5.1.4",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
- "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16346,8 +14366,6 @@
},
"node_modules/webpack-cli/node_modules/commander": {
"version": "10.0.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
- "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
"dev": true,
"license": "MIT",
"engines": {
@@ -16356,8 +14374,6 @@
},
"node_modules/webpack-cli/node_modules/interpret": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
- "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -16366,8 +14382,6 @@
},
"node_modules/webpack-cli/node_modules/rechoir": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
- "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16379,9 +14393,8 @@
},
"node_modules/webpack-cli/node_modules/webpack-merge": {
"version": "5.9.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
- "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clone-deep": "^4.0.1",
"wildcard": "^2.0.0"
@@ -16392,8 +14405,6 @@
},
"node_modules/webpack-merge": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz",
- "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16407,9 +14418,8 @@
},
"node_modules/webpack-notifier": {
"version": "1.15.0",
- "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz",
- "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"node-notifier": "^9.0.0",
"strip-ansi": "^6.0.0"
@@ -16425,8 +14435,6 @@
},
"node_modules/webpack/node_modules/acorn": {
"version": "8.14.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
- "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"dev": true,
"license": "MIT",
"bin": {
@@ -16438,8 +14446,6 @@
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16457,18 +14463,16 @@
},
"node_modules/webpack/node_modules/webpack-sources": {
"version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/whatwg-encoding": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
- "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
},
@@ -16478,18 +14482,16 @@
},
"node_modules/whatwg-mimetype": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
- "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
}
},
"node_modules/whatwg-url": {
"version": "11.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
- "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tr46": "^3.0.0",
"webidl-conversions": "^7.0.0"
@@ -16500,9 +14502,8 @@
},
"node_modules/which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -16515,14 +14516,11 @@
},
"node_modules/wildcard": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
- "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/with": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
- "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -16538,9 +14536,8 @@
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -16556,8 +14553,6 @@
"node_modules/wrap-ansi-cjs": {
"name": "wrap-ansi",
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16574,15 +14569,13 @@
},
"node_modules/wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/write-file-atomic": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.7"
@@ -16593,8 +14586,6 @@
},
"node_modules/ws": {
"version": "8.18.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
- "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -16615,46 +14606,39 @@
},
"node_modules/xml": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
- "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/xml-name-validator": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
- "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12"
}
},
"node_modules/xmlchars": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/y18n": {
"version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/yallist": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true,
"license": "ISC"
},
"node_modules/yargs": {
"version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -16670,18 +14654,16 @@
},
"node_modules/yargs-parser": {
"version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/yocto-queue": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
diff --git a/package.json b/package.json
index 6944c9c..d8e5133 100644
--- a/package.json
+++ b/package.json
@@ -117,6 +117,7 @@
"typescript": "^5.7.2",
"typescript-eslint": "^8.17.0",
"vue": "^3.5.13",
+ "vue-color": "^3.0.0",
"vue-dragscroll": "^4.0.6",
"vue-loader": "^17.4.2",
"vue-resizable": "^2.1.7",
diff --git a/public/assets/stylesheets/theme.php b/public/assets/stylesheets/theme.php
new file mode 100644
index 0000000..ba2ce14
--- /dev/null
+++ b/public/assets/stylesheets/theme.php
@@ -0,0 +1,37 @@
+<?php
+require_once __DIR__ . '/../../../lib/bootstrap.php';
+$themes = Theme::getActiveThemes();
+
+header('Content-Type: text/css');
+
+if (isset($themes['light'])) {
+ echo ":root {" . PHP_EOL;
+ $values = $themes['light']['values'] ?? [];
+ foreach ($values as $name => $value) {
+ if ($value !== '') {
+ echo " $name: $value;" . PHP_EOL;
+ }
+ }
+ echo "}" . PHP_EOL;
+}
+
+foreach ($themes as $themeName => $themeData) {
+ if ($themeName === 'high-contrast') {
+ echo "@media (prefers-contrast: more) {" . PHP_EOL;
+ } elseif (in_array($themeName, ['light', 'dark'])) {
+ echo "@media (prefers-color-scheme: $themeName) {" . PHP_EOL;
+ } else {
+ continue;
+ }
+
+ echo " :root {" . PHP_EOL;
+ $values = $themeData['values'] ?? [];
+ foreach ($values as $name => $value) {
+ if ($value !== '') {
+ echo " $name: $value;" . PHP_EOL;
+ }
+ }
+
+ echo " }" . PHP_EOL;
+ echo "}" . PHP_EOL;
+} \ No newline at end of file
diff --git a/resources/assets/javascripts/bootstrap/inline-editing.js b/resources/assets/javascripts/bootstrap/inline-editing.js
deleted file mode 100644
index 8f96f31..0000000
--- a/resources/assets/javascripts/bootstrap/inline-editing.js
+++ /dev/null
@@ -1,48 +0,0 @@
-jQuery(
- function () {
-
- jQuery(document).ready(
- function() {
- var elements = jQuery('[data-inline-editing]');
- for (const element of elements) {
- STUDIP.InlineEditing.init(element);
- }
- }
- );
-
- jQuery(document).on(
- 'dialog-update',
- null,
- function() {
- var elements = jQuery('.ui-dialog [data-inline-editing]');
- for (const element of elements) {
- STUDIP.InlineEditing.init(element);
- }
- }
- );
-
- jQuery(document).on(
- 'click',
- '[data-inline-editing] .edit-button',
- function (event) {
- STUDIP.InlineEditing.activate(event.target);
- }
- );
-
- jQuery(document).on(
- 'click',
- '[data-inline-editing] .save-button',
- function (event) {
- STUDIP.InlineEditing.save(event.target);
- }
- );
-
- jQuery(document).on(
- 'click',
- '[data-inline-editing] .abort-button',
- function (event) {
- STUDIP.InlineEditing.abort(event.target);
- }
- );
- }
-);
diff --git a/resources/assets/javascripts/entry-base.js b/resources/assets/javascripts/entry-base.js
index db3d1f6..896189e 100644
--- a/resources/assets/javascripts/entry-base.js
+++ b/resources/assets/javascripts/entry-base.js
@@ -68,7 +68,6 @@ import "./bootstrap/clipboard.js"
import "./bootstrap/resources.js"
import "./bootstrap/resource-tree-widget.js"
import "./bootstrap/fullcalendar.js"
-import "./bootstrap/inline-editing.js"
import "./bootstrap/gradebook.js"
import "./bootstrap/blubber.js"
import "./bootstrap/consultations.js"
diff --git a/resources/assets/javascripts/init.js b/resources/assets/javascripts/init.js
index 86d1f9e..9fcfbb1 100644
--- a/resources/assets/javascripts/init.js
+++ b/resources/assets/javascripts/init.js
@@ -35,7 +35,6 @@ import Fullscreen from './lib/fullscreen.js';
import GlobalSearch from './lib/global_search.js';
import HeaderMagic from './lib/header_magic.js';
import i18n from './lib/i18n.js';
-import InlineEditing from './lib/inline-editing.js';
import JSONAPI, { jsonapi } from './lib/jsonapi.ts';
import JSUpdater from './lib/jsupdater.js';
import Lightbox from './lib/lightbox.js';
@@ -116,7 +115,6 @@ window.STUDIP = _.assign(window.STUDIP || {}, {
GlobalSearch,
HeaderMagic,
i18n,
- InlineEditing,
jsonapi,
JSONAPI,
JSUpdater,
diff --git a/resources/assets/javascripts/lib/course_wizard.js b/resources/assets/javascripts/lib/course_wizard.js
index ebd821f..af63737 100644
--- a/resources/assets/javascripts/lib/course_wizard.js
+++ b/resources/assets/javascripts/lib/course_wizard.js
@@ -13,28 +13,25 @@ const CourseWizard = {
addParticipatingInst: function(id, name) {
// Check if already set.
if ($('input[name="participating[' + id + ']"]').length == 0) {
- var wrapper = $('<div>').addClass('institute');
+ const wrapper = $('<div>').addClass('institute');
$('#wizard-participating')
.children('div.description')
.removeClass('hidden-js');
- var input = $('<input>')
+ const input = $('<input>')
.attr('type', 'hidden')
.attr('name', 'participating[' + id + ']')
.attr('id', id)
.attr('value', '1');
- var trash = $('<input>')
- .attr('type', 'image')
- .attr('src', STUDIP.ASSETS_URL + 'images/icons/blue/trash.svg')
- .attr('name', 'remove_participating[' + id + ']')
- .attr('value', '1')
- .attr('onclick', "return STUDIP.CourseWizard.removeParticipatingInst('" + id + "')")
- .addClass('text-bottom')
- .css({
- width: 16,
- height: 16
- });
+ const trash = $('<button>')
+ .attr('type', 'button')
+ .attr('name', 'remove_participating[' + id + ']')
+ .attr('value', '1')
+ .addClass('btn-icon btn-icon--trash btn-icon--inline')
+ .on('click', function () {
+ return STUDIP.CourseWizard.removeParticipatingInst(id);
+ });
wrapper.append(input);
- var nametext = $('<span>')
+ const nametext = $('<span>')
.html(name)
.text();
wrapper.append(nametext);
@@ -72,27 +69,25 @@ const CourseWizard = {
addPerson: function(id, name, inputName, elClass, elId, otherInput) {
// Check if already set.
if ($('input[name="' + inputName + '[' + id + ']"]').length == 0) {
- var wrapper = $('<div>').addClass(elClass);
+ const wrapper = $('<div>').addClass(elClass);
$('#' + elId)
.children('div.description')
.removeClass('hidden-js');
- var input = $('<input>')
+ const input = $('<input>')
.attr('type', 'hidden')
.attr('name', inputName + '[' + id + ']')
.attr('id', id)
.attr('value', '1');
- var trash = $('<input>')
- .attr('type', 'image')
- .attr('src', STUDIP.ASSETS_URL + 'images/icons/blue/trash.svg')
+ const trash = $('<button>')
+ .attr('type', 'button')
.attr('name', 'remove_' + elClass + '[' + id + ']')
.attr('value', '1')
- .attr('onclick', "return STUDIP.CourseWizard.removePerson('" + id + "')")
- .css({
- width: 16,
- height: 16
+ .addClass('btn-icon btn-icon--trash btn-icon--inline')
+ .on('click', function () {
+ return STUDIP.CourseWizard.removePerson(id);
});
wrapper.append(input);
- var nametext = $('<span>')
+ const nametext = $('<span>')
.html(name)
.text();
wrapper.append(nametext);
@@ -314,13 +309,14 @@ const CourseWizard = {
.attr('name', 'studyareas[]')
.attr('value', items[i].id);
node.children('ul').before(input);
- var unassign = $('<input>')
- .attr('type', 'image')
+ const unassign = $('<button>')
+ .attr('type', 'button')
.attr('name', 'unassign[' + items[i].id + ']')
- .attr('src', STUDIP.ASSETS_URL + 'images/icons/blue/trash.svg')
- .attr('width', '16')
- .height('height', '16')
- .attr('onclick', "return STUDIP.CourseWizard.unassignNode('" + items[i].id + "')");
+ .attr('value', '1')
+ .addClass('btn-icon btn-icon--trash btn-icon--inline')
+ .on('click', function () {
+ return STUDIP.CourseWizard.unassignNode(items[i].id);
+ });
node.children('input[name="studyareas[]"]').before(unassign);
}
}
@@ -344,38 +340,37 @@ const CourseWizard = {
* @returns {*|jQuery}
*/
createTreeNode: function(values, assignable, selected) {
- let item = $('<li/>');
+ const item = $('<li/>');
// Node in "All study areas" tree.
if (assignable) {
item.addClass('sem-tree-' + values.id);
- var assign = $('<input>')
- .attr('type', 'image')
+ const assign = $('<button>')
+ .attr('type', 'button')
.attr('name', 'assign[' + values.id + ']')
- .attr('src', STUDIP.ASSETS_URL + 'images/icons/yellow/arr_2left.svg')
- .attr('width', '16')
- .height('height', '16')
+ .attr('value', '1')
+ .addClass('btn-icon btn-icon--add btn-icon--inline')
.attr('onclick', "return STUDIP.CourseWizard.assignNode('" + values.id + "')");
if (values.assignable) {
item.append(assign);
item.append(document.createTextNode(' '));
}
if (values.has_children) {
- var input = $('<input>')
+ const input = $('<input>')
.attr('type', 'checkbox')
.attr('id', values.id);
- var label = $('<label>')
+ const label = $('<label>')
.addClass('undecorated')
.attr('for', values.id)
.attr('onclick', "return STUDIP.CourseWizard.getTreeChildren('" + values.id + "', true)");
// Build link for opening the current node.
- var link = $('div#studyareas').data('forward-url');
+ let link = $('div#studyareas').data('forward-url');
if (link.indexOf('?') > -1) {
link += '&open_node=' + values.id;
} else {
link += '?open_node=' + values.id;
}
- var openLink = $('<a>').attr('href', link);
+ const openLink = $('<a>').attr('href', link);
openLink.html(
$('<div/>')
.text(values.name)
@@ -413,17 +408,16 @@ const CourseWizard = {
.html()
);
if ((!values.has_children || values.assignable) && selected) {
- var unassign = $('<input>')
- .attr('type', 'image')
- .attr('name', 'unassign[' + values.id + ']')
- .attr('src', STUDIP.ASSETS_URL + 'images/icons/blue/trash.svg')
- .attr('width', '16')
- .height('height', '16')
+ const unassign = $('<button>')
+ .attr('type', 'button')
+ .attr('name', 'assiunassigngn[' + values.id + ']')
+ .attr('value', '1')
+ .addClass('btn-icon btn-icon--trash btn-icon--inline')
.attr('onclick', "return STUDIP.CourseWizard.unassignNode('" + values.id + "')");
item.append(unassign);
}
if (values.assignable && selected) {
- input = $('<input>')
+ const input = $('<input>')
.attr('type', 'hidden')
.attr('name', 'studyareas[]')
.attr('value', values.id);
@@ -452,7 +446,7 @@ const CourseWizard = {
var items = $.parseJSON(data);
CourseWizard.buildPartialTree(items, false, id);
$('.sem-tree-assigned-root').removeClass('hidden-js');
- $('input[name="assign[' + id + ']"]').hide();
+ $('button[name="assign[' + id + ']"]').hide();
$('svg[name="assign[' + id + ']"]').hide();
},
error: function(xhr, status, error) {
@@ -471,12 +465,12 @@ const CourseWizard = {
var target = $('li.sem-tree-assigned-' + id);
if (target.children('ul').children('li').length > 0) {
target.children('input[name="studyareas[]"]').remove();
- target.children('input[name="unassign[' + id + ']"]').remove();
+ target.children('button[name="unassign[' + id + ']"]').remove();
target.children('a').remove();
} else {
CourseWizard.cleanupAssignTree(target);
}
- $('input[name="assign[' + id + ']"]').show();
+ $('button[name="assign[' + id + ']"]').show();
$('svg[name="assign[' + id + ']"]').show();
return false;
},
diff --git a/resources/assets/javascripts/lib/fullcalendar.js b/resources/assets/javascripts/lib/fullcalendar.js
index 350c72f..e1174bd 100644
--- a/resources/assets/javascripts/lib/fullcalendar.js
+++ b/resources/assets/javascripts/lib/fullcalendar.js
@@ -600,23 +600,17 @@ class Fullcalendar
if (event.extendedProps.icon) {
//Check if the icon is already an URL or just the name of an icon.
- let icon_url = '';
+ let iconUrl = '';
if (event.extendedProps.icon.includes('://')) {
//The icon already is an URL.
- icon_url = event.extendedProps.icon;
+ iconUrl = event.extendedProps.icon;
} else {
- //The icon is just referenced by its name.
- icon_url = `${STUDIP.ASSETS_URL}images/icons/${iconColor}/${event.extendedProps.icon}.svg`
+ //The icon is just referenced by its name. We do not need a specific color here, background-color is currentColor.
+ iconUrl = `${STUDIP.ASSETS_URL}images/icons/black/${event.extendedProps.icon}.svg`
}
- $(eventElement).find('.fc-title').prepend(
- $('<img>').attr('src', icon_url)
- .css({
- verticalAlign: 'text-bottom',
- marginRight: '3px',
- width: 14,
- height: 14
- })
- );
+ const $title = $(eventElement).find('.fc-title');
+ $title.addClass('has-icon');
+ $title.css('--icon-url', `url('${iconUrl}')`);
}
},
eventSourceSuccess: function(content) {
@@ -690,7 +684,7 @@ class Fullcalendar
$('<a>').attr('href', url).text(renderInfo.resource.title)
);
} else if ($("*[data-fullcalendar='1']").hasClass('institute-plan') && renderInfo.resource.id > 0) {
- let icon = '<img class="text-bottom icon-role-clickable icon-shape-edit" width="20" height="20" src="' + STUDIP.URLHelper.getURL('assets/images/icons/blue/edit.svg') + '" alt="edit">';
+ const icon = '<span class="btn-icon btn-icon--edit icon-role-clickable" aria-label="edit"></span>';
$(renderInfo.el).append(
'<a href="'
+ STUDIP.URLHelper.getURL('dispatch.php/admin/courseplanning/rename_column/'
diff --git a/resources/assets/javascripts/lib/icon-loader.ts b/resources/assets/javascripts/lib/icon-loader.ts
new file mode 100644
index 0000000..3ccdbd6
--- /dev/null
+++ b/resources/assets/javascripts/lib/icon-loader.ts
@@ -0,0 +1,97 @@
+type CacheOption = 'off' | 'session' | 'local';
+
+class IconLoader
+{
+ readonly #cacheKey: string = 'studip/svg-icons';
+
+ #baseUrl: string;
+ #useCache: CacheOption = 'off';
+
+ #cache: Map<string, string>;
+ #promises: Map<string, Promise<string>>;
+
+ constructor(baseUrl: string, useCache: CacheOption = 'off')
+ {
+ this.#baseUrl = baseUrl;
+ this.#useCache = useCache;
+
+ this.#cache = new Map<string, string>(this.#initialState());
+ this.#promises = new Map<string, Promise<string>>();
+ }
+
+ async load(shape: string): Promise<string>
+ {
+ if (this.#cache.has(shape)) {
+ return this.#cache.get(shape)!;
+ }
+
+ if (this.#promises.has(shape)) {
+ return this.#promises.get(shape)!;
+ }
+
+ const url = `${this.#baseUrl}images/icons/blue/${shape}.svg`;
+
+ const promise = (async () => {
+ try {
+ const response = await fetch(url);
+ if (!response.ok) {
+ return '';
+ }
+ let svg = await response.text();
+
+ svg = svg.replace(/fill="(?!none)[^"]+"/g, 'fill="currentColor"');
+ svg = svg.replace(/(width|height)="[^"]+"/g, '');
+
+ this.store(shape, svg);
+
+ return svg;
+ } catch(error) {
+ console.error(`IconLoader: Fehler beim Laden von ${shape}`, error);
+ return '';
+ } finally {
+ this.#promises.delete(shape);
+ }
+ })();
+
+ this.#promises.set(shape, promise);
+
+ return promise;
+ }
+
+ store(shape: string, svg: string): void
+ {
+ this.#cache.set(shape, svg);
+
+ this.#getStorage()?.setItem(
+ this.#cacheKey,
+ JSON.stringify([...this.#cache])
+ )
+ }
+
+ #getStorage(): Storage|null
+ {
+ if (this.#useCache === 'off') {
+ return null;
+ }
+ return this.#useCache === 'session' ? sessionStorage : localStorage;
+ }
+
+ #initialState(): [string, string][]
+ {
+ const cached = this.#getStorage()?.getItem(this.#cacheKey);
+ if (!cached) {
+ return [];
+ }
+
+ try {
+ return JSON.parse(cached);
+ } catch {
+ return [];
+ }
+ }
+}
+
+const defaultLoader = new IconLoader(window.STUDIP.ASSETS_URL, 'session');
+
+export default defaultLoader;
+export { IconLoader };
diff --git a/resources/assets/javascripts/lib/inline-editing.js b/resources/assets/javascripts/lib/inline-editing.js
deleted file mode 100644
index b1f025f..0000000
--- a/resources/assets/javascripts/lib/inline-editing.js
+++ /dev/null
@@ -1,138 +0,0 @@
-class InlineEditing
-{
- static init(element) {
- if (!element) {
- return;
- }
-
- var text = jQuery(element).text().trim();
-
- var icon_path = STUDIP.ASSETS_URL + '/images/icons/blue/NAME.svg';
- var input_type = jQuery(element).data('input-type').toLowerCase();
- var input_name = jQuery(element).data('input-name');
- var icon_size = jQuery(element).data('icon-size');
- if (!icon_size) {
- icon_size = '20px';
- }
-
- //Build the display container:
- var text_container = jQuery('<span class="text"></span>');
- jQuery(text_container).text(text);
- var icon_container = jQuery('<div></div>');
- var icon_element = jQuery('<img class="edit-button"></img>');
- jQuery(icon_element).attr('width', icon_size);
- jQuery(icon_element).attr('height', icon_size);
- jQuery(icon_element).attr('src', icon_path.replace('NAME', 'edit'));
- jQuery(icon_container).append(icon_element);
- var display_container = jQuery(
- '<div class="display-container"></div>'
- );
- jQuery(display_container).append(text_container);
- jQuery(display_container).append(icon_container);
-
- var input_field = undefined;
- var edit_icons_container = undefined;
- var accept_icon = jQuery('<img class="save-button"></img>');
- jQuery(accept_icon).attr('width', icon_size);
- jQuery(accept_icon).attr('height', icon_size);
- jQuery(accept_icon).attr('src', icon_path.replace('NAME', 'accept'));
- var abort_icon = jQuery('<img class="abort-button"></img>');
- jQuery(abort_icon).attr('width', icon_size);
- jQuery(abort_icon).attr('height', icon_size);
- jQuery(abort_icon).attr('src', icon_path.replace('NAME', 'decline'));
-
- if (input_type == 'textarea') {
- input_field = jQuery('<textarea class="input-field"></textarea>');
- jQuery(input_field).attr('name', input_name);
- jQuery(input_field).text(text);
- edit_icons_container = jQuery('<div></div>');
- } else {
- input_field = jQuery('<input class="input-field">');
- jQuery(input_field).attr('type', input_type);
- jQuery(input_field).attr('name', input_name);
- jQuery(input_field).val(text);
- edit_icons_container = jQuery('<span></span>');
- }
- jQuery(edit_icons_container).append(accept_icon);
- jQuery(edit_icons_container).append(abort_icon);
-
- var edit_container = jQuery('<div class="edit-container invisible"></div>');
- jQuery(edit_container).append(input_field);
- jQuery(edit_container).append(edit_icons_container);
-
- jQuery(element).empty();
- jQuery(element).append(display_container);
- jQuery(element).append(edit_container);
- }
-
-
- static activate(element) {
- var container = jQuery(element).parents('[data-inline-editing]');
- if (!container) {
- return;
- }
-
- jQuery(container).children('.display-container').addClass('invisible');
- jQuery(container).children('.edit-container').removeClass('invisible');
- }
-
-
- static save(element) {
- var container = jQuery(element).parents('[data-inline-editing]');
- if (!container) {
- return;
- }
- var ajax_url = jQuery(container).data('inline-editing');
-
- var text_field = jQuery(container).find('.text')[0];
- if (!text_field) {
- return;
- }
- var input_field = jQuery(container).find('.input-field')[0];
- if (!input_field) {
- return;
- }
- var input_name = jQuery(container).data('input-name');
- var input_value = jQuery(input_field).val();
- var data = {
- quiet: 1
- };
- data[input_name] = input_value;
-
- jQuery.ajax(
- {
- url: ajax_url,
- method: 'POST',
- data: data
- }
- ).done(
- function() {
- jQuery(text_field).text(input_value);
- jQuery(container).find('.edit-container').addClass('invisible');
- jQuery(container).find('.display-container').removeClass('invisible');
- }
- ).fail(
- function(data) {
- jQuery(input_field).css('border-color', 'red');
- if (data) {
- jQuery(container).find('.error-message').val(data);
- }
- }
- );
- }
-
-
- static abort(element) {
- var container = jQuery(element).parents('[data-inline-editing]');
- if (!container) {
- return;
- }
-
- jQuery(container).children('.edit-container').addClass('invisible');
- jQuery(container).children('.display-container').removeClass('invisible');
-
- }
-}
-
-
-export default InlineEditing;
diff --git a/resources/assets/javascripts/lib/members.js b/resources/assets/javascripts/lib/members.js
index 3fbdfb9..1630c71 100644
--- a/resources/assets/javascripts/lib/members.js
+++ b/resources/assets/javascripts/lib/members.js
@@ -1,13 +1,18 @@
const Members = {
addPersonToSelection: function(userId, name) {
- var target = $('#persons-to-add'),
- newEl = $('<li>').html(
+ const target = $('#persons-to-add');
+ let newEl = $('<li>').html(
$('<span>')
.html(name)
.text()
- ),
- input = $('<input type="hidden" name="users[]">').val(userId),
- remove = $('<img>').attr('src', STUDIP.ASSETS_URL + 'images/icons/blue/trash.svg');
+ );
+ let input = $('<input type="hidden" name="users[]">').val(userId);
+ let remove = $('<button>')
+ .addClass('btn-icon btn-icon--trash btn-icon--inline')
+ .attr('type', 'button')
+ .on('click', function () {
+ $(this).parent().remove();
+ });
remove.on('click', function() {
$(this)
diff --git a/resources/assets/javascripts/mvv.js b/resources/assets/javascripts/mvv.js
index 9191ad7..db3c6b2 100644
--- a/resources/assets/javascripts/mvv.js
+++ b/resources/assets/javascripts/mvv.js
@@ -177,9 +177,9 @@ STUDIP.MVV.Search = {
const qs_name = qs_item.attr('id');
const target_name = qs_name.slice(0, qs_name.lastIndexOf('_'));
const item_id = jQuery('#' + qs_name + '_realvalue').val();
- jQuery('<img src="' + STUDIP.ASSETS_URL
- + 'images/icons/yellow/arr_2down.svg">')
- .attr('alt', $gettext("hinzufügen"))
+ jQuery('<button>')
+ .addClass('btn-icon btn-icon--add')
+ .attr('aria-label', $gettext('hinzufügen'))
.appendTo(add_button);
if (item_id === '') {
qs_item.siblings('.mvv-add-button').find('.mvv-add-item')
diff --git a/resources/assets/javascripts/mvv_course_wizard.js b/resources/assets/javascripts/mvv_course_wizard.js
index da51c57..4f5a6ee 100644
--- a/resources/assets/javascripts/mvv_course_wizard.js
+++ b/resources/assets/javascripts/mvv_course_wizard.js
@@ -147,12 +147,10 @@ STUDIP.MVV.CourseWizard = {
const mvv_ids = values.id.split('-');
item.addClass('lvgroup-tree-' + values.id);
- const assign = $('<input>')
- .attr('type', 'image')
+ const assign = $('<button>')
+ .attr('type', 'button')
.attr('name', 'assign[' + values.id + ']')
- .attr('src', STUDIP.ASSETS_URL + 'images/icons/yellow/arr_2left.svg')
- .attr('width', '16')
- .height('height', '16')
+ .addClass('btn-icon btn-icon--add btn-icon--inline')
.attr('onclick', "return STUDIP.MVV.CourseWizard.assignNode('" + values.id + "')");
if (values.assignable) {
item.append(assign);
diff --git a/resources/assets/stylesheets/fullcalendar.scss b/resources/assets/stylesheets/fullcalendar.scss
index b9d5f40..994d761 100644
--- a/resources/assets/stylesheets/fullcalendar.scss
+++ b/resources/assets/stylesheets/fullcalendar.scss
@@ -176,8 +176,11 @@ html.responsive-display .fc .fc-view:not(.fc-timeGridDay-view) .fc-day-header {
}
}
- &:checked + label::before {
- @include background-icon(checkbox-checked, info_alt, 100%);
+ &:checked + label {
+ @include icon(before, checkbox-checked, $size: 100%);
+ &::before {
+ background-color: var(--color--font-inverted);
+ }
}
}
}
@@ -196,10 +199,16 @@ html.responsive-display .fc .fc-view:not(.fc-timeGridDay-view) .fc-day-header {
right: 0;
&.white {
- @include background-icon(group4, info_alt, 100%);
+ @include icon(before, group4, $size: 100%);
+ &::before {
+ background-color: var(--color--font-inverted);
+ }
}
&.black {
- @include background-icon(group4, info, 100%);
+ @include icon(before, group4, $size: 100%);
+ &::before {
+ background-color: var(--color--font-primary);
+ }
}
}
diff --git a/resources/assets/stylesheets/highcontrast.scss b/resources/assets/stylesheets/highcontrast.scss
index 7f25139..15cf554 100644
--- a/resources/assets/stylesheets/highcontrast.scss
+++ b/resources/assets/stylesheets/highcontrast.scss
@@ -497,11 +497,13 @@ section.course-statusgroups article header h1 a img {
.js form.default.collapsable fieldset legend,
form.default fieldset.collapsable legend {
- @include background-icon(arr_1down, info_alt);
+ @include icon(before, arr_1down);
+ color: var(--white);
}
.js form.default.collapsable fieldset.collapsed legend,
form.default fieldset.collapsable.collapsed legend {
- @include background-icon(arr_1right, info_alt);
+ @include icon(before, arr_1right);
+ color: var(--white);
}
.sidebar-widget-header > div > a > img {
diff --git a/resources/assets/stylesheets/mixins/colors.scss b/resources/assets/stylesheets/mixins/colors.scss
index 1d94aaa..d9f897e 100644
--- a/resources/assets/stylesheets/mixins/colors.scss
+++ b/resources/assets/stylesheets/mixins/colors.scss
@@ -226,6 +226,7 @@ $calendar-category-255-aux: $light-gray-color-20;
$color--black: #000;
$color--blue-1: #28497c;
$color--blue-2: #36598f;
+$color--blue-3: #d0d7e3;
$color--gray-1: #101010;
$color--gray-2: #3c454e;
$color--gray-3: #676767;
@@ -234,22 +235,39 @@ $color--gray-5: #d8d8d8;
$color--gray-6: #ededed;
$color--gray-7: #fbfbfc;
$color--green-1: #6ead10;
+$color--green-2: #e2efcf;
$color--red-1: #d60000;
+$color--red-2: #f7cccc;
$color--white: #fff;
$color--yellow-1: #ffbc33;
+$color--yellow-2: #fff2d6;
$color--global-background: $color--white;
-$color--brand-primary: $color--blue-1;
-$color--brand-secondary: $color--gray-2;
-
$color--font-primary: $color--gray-1;
$color--font-secondary: $color--gray-3;
$color--font-inactive: $color--gray-3;
$color--font-inverted: $color--white;
+$color--brand-primary: $color--blue-1;
+$color--brand-primary-contrast: $color--font-inverted;
+$color--brand-secondary: $color--gray-2;
+$color--brand-secondary-contrast: $color--font-inverted;
+
+$color--highlight: $color--blue-1;
+$color--highlight-hover: $color--red-1;
+$color--highlight-contrast: $color--font-inverted;
+
+$color--content-link: $color--blue-1;
+$color--content-link-hover: $color--red-1;
+
+$color--sidebar-item: $color--blue-1;
+$color--sidebar-item-hover: $color--gray-1;
+
$color--main-navigation-background: $color--gray-7;
$color--main-navigation-border: $color--gray-5;
+$color--main-navigation-item: $color--blue-1;
+$color--main-navigation-item-inactive: $color--gray-4;
$color--sidebar-marker-active: $color--gray-5;
$color--sidebar-marker-active-navigation: $color--blue-1;
@@ -283,6 +301,8 @@ $color--tile-title-background: $color--gray-6;
$color--scrollbar-thumb: $color--gray-5;
+$color--content-bar-background: $color--gray-6;
+
$color--content-box-border: $color--gray-6;
$color--content-box-header: $color--gray-6;
$color--content-box-background: $color--white;
@@ -290,16 +310,16 @@ $color--content-box-background: $color--white;
$color--fieldset-header: $color--gray-6;
$color--fieldset-border: $color--gray-6;
+$color--tabs-marker-hover: $color--gray-4;
+$color--tabs-marker-active: $color--gray-3;
+
$color--table-header: $color--gray-6;
$color--table-border: $color--gray-6;
$color--table-focus: $color--gray-6;
$color--table-hover: $color--gray-6;
-$color--button-background: $color--white;
-$color--button-border: $color--blue-1;
-$color--button-focus: $color--blue-1;
-$color--button-hover: $color--blue-1;
$color--button-inactive-background: $color--gray-7;
+$color--button-inactive-background-contrast: $color--font-inactive;
$color--button-inactive-border: $color--gray-5;
$color--radiobuttonset-background: $color--white;
@@ -316,15 +336,27 @@ $color--shadow: $color--gray-4;
$color--focus: $color--gray-4;
$color--warning: $color--red-1;
-$color--warning-alternative: mix($color--warning, $color--white, 20%);
+$color--warning-secondary: $color--red-2;
+$color--warning-contrast: $color--font-primary;
+$color--warning-secondary-contrast: $color--font-primary;
+
$color--attention: $color--yellow-1;
-$color--attention-alternative: mix($color--attention, $color--white, 20%);
+$color--attention-secondary: $color--yellow-2;
+$color--attention-contrast: $color--font-primary;
+$color--attention-secondary-contrast: $color--font-primary;
+
$color--good: $color--green-1;
-$color--good-alternative: mix($color--good, $color--white, 20%);
+$color--good-secondary: $color--green-2;
+$color--good-contrast: $color--font-inverted;
+$color--good-secondary-contrast: $color--font-primary;
+
$color--info: $color--blue-2;
-$color--info-alternative: mix($color--info, $color--white, 20%);
+$color--info-secondary: $color--blue-3;
+$color--info-contrast: $color--font-inverted;
+$color--info-secondary-contrast: $color--font-primary;
-$color-image-placeholder-background: $color--gray-6;
+$color--image-placeholder-background: $color--gray-6;
+$color--image-placeholder-icon: $color--gray-4;
$color-header-inverted: $color--white;
diff --git a/resources/assets/stylesheets/mixins/misc.scss b/resources/assets/stylesheets/mixins/misc.scss
index 1fe9d08..1e4d22f 100644
--- a/resources/assets/stylesheets/mixins/misc.scss
+++ b/resources/assets/stylesheets/mixins/misc.scss
@@ -6,7 +6,7 @@
&::before,
&::after {
display: table;
- content: "";
+ content: '';
// Fixes Opera/contenteditable bug:
// http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
line-height: 0;
@@ -16,7 +16,6 @@
}
}
-
@mixin size($height, $width) {
width: $width;
height: $height;
@@ -25,14 +24,54 @@
@include size($size, $size);
}
-// https://codepen.io/kennyglenn/pen/kxqWjP
-@function text-contrast($color, $dark, $light, $threshold: 51) {
- @return if(lightness($color) < $threshold, $light, $dark)
-}
-
-
@mixin vertical-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) {
background-color: mix($midColor, $endColor, 80%);
background-image: linear-gradient($startColor, $midColor $colorStop, $endColor);
background-repeat: no-repeat;
}
+
+@mixin highlight-anchor {
+ a:not(.button) {
+ color: var(--color--highlight);
+
+ &:hover {
+ color: var(--color--highlight-hover);
+ text-decoration: none;
+ }
+ }
+}
+
+@function luminance($value) {
+ @if $value <= 0.03928 {
+ @return $value / 12.92;
+ } @else {
+ @return (($value + 0.055) / 1.055) * (($value + 0.055) / 1.055);
+ }
+}
+
+@function relative-luminance($color) {
+ $rgb: red($color) / 255, green($color) / 255, blue($color) / 255;
+
+ @return luminance(nth($rgb, 1)) * 0.2126 + luminance(nth($rgb, 2)) * 0.7152 + luminance(nth($rgb, 3)) * 0.0722;
+}
+
+@function contrast-ratio($color1, $color2) {
+ $luminance1: relative-luminance($color1) + 0.05;
+ $luminance2: relative-luminance($color2) + 0.05;
+
+ @if $luminance1 > $luminance2 {
+ @return $luminance1 / $luminance2;
+ } @else {
+ @return $luminance2 / $luminance1;
+ }
+}
+
+@function text-contrast($color, $dark, $light, $threshold: 4.5) {
+ $ratio: contrast-ratio($color, $dark);
+
+ @if $ratio < $threshold {
+ @return $light;
+ } @else {
+ @return $dark;
+ }
+}
diff --git a/resources/assets/stylesheets/mixins/studip.scss b/resources/assets/stylesheets/mixins/studip.scss
index d45d9f8..c71d4e3 100644
--- a/resources/assets/stylesheets/mixins/studip.scss
+++ b/resources/assets/stylesheets/mixins/studip.scss
@@ -85,6 +85,9 @@
@return $size;
}
+/**
+ * Deprecated mixin, use `icon` instead
+ */
@mixin background-icon($icon, $role: clickable, $size: $icon-size-default) {
$svg: icon-path($icon, $role);
@@ -104,8 +107,9 @@
}
}
-@mixin icon($position, $icon, $role: clickable, $size: $icon-size-default, $padding: 0, $inline: false) {
+@mixin icon($position, $icon, $role: clickable, $size: $icon-size-default, $padding: 0, $inline: false, $align: text-top) {
$position: $position;
+ $svg: icon-path($icon, $role);
@if $inline {
$size: $icon-size-inline;
@@ -113,13 +117,14 @@
@if $position == before or $position == after {
&::#{$position} {
- @include background-icon($icon, $role, $size);
- background-repeat: no-repeat;
- content: ' ';
+ content: '';
display: inline-block;
height: icon-size($size);
- vertical-align: text-top;
width: icon-size($size);
+ background-color: currentColor;
+ mask: url("#{$svg}") no-repeat center / contain;
+ vertical-align: $align;
+
@if $position == before {
margin-right: $padding;
@@ -137,12 +142,12 @@
display: inline-block;
vertical-align: bottom;
- @include background-icon($default-icon-name, $size: $icon-size-default);
+ @include icon(before, $default-icon-name, $size: $icon-size-default);
@include hide-text;
@include square($icon-size-default);
&.toggled {
- @include background-icon($toggled-icon-name, $size: $icon-size-default);
+ @include icon(before, $toggled-icon-name, $size: $icon-size-default);
}
}
@@ -238,9 +243,8 @@
width: var(--icon-size-default);
height: var(--icon-size-default);
- @include background-icon($icon, $role);
+ @include icon(before, $icon, $role);
- background-repeat: no-repeat;
cursor: pointer;
display: block;
// vertical-align: middle;
diff --git a/resources/assets/stylesheets/print.scss b/resources/assets/stylesheets/print.scss
index 070ed4f..fd93a75 100644
--- a/resources/assets/stylesheets/print.scss
+++ b/resources/assets/stylesheets/print.scss
@@ -181,14 +181,12 @@ td.quote {
a.link-intern {
padding-left: 18px;
- @include background-icon(intern);
- background-repeat: no-repeat;
+ @include icon(before, intern);
}
a.link-extern {
padding-left: 18px;
- @include background-icon(link-extern);
- background-repeat: no-repeat;
+ @include icon(before, link-extern);
}
.formatted-content {
diff --git a/resources/assets/stylesheets/scss/actionmenu.scss b/resources/assets/stylesheets/scss/actionmenu.scss
index 84183b9..1b86585 100644
--- a/resources/assets/stylesheets/scss/actionmenu.scss
+++ b/resources/assets/stylesheets/scss/actionmenu.scss
@@ -60,7 +60,7 @@ $action-menu-shadow: 2px 2px 0 var(--color--action-menu-shadow);
display: block;
position: absolute;
- background: var(--base-color);
+ background-color: var(--color--highlight);
border-radius: 50%;
opacity: 1;
left: 50%;
@@ -100,14 +100,12 @@ $action-menu-shadow: 2px 2px 0 var(--color--action-menu-shadow);
> label {
margin: 0;
padding: 2px 30px 2px 0;
- display: block;
+ display: inline-flex;
+ align-items: center;
}
.action-menu-item-icon {
- display: inline-block;
- margin: 0 0.5em 0.25em 0;
- vertical-align: middle;
-
+ margin-right: 0.5em;
width: var(--icon-size-action-menu);
height: var(--icon-size-action-menu);
}
@@ -121,11 +119,13 @@ $action-menu-shadow: 2px 2px 0 var(--color--action-menu-shadow);
}
> label,
- > button {
- color: var(--base-color);
+ > button,
+ > a {
+ color: var(--color--highlight);
cursor: pointer;
&:hover {
- color: var(--active-color);
+ color: var(--color--highlight-hover);
+ text-decoration: none;
}
}
@@ -138,11 +138,11 @@ $action-menu-shadow: 2px 2px 0 var(--color--action-menu-shadow);
&.action-menu-item-disabled {
> label,
> button {
- color: var(--dark-gray-color-80);
+ color: var(--color--font-inactive);
cursor: default;
&:hover {
- color: var(--dark-gray-color-80);
+ color: var(--color--font-inactive);
}
}
}
diff --git a/resources/assets/stylesheets/scss/admin-courses.scss b/resources/assets/stylesheets/scss/admin-courses.scss
index c981579..0202544 100644
--- a/resources/assets/stylesheets/scss/admin-courses.scss
+++ b/resources/assets/stylesheets/scss/admin-courses.scss
@@ -1,40 +1,10 @@
-.button.has-notice,
-.button.has-no-notice {
- &::before {
- display: inline-block;
- height: var(--icon-size-inline);
- vertical-align: sub;
- width: var(--icon-size-inline);
- }
- &::before {
- margin-right: 0.5ex;
- }
-}
-
-.button.has-notice {
- &::before {
- content: url("#{$image-path}/icons/blue/file-text.svg");
- }
- &:hover::before {
- content: url("#{$image-path}/icons/white/file-text.svg");
- }
-
-}
-.button.has-no-notice {
- &::before {
- content: url("#{$image-path}/icons/blue/file.svg");
- }
- &:hover::before {
- content: url("#{$image-path}/icons/white/file.svg");
- }
-}
-
.action-menu.filter {
margin-left: 1em;
}
.action-menu.filter:not(.is-open) .action-menu-icon {
- @include background-icon(settings);
+ @include icon(before, settings);
+ color: var(--color--highlight);
span {
display: none;
}
diff --git a/resources/assets/stylesheets/scss/admin.scss b/resources/assets/stylesheets/scss/admin.scss
index 00f0102..af9aa5e 100644
--- a/resources/assets/stylesheets/scss/admin.scss
+++ b/resources/assets/stylesheets/scss/admin.scss
@@ -11,21 +11,28 @@
border-color: var(--color--tile-border-hover);
}
}
+
+$upload-icon-size: 48px;
.js .drag-and-drop {
- display: block;
+ display: flex;
+ flex-direction: row;
+ gap: 16px;
margin: 0;
overflow: hidden;
- padding: 15px 15px 15px 80px;
+ padding: 15px;
position: relative;
text-align: left;
background-color: transparent;
border: solid thin transparent;
- @include background-icon(upload, $size: 48px);
- background-repeat: no-repeat;
- background-position: 15px center;
color: var(--base-color);
cursor: pointer;
+ @include icon(before, upload, $size: $upload-icon-size);
+ &::before {
+ min-height: $upload-icon-size;
+ min-width: $upload-icon-size;
+ }
+
input[type=file] {
border: 0;
font-size: 5em;
@@ -143,17 +150,21 @@ fieldset.attribute_table {
}
th .course-completion {
- @include background-icon(radiobutton-checked);
+ @include icon(before, radiobutton-checked);
+ color: var(--color--highlight);
}
td .course-completion {
- @include background-icon(span-empty, status-red);
+ @include icon(before, span-empty);
+ color: var(--color--warning);
&[data-course-completion="1"] {
- @include background-icon(span-2quarter, status-yellow);
+ @include icon(before, span-2quarter);
+ color: var(--color--attention);
}
&[data-course-completion="2"] {
- @include background-icon(span-full, status-green);
+ @include icon(before, span-full);
+ color: var(--color--good);
}
&.ajaxing {
diff --git a/resources/assets/stylesheets/scss/article.scss b/resources/assets/stylesheets/scss/article.scss
index e674e41..cf914e3 100644
--- a/resources/assets/stylesheets/scss/article.scss
+++ b/resources/assets/stylesheets/scss/article.scss
@@ -43,6 +43,12 @@ article.studip {
> a {
display: flex;
align-items: center;
+ color: var(--color--highlight);
+
+ &:hover {
+ color: var(--color--highlight-hover);
+ text-decoration: none;
+ }
}
&,
@@ -75,6 +81,7 @@ article.studip {
}
}
+ @include highlight-anchor;
}
}
diff --git a/resources/assets/stylesheets/scss/buttons.scss b/resources/assets/stylesheets/scss/buttons.scss
index e251512..d996199 100644
--- a/resources/assets/stylesheets/scss/buttons.scss
+++ b/resources/assets/stylesheets/scss/buttons.scss
@@ -1,11 +1,11 @@
@import '../mixins';
@mixin button() {
- background: var(--color--button-background);
- border: 1px solid var(--color--button-border);
+ background: var(--color--global-background);
+ border: 1px solid var(--color--highlight);
border-radius: 4px;
box-sizing: border-box;
- color: var(--color--button-border);
+ color: var(--color--highlight);
cursor: pointer;
display: inline-block;
font-family: $font-family-base;
@@ -25,8 +25,8 @@
&:hover,
&:active,
&.active {
- background-color: var(--color--button-focus);
- color: var(--color--font-inverted);
+ background-color: var(--color--highlight);
+ color: var(--color--highlight-contrast);
}
&.disabled,
@@ -59,32 +59,16 @@ button.button {
}
}
-@mixin button-with-icon($icon, $role, $roleOnHover) {
+@mixin button-with-icon($icon, $role: clickable, $roleOnHover: clickable) {
@extend .button-with-empty-icon;
- &::before {
- @include background-icon($icon, $role, $icon-size-button);
- }
-
- &:hover::before {
- @include background-icon($icon, $roleOnHover, $icon-size-button);
- }
-
- &.disabled,
- &[disabled] {
- &:hover::before {
- @include background-icon($icon, $role, $icon-size-button);
- }
- }
+ @include icon(before, $icon, $size: $icon-size-button, $padding: 8px);
}
// $button-icons is a map of class names and icon names located in resources/assets/stylesheets/scss/_variables.scss
@each $class, $icon in $button-icons {
.button {
&.#{'' + $class} {
- padding-right: ($icon-size-button + 4px);
- @include button-with-icon($icon, clickable, info_alt);
- &.disabled, &[disabled] {
- @include button-with-icon($icon, inactive, inactive);
- }
+ padding-right: ($icon-size-button + 8px);
+ @include button-with-icon($icon);
}
}
}
@@ -147,3 +131,73 @@ button,
}
}
}
+
+label {
+ &.undecorated.icon-button {
+ cursor: pointer;
+ svg {
+ vertical-align: middle;
+ }
+ }
+}
+
+.btn-icon {
+ all: unset;
+ cursor: pointer;
+ display: inline-block;
+
+ // $button-icons is a map of class names and icon names located in resources/assets/stylesheets/scss/_variables.scss
+ @each $name, $icon in $button-icons {
+ &--#{$name} {
+ @include icon(before, $icon, $align: middle);
+
+ &.btn-icon--inline {
+ @include icon(before, $icon, $align: middle, $inline: true);
+ }
+ }
+ }
+}
+
+button.button.btn-icon--only {
+ min-width: unset;
+ padding: 5px;
+
+}
+
+.square-button-panel {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ width: 100%;
+ justify-content: center;
+}
+
+$square-button-size: 130px;
+.square-button {
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: center;
+ max-height: $square-button-size;
+ max-width: $square-button-size;
+ min-width: $square-button-size;
+ min-height: $square-button-size;
+ margin: 10px;
+ padding: 10px;
+ background-color: transparent;
+ color: var(--color--highlight);
+ border: solid thin var(--color--tile-border);
+ cursor: pointer;
+
+ .studip-icon {
+ height: 50px;
+ margin-bottom: 8px;
+ }
+ span {
+ min-width: 110px;
+ }
+ &:hover {
+ color: var(--color--highlight-hover);
+ border-color: var(--color--highlight);
+ }
+} \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/calendar.scss b/resources/assets/stylesheets/scss/calendar.scss
index 17093e2..356cb3e 100644
--- a/resources/assets/stylesheets/scss/calendar.scss
+++ b/resources/assets/stylesheets/scss/calendar.scss
@@ -2,11 +2,11 @@
.fc-event {
background-color: #fff;
- color: #000;
+ color: var(--color--font-primary);
border-width: 1px;
&:hover {
- color: #000;
+ color: var(--color--font-primary);
}
&.course-color-0 {
@@ -141,6 +141,20 @@
filter: #{"invert()"};
}
}
+
+ .fc-title.has-icon::before {
+ content: '';
+ display: inline-block;
+ vertical-align: text-bottom;
+ margin-right: 3px;
+ width: 14px;
+ height: 14px;
+ mask-size: contain;
+ mask-repeat: no-repeat;
+ mask-position: center;
+ background-color: currentColor;
+ mask-image: var(--icon-url);
+ }
}
}
diff --git a/resources/assets/stylesheets/scss/colorpicker.scss b/resources/assets/stylesheets/scss/colorpicker.scss
new file mode 100644
index 0000000..8dde65c
--- /dev/null
+++ b/resources/assets/stylesheets/scss/colorpicker.scss
@@ -0,0 +1,99 @@
+.studip-color-picker {
+ position: relative;
+ display: inline-block;
+
+ .studip-color-picker-value {
+ width: 64px;
+ height: 24px;
+ display: inline-block;
+ vertical-align: middle;
+ }
+
+ .color-picker-popup {
+ position: absolute;
+ z-index: 10;
+ top: 100%;
+ left: 0;
+ background: white;
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
+ padding: 1rem;
+ border-radius: 8px;
+ min-width: 180px;
+ }
+
+ .tabs {
+ display: flex;
+ margin-bottom: 1rem;
+
+ button {
+ flex: 1;
+ padding: 0.5rem;
+ background: none;
+ border: none;
+ border-bottom: 2px solid transparent;
+ cursor: pointer;
+
+ &.active {
+ border-bottom-color: var(--color--tabs-marker-active);
+ font-weight: bold;
+ }
+ }
+ }
+
+ .palette-grid {
+ display: grid;
+ grid-template-columns: repeat(5, 0fr);
+ gap: 8px;
+ margin-bottom: 1rem;
+
+ .color-swatch {
+ width: 30px;
+ height: 30px;
+ border: 1px solid transparent;
+ cursor: pointer;
+
+ &.selected {
+ &::before {
+ content: '';
+ display: inline-block;
+ position: relative;
+ top: -4px;
+ outline: 2px solid var(--color--font-inverted);
+ outline-offset: 10px;
+ }
+ &.inverted {
+ &::before {
+ outline: 2px solid var(--color--font-secondary);
+ }
+ }
+ }
+ &.inverted {
+ border: 1px solid var(--color--font-secondary);
+ }
+ }
+ }
+
+ .actions {
+ text-align: right;
+ }
+
+ /* vue color */
+ .vc-chrome-picker {
+ background-color: unset;
+ background: unset;
+ border-radius: unset;
+ box-shadow: unset;
+ width: unset;
+ font-family: unset;
+ }
+ .active-color {
+ border-radius: unset;
+ }
+}
+
+
+label {
+ .studip-color-picker {
+ display: block;
+ }
+} \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/contentbar.scss b/resources/assets/stylesheets/scss/contentbar.scss
index b582ec5..46ae267 100644
--- a/resources/assets/stylesheets/scss/contentbar.scss
+++ b/resources/assets/stylesheets/scss/contentbar.scss
@@ -1,5 +1,5 @@
.contentbar {
- background-color: var(--dark-gray-color-10);
+ background-color: var(--color--content-bar-background);
display: flex;
flex-wrap: nowrap;
align-items: center;
@@ -51,13 +51,7 @@
text-overflow: ellipsis;
white-space: nowrap;
- a {
- color: var(--base-color);
- text-decoration: none;
- &:hover {
- color: var(--active-color);
- }
- }
+ @include highlight-anchor;
&.contentbar-breadcrumb-item-current {
flex-shrink: 1;
@@ -93,7 +87,7 @@
background-position: center;
background-repeat: no-repeat;
background-size: 24px;
- border: solid thin var(--color--button-border);
+ border: solid thin var(--color--highlight);
border-radius: var(--border-radius-default);
cursor: pointer;
display: inline-block;
@@ -102,7 +96,7 @@
&.contentbar-button-menu,
&.cw-ribbon-button-menu {
- @include background-icon(table-of-contents);
+ @include icon(before, table-of-contents, $align: middle);
}
&.contentbar-button-zoom::before {
diff --git a/resources/assets/stylesheets/scss/contents.scss b/resources/assets/stylesheets/scss/contents.scss
index d3d5a33..148b6e0 100644
--- a/resources/assets/stylesheets/scss/contents.scss
+++ b/resources/assets/stylesheets/scss/contents.scss
@@ -14,6 +14,10 @@
padding: 5px;
grid-template-columns: 42px 135px;
+ &:hover {
+ text-decoration: none;
+ }
+
.content-item-img-wrapper {
margin: 0 10px 5px 5px;
width: 32px;
@@ -50,7 +54,7 @@
justify-content: stretch;
.content-item-link {
- color: var(--color--font-primary);
+ color: var(--color--highlight);
display: grid;
flex: 1;
grid-template-columns: 74px auto;
@@ -58,13 +62,16 @@
padding: 25px 10px 10px;
transition: 0.5s;
+ &:hover {
+ text-decoration: none;
+ }
+
.content-item-img-wrapper {
width: 64px;
}
.content-item-text {
.content-item-title {
- color: var(--color--brand-primary);
font-size: 1.3em;
width: 100%;
max-width: 160px;
@@ -72,6 +79,10 @@
overflow: hidden;
text-overflow: ellipsis;
}
+
+ .content-item-description {
+ color: var(--color--font-primary);
+ }
}
}
@@ -82,9 +93,10 @@
color: unset;
.content-item-link {
+ color: var(--color--highlight-hover);
.content-item-text {
- .content-item-title {
- color: var(--red);
+ .content-item-description {
+ color: var(--color--font-primary);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware.scss b/resources/assets/stylesheets/scss/courseware.scss
index 092a236..b2c83b6 100644
--- a/resources/assets/stylesheets/scss/courseware.scss
+++ b/resources/assets/stylesheets/scss/courseware.scss
@@ -8,6 +8,7 @@
@import './courseware/content-courses';
@import './courseware/dashboard';
@import './courseware/sortable';
+@import './courseware/tasks';
@import './courseware/toolbar';
@import './courseware/widgets';
@import './courseware/wizards';
@@ -20,7 +21,6 @@
@import './courseware/containers/tabs';
@import './courseware/blocks/default-block';
-
@import './courseware/layouts/call-to-action';
@import './courseware/layouts/collapsible';
@import './courseware/layouts/companion';
@@ -35,3 +35,11 @@
@import './courseware/layouts/tile';
@import './courseware/layouts/tree';
@import './courseware/layouts/tree-units';
+
+:root {
+ --color--courseware-border-default: #{$color--gray-5};
+ --color--courseware-border-active: #{$color--gray-4};
+ --color--courseware-background-default: #{$color--global-background};
+ --color--courseware-background-highlight: #{$color--gray-6};
+ --color--courseware-call-to-action-background: #{$petrol-20};
+}
diff --git a/resources/assets/stylesheets/scss/courseware/blockadder.scss b/resources/assets/stylesheets/scss/courseware/blockadder.scss
index 8086fe7..6f0890a 100644
--- a/resources/assets/stylesheets/scss/courseware/blockadder.scss
+++ b/resources/assets/stylesheets/scss/courseware/blockadder.scss
@@ -17,7 +17,7 @@
}
&:hover {
- border-color: var(--base-color);
+ border-color: var(--color--highlight-hover);
.cw-sortable-handle {
opacity: 1;
@@ -28,24 +28,22 @@
align-items: flex-start;
flex-direction: column;
text-align: left;
- color: var(--base-color);
+ color: var(--color--highlight);
border: none;
background-color: var(--white);
- padding: 64px 10px 4px 10px;
- @include background-icon(unit-test, $size: 48px);
- background-position: 16px 10px;
- background-repeat: no-repeat;
+ padding: 8px 16px 8px 16px;
+ @include icon(before, unit-test, $size: 48px);
cursor: pointer;
@each $item, $icon in $blockadder-items {
&.cw-blockadder-item-#{$item} {
- @include background-icon($icon, $size: 48px);
+ @include icon(before, $icon, $size: 48px);
}
}
.cw-blockadder-item-title {
display: inline-block;
font-weight: 600;
- margin-bottom: 2px;
+ margin: 4px 0 2px 0;
}
.cw-blockadder-item-description {
display: inline-block;
@@ -53,13 +51,14 @@
}
&:hover {
- color: var(--active-color);
+ color: var(--color--highlight-hover);
}
}
.cw-blockadder-item-fav {
height: 32px;
padding: 8px;
background-color: transparent;
+ color: var(--color--highlight);
border: none;
cursor: pointer;
}
@@ -75,28 +74,34 @@
}
&:hover {
- border-color: var(--base-color);
+ border-color: var(--color--highlight-hover);
.cw-sortable-handle {
opacity: 1;
}
}
+ $containeradder-icon-size: 48px;
.cw-containeradder-item {
+ display: inline-flex;
+ gap: 16px;
border: none;
- background-color: var(--white);
+ background-color: var(--color--global-background);
min-height: 5em;
- padding: 1em 1em 1em 6em;
- @include background-icon(unit-test, $size: 48px);
- background-position: 16px center;
- background-repeat: no-repeat;
+ padding: 16px;
+ @include icon(before, unit-test, $size: $containeradder-icon-size);
text-align: left;
- color: var(--base-color);
+ color: var(--color--highlight);
cursor: pointer;
+
@each $item, $icon in $containeradder-items {
&.cw-containeradder-item-#{$item} {
- @include background-icon($icon, $size: 48px);
+ @include icon(before, $icon, $size: $containeradder-icon-size);
+ &::before {
+ min-width: $containeradder-icon-size;
+ min-height: $containeradder-icon-size;
+ }
}
}
@@ -105,13 +110,13 @@
}
&:hover {
- color: var(--active-color);
+ color: var(--color--highlight-hover);
}
}
}
-
+$container-style-selector-icon-size: 32px;
.cw-container-style-selector {
display: flex;
border-bottom: solid thin var(--color--content-box-border);
@@ -119,10 +124,14 @@
margin-bottom: 8px;
label {
+ display: inline-flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-start;
border: solid thin var(--color--tile-border);
border-right: none;
- padding: calc(0.5em + 32px) 1em 0.5em 1em;
- color: var(--base-color);
+ padding: 8px 16px;
+ color: var(--color--highlight);
text-align: center;
width: 33%;
background-position: center 0.5em;
@@ -134,20 +143,20 @@
}
&.full {
- @include background-icon(column-full, $size: 32px);
+ @include icon(before, column-full, $size: $container-style-selector-icon-size);
}
&.half {
- @include background-icon(column-half, $size: 32px);
+ @include icon(before, column-half, $size: $container-style-selector-icon-size);
}
&.half-center {
- @include background-icon(column-half-centered, $size: 32px);
+ @include icon(before, column-half-centered, $size: $container-style-selector-icon-size);
}
&:hover {
- color: var(--active-color);
+ color: var(--color--highlight-hover);
}
&.cw-container-style-selector-active {
- background-color: var(--content-color-20);
- border: solid thin var(--base-color);
+ background-color: var(--color--tile-background-active);
+ border: solid thin var(--color--highlight);
}
}
input[type='radio'] {
@@ -164,7 +173,7 @@
}
&.sortable-ghost {
- background-color: var(--active-color);
+ background-color: var(--color--highlight-hover);
}
}
.cw-element-inserter-wrapper {
@@ -186,40 +195,41 @@
}
&:hover {
- border-color: var(--base-color);
+ border-color: var(--color--highlight-hover);
.cw-sortable-handle {
opacity: 1;
}
}
+ $clipboard-item-icon-size: 48px;
.cw-clipboard-item {
+ display: inline-flex;
+ flex-direction: column;
width: calc(100% - 36px);
- padding: 64px 10px 4px 10px;
- @include background-icon(unit-test, $size: 48px);
- background-position: 16px 10px;
- background-repeat: no-repeat;
+ padding: 8px 16px;
+ @include icon(before, unit-test, $size: $clipboard-item-icon-size);
cursor: pointer;
- background-color: var(--white);
+ background-color: var(--color--global-background);
border: none;
text-align: left;
- color: var(--base-color);
+ color: var(--color--highlight);
@each $item, $icon in $blockadder-items {
&.cw-clipboard-item-#{$item} {
- @include background-icon($icon, $size: 48px);
+ @include icon(before, $icon, $size: $clipboard-item-icon-size);
}
}
@each $item, $icon in $containeradder-items {
&.cw-clipboard-item-#{$item} {
- @include background-icon($icon, $size: 48px);
+ @include icon(before, $icon, $size: $clipboard-item-icon-size);
}
}
.cw-clipboard-item-title {
display: inline-block;
font-weight: 600;
- margin-bottom: 2px;
+ margin: 4px 0 2px 0;
}
.cw-clipboard-item-description {
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/audio.scss b/resources/assets/stylesheets/scss/courseware/blocks/audio.scss
index 2ea944b..5b7dd64 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/audio.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/audio.scss
@@ -4,7 +4,7 @@
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
padding: 36px;
gap: 64px;
}
@@ -39,7 +39,7 @@
.default-cover {
padding: 64px;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
}
&.loading {
@@ -86,14 +86,14 @@
cursor: pointer;
outline: none;
height: 2px;
- background: var(--content-color-40);
+ background: var(--color--courseware-border-default);
&::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
height: 16px;
width: 16px;
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
border-radius: 50%;
border: none;
}
@@ -101,7 +101,7 @@
&::-moz-range-thumb {
height: 16px;
width: 16px;
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
border-radius: 50%;
border: none;
}
@@ -122,12 +122,12 @@
height: 28px;
margin-bottom: 1em;
padding-bottom: 4px;
- border-bottom: solid 2px var(--content-color-40);
+ border-bottom: solid 2px var(--color--courseware-border-default);
.cw-recorder-visualization-bar {
min-height: 4px;
width: calc(100% / 32);
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
&.idle-bar {
height: 4px !important;
@@ -163,7 +163,7 @@
li {
&:not(:last-child) {
- border-bottom: solid thin var(--dark-gray-color-30);
+ border-bottom: solid thin var(--color--courseware-border-active);
}
.cw-playlist-item {
@@ -190,7 +190,7 @@
&.default-cover {
padding: 32px;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/biography.scss b/resources/assets/stylesheets/scss/courseware/blocks/biography.scss
index cdc7a14..3fa874d 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/biography.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/biography.scss
@@ -22,16 +22,13 @@ $goals-types: (
min-height: 200px;
flex-direction: row;
padding: 2em 2em 2em 1em;
- border: 2px solid var(--base-color);
+ border: 2px solid var(--color--tile-border);
.cw-block-biography-type {
margin: auto 1em auto 0;
- padding-top: 96px;
min-width: 192px;
max-width: 192px;
text-align: center;
- background-repeat: no-repeat;
- background-position: center top;
}
.cw-block-biography-details {
@@ -39,14 +36,13 @@ $goals-types: (
margin-top: 0;
}
}
-
}
}
.cw-block-biography-achievements {
@each $type, $icon in $achievement-types {
.cw-block-biography-achievements-type-#{$type} {
- @include background-icon($icon, $size: 96px);
+ @include icon(before, $icon, $size: 96px);
}
}
}
@@ -54,7 +50,7 @@ $goals-types: (
.cw-block-biography-goals {
@each $type, $icon in $goals-types {
.cw-block-biography-goals-type-#{$type} {
- @include background-icon($icon, $size: 96px);
+ @include icon(before, $icon, $size: 96px);
}
}
}
@@ -64,7 +60,7 @@ $goals-types: (
min-height: 140px;
.cw-block-biography-personal-information-type {
- @include background-icon(person2, $size: 96px);
+ @include icon(before, person2, $size: 96px);
}
.cw-block-biography-personal-information-details {
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/blubber.scss b/resources/assets/stylesheets/scss/courseware/blocks/blubber.scss
index 385840e..c86f043 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/blubber.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/blubber.scss
@@ -1,11 +1,11 @@
@use '../../../mixins.scss' as *;
.cw-block-blubber-content {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
border-top: none;
.cw-blubber-thread {
- background-color: var(--white);
+ background-color: var(--color--global-background);
border: unset;
width: unset;
max-width: unset;
@@ -19,19 +19,19 @@
overflow-y: scroll;
overflow-x: hidden;
scrollbar-width: thin;
- scrollbar-color: var(--base-color) var(--content-color-10);
+ scrollbar-color: var(--color--scrollbar-thumb) var(--color--global-background);
}
.cw-blubber-thread-add-comment {
- border-top: solid thin var(--content-color-40);
+ border-top: solid thin var(--color--courseware-border-default);
padding-top: 1em;
margin: 10px;
textarea {
width: calc(100% - 6px);
resize: none;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
&:active {
- border: solid thin var(--content-color-80);
+ border: solid thin var(--color--courseware-border-active);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/canvas.scss b/resources/assets/stylesheets/scss/courseware/blocks/canvas.scss
index decabf1..a42f96c 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/canvas.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/canvas.scss
@@ -3,7 +3,7 @@
.cw-block-canvas {
.cw-canvasblock-canvas {
max-width: 100%;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
}
.cw-canvasblock-upload-message {
@@ -23,28 +23,33 @@
}
.cw-canvasblock-toolbar {
- border: solid thin var(--content-color-40);
+ display: flex;
+ border: solid thin var(--color--content-box-border);
border-bottom: none;
.cw-canvasblock-buttonset {
- display: inline-block;
+ display: inline-flex;
padding: 5px;
margin-right: 0.5em;
button {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
cursor: pointer;
user-select: none;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--action-menu-border);
height: 32px;
width: 32px;
- background-color: var(--white);
- background-position: center;
- background-repeat: no-repeat;
- background-size: 24px 24px;
+ background-color: var(--color--global-background);
+
+ &:not(:last-child) {
+ border-right: none;
+ }
&.cw-canvasblock-color {
$colors: (
- white: var(--white),
+ white: #ffffff,
blue: #3498db,
green: #2ecc71,
purple: #9b59b6,
@@ -53,86 +58,94 @@
orange: #f39c12,
grey: #95a5a6,
darkgrey: #34495e,
- black: var(--black),
+ black: #000000,
);
@each $name, $color in $colors {
- &.#{'' + $name} {
+ &.#{'' + $name}::before {
+ content: '';
+ width: 24px;
+ height: 24px;
background-color: $color;
}
}
&.selected-color {
- border: solid 2px var(--black);
+ border: solid 2px var(--color--highlight);
+ width: 34px;
}
}
&.cw-canvasblock-reset {
- @include background-icon(refresh, $size: 24px);
+ @include icon(before, refresh, $size: 24px);
}
&.cw-canvasblock-size {
- @include background-icon(stop);
-
- &.cw-canvasblock-size-small {
- background-size: 8px 7px;
+ &::before {
+ content: '';
+ background-color: var(--color--font-primary);
+ border-radius: 50%;
+ }
+ &.cw-canvasblock-size-small::before {
+ height: 4px;
+ width: 4px;
}
- &.cw-canvasblock-size-normal {
- background-size: 16px 14px;
+ &.cw-canvasblock-size-normal::before {
+ height: 8px;
+ width: 8px;
}
- &.cw-canvasblock-size-large {
- background-size: 22px 20px;
+ &.cw-canvasblock-size-large::before {
+ height: 12px;
+ width: 12px;
}
- &.cw-canvasblock-size-huge {
- background-size: 26px 24px;
+ &.cw-canvasblock-size-huge::before {
+ height: 16px;
+ width: 16px;
}
&.selected-size {
- border: solid 2px var(--black);
+ border: solid 2px var(--color--highlight);
}
}
&.cw-canvasblock-tool {
&.cw-canvasblock-tool-pen {
- @include background-icon(comment);
+ @include icon(before, comment);
}
&.cw-canvasblock-tool-text {
- vertical-align: top;
- font-size: 22px;
- color: var(--base-color);
- font-weight: 600;
+ @include icon(before, block-typewriter);
}
&.selected-tool {
- border: solid 2px var(--black);
+ border: solid 2px var(--color--highlight);
}
}
&.cw-canvasblock-undo {
- @include background-icon(arr_2left, $size: 24px);
+ @include icon(before, arr_2left, $size: 24px);
}
&.cw-canvasblock-download {
- @include background-icon(download, $size: 24px);
+ @include icon(before, download, $size: 24px);
}
&.cw-canvasblock-store {
- @include background-icon(upload, $size: 24px);
+ @include icon(before, upload, $size: 24px);
}
&.cw-canvasblock-show-all {
- @include background-icon(group2, $size: 24px);
+ @include icon(before, group2, $size: 24px);
&.selected-view {
- border: solid 2px var(--black);
+ border: solid 2px var(--color--highlight);
}
}
&.cw-canvasblock-show-own {
- @include background-icon(person, $size: 24px);
+ @include icon(before, person, $size: 24px);
&.selected-view {
- border: solid 2px var(--black);
+ border: solid 2px var(--color--highlight);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/code.scss b/resources/assets/stylesheets/scss/courseware/blocks/code.scss
index ac401cf..b4895a4 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/code.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/code.scss
@@ -9,7 +9,7 @@
padding: 0.5em;
background: var(--dark-gray-color-5);
color: black;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
}
.hljs-comment,
@@ -24,7 +24,7 @@
.hljs-built_in,
.hljs-name,
.hljs-tag {
- color: var(--base-color);
+ color: var(--color--blue-1);
font-weight: 600;
}
@@ -55,7 +55,7 @@
}
.hljs-attr {
- color: var(--active-color);
+ color: var(--red);
font-weight: 400;
}
@@ -76,12 +76,12 @@
}
.code-lang {
- background: var(--dark-gray-color-5);
- border: solid thin var(--content-color-40);
+ background: var(--color--courseware-background-highlight);
+ border: solid thin var(--color--courseware-border-default);
border-top: none;
padding: 5px 10px;
text-align: right;
- color: var(--dark-gray-color-45);
+ color: var(--color--font-secondary);
font-family: monospace;
text-transform: full-width;
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/confirm.scss b/resources/assets/stylesheets/scss/courseware/blocks/confirm.scss
index 0c236fc..9d79fda 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/confirm.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/confirm.scss
@@ -1,6 +1,6 @@
.cw-block-confirm {
.cw-block-confirm-content {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
padding: 1em;
margin: 0;
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/default-block.scss b/resources/assets/stylesheets/scss/courseware/blocks/default-block.scss
index 4b032ae..8935c02 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/default-block.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/default-block.scss
@@ -13,14 +13,15 @@
.cw-block-header {
background-color: var(--color--content-box-header);
padding: 4px 10px 4px 22px;
+ @include highlight-anchor;
.cw-block-header-toggle {
- display: inline-block;
+ display: inline-flex;
+ align-items: center;
width: calc(100% - 50px);
}
span {
- color: var(--base-color);
font-weight: 700;
line-height: 2em;
font-size: 1.1em;
@@ -32,11 +33,6 @@
}
}
- img {
- vertical-align: middle;
- margin-bottom: 2px;
- }
-
.cw-block-actions {
position: relative;
float: right;
@@ -47,12 +43,9 @@
}
}
-.cw-discuss-wrapper,
.cw-block-features {
header{
background-color: var(--color--content-box-header);
- color: var(--base-color);
- font-weight: 600;
padding: 0.5em;
}
@@ -93,27 +86,12 @@
.cw-block-title {
padding: 4px;
background-color: var(--color--content-box-header);
- color: var(--base-color);
font-weight: 700;
text-align: center;
border: solid thin var(--color--content-box-border);
border-bottom: none;
}
-.cw-file-empty {
- @include background-icon(file, info, 96px);
- border: solid thin var(--color--content-box-border);
- background-position: center 1em;
- background-repeat: no-repeat;
- min-height: 140px;
- padding: 1em;
- p {
- text-align: center;
- padding-top: 106px;
- }
-}
-
-
.cw-block-item:not(.cw-block-item-sortable):has(.cw-default-block-deactivated) {
display: none;
}
@@ -143,4 +121,4 @@
pointer-events: none;
}
}
-} \ No newline at end of file
+}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/dialog-cards.scss b/resources/assets/stylesheets/scss/courseware/blocks/dialog-cards.scss
index dfc35b4..c0c532d 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/dialog-cards.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/dialog-cards.scss
@@ -40,7 +40,7 @@
position: absolute;
width: 100%;
height: 100%;
- color: var(--black);
+ color: var(--color--font-primary);
text-align: center;
font-weight: bold;
font-size: 1.2em;
@@ -54,11 +54,11 @@
}
.cw-dialogcards-front-no-image {
- @include background-icon(question, navigation, 150px);
+ @include icon(before, question, navigation, $size: 150px);
}
.cw-dialogcards-back-no-image {
- @include background-icon(exclaim, navigation, 150px);
+ @include icon(before, exclaim, navigation, $size: 150px);
}
.cw-dialogcards-front-no-image,
@@ -80,29 +80,31 @@
}
.card__face--front {
- @include background-icon(arr_1right);
- background-color: var(--white);
- background-repeat: no-repeat;
- background-position: 95% 95%;
+ @include icon(after, arr_1right);
}
.card__face--back {
- @include background-icon(arr_1left);
- background-color: var(--white);
- background-repeat: no-repeat;
- background-position: 5% 95%;
+ @include icon(after, arr_1left);
transform: rotateY(180deg);
}
+
+ .card__face--front,
+ .card__face--back {
+ background-color: var(--color--global-background);
+ &::after {
+ position: absolute;
+ right: 25px;
+ bottom: 25px;
+ }
+ }
}
.cw-dialogcards-navbutton {
- color: transparent;
+ background-color: var(--color--highlight);
+ color: var(--color--highlight-contrast);
width: 35px;
height: 35px;
- border-radius: 2px;
- background-position: 50%;
- background-repeat: no-repeat;
- background-color: var(--base-color);
+ border-radius: var(--border-radius-default);
border: none;
display: block;
z-index: 4;
@@ -111,17 +113,18 @@
cursor: pointer;
&.cw-dialogcards-prev {
- @include background-icon(arr_1left, info-alt, 24px);
+ @include icon(before, arr_1left, $size: 24px, $align: middle, $padding: -2px);
}
&.cw-dialogcards-next {
- @include background-icon(arr_1right, info-alt, 24px);
- right: 0;
+ @include icon(before, arr_1right, $size: 24px, $align: middle, $padding: -2px);
}
&.cw-dialogcards-prev-disabled,
&.cw-dialogcards-next-disabled {
- background-color: var(--light-gray-color-40);
+ color: var(--color--button-inactive-background-contrast);
+ background-color: var(--color--button-inactive-background);
+ cursor: not-allowed;
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/document.scss b/resources/assets/stylesheets/scss/courseware/blocks/document.scss
index 0c69cda..ff6e916 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/document.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/document.scss
@@ -1,11 +1,11 @@
.cw-block-document {
.cw-pdf-main-container {
width: calc(100% - 2px);
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
.cw-block-title {
border: none;
- border-bottom: solid thin var(--content-color-40);
+ border-bottom: solid thin var(--color--courseware-border-default);
}
}
.cw-pdf-toolbar {
@@ -15,7 +15,7 @@
justify-content: flex-start;
align-items: baseline;
align-content: space-around;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
padding: 4px 8px;
button {
@@ -24,7 +24,7 @@
padding: 4px;
&.active {
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
}
}
@@ -84,7 +84,7 @@
top: 33px;
left: 22px;
width: auto;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
border-top: none;
padding: 6px;
z-index: 2;
@@ -119,8 +119,8 @@
width: 25%;
min-width: 270px;
align-self: stretch;
- background-color: var(--white);
- border-right: solid 1px var(--content-color-40);
+ background-color: var(--color--global-background);
+ border-right: solid 1px var(--color--courseware-border-default);
ul.cw-pdf-toc-list,
ul.cw-pdf-toc-sub-list {
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/files.scss b/resources/assets/stylesheets/scss/courseware/blocks/files.scss
index 77ed00d..89e7884 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/files.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/files.scss
@@ -2,14 +2,14 @@
// folder block
.cw-block-folder-info {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--content-box-border);
padding: 10px 10px 0 10px;
overflow: hidden;
border-bottom: none;
}
.cw-block-folder-list {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--content-box-border);
padding: 0;
list-style: none;
@@ -17,7 +17,7 @@
list-style: none;
&:not(:last-child) {
- border-bottom: solid thin var(--content-color-40);
+ border-bottom: solid thin var(--color--content-box-border);
}
a {
@@ -30,8 +30,7 @@
}
.cw-block-folder-download-icon {
- @include background-icon(download, $size: 24px);
- background-repeat: no-repeat;
+ @include icon(before, download, $size: 24px);
float: right;
height: 24px;
width: 24px;
@@ -40,7 +39,7 @@
}
.cw-block-folder-upload {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--content-box-border);
padding: 1em 10px;
border-top: none;
@@ -52,111 +51,73 @@
// for folder and download block
.cw-block-file-info {
- @include background-icon(file, $size: 24px);
- background-repeat: no-repeat;
+ @include icon(before, file, $size: 24px, $padding: 4px, $align: middle);
display: block;
- padding: 16px 16px 16px 40px;
- background-position: 10px 16px;
+ padding: 16px;
width: calc(100% - 56px);
min-height: 20px;
overflow: hidden;
text-overflow: ellipsis;
&.cw-block-file-icon-empty {
- color: var(--black);
- @include background-icon(folder-empty, info, 24px);
+ color: var(--color--font-primary);
+ @include icon(before, folder-empty, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-none {
- color: var(--black);
- @include background-icon(file, info, 24px);
+ color: var(--color--font-primary);
+ @include icon(before, file, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-audio {
- @include background-icon(file-audio, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-audio, info, 24px);
- }
+ @include icon(before, file-audio, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-pic {
- @include background-icon(file-pic, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-pic, info, 24px);
- }
+ @include icon(before, file-pic, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-video {
- @include background-icon(file-video, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-video, info, 24px);
- }
+ @include icon(before, file-video, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-pdf {
- @include background-icon(file-pdf, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-pdf, info, 24px);
- }
+ @include icon(before, file-pdf, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-word {
- @include background-icon(file-word, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-word, info, 24px);
- }
+ @include icon(before, file-word, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-spreadsheet {
- @include background-icon(file-excel, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-excel, info, 24px);
- }
+ @include icon(before, file-excel, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-text {
- @include background-icon(file-text, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-text, info, 24px);
- }
+ @include icon(before, file-text, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-ppt {
- @include background-icon(file-ppt, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-ppt, info, 24px);
- }
+ @include icon(before, file-ppt, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-archive {
- @include background-icon(file-archive, $size: 24px);
-
- &.download-disabled {
- @include background-icon(file-archive, info, 24px);
- }
+ @include icon(before, file-archive, $size: 24px, $padding: 4px, $align: middle);
}
&.cw-block-file-icon-file {
- @include background-icon(file, $size: 24px);
+ @include icon(before, file, $size: 24px, $padding: 4px, $align: middle);
+ }
- &.download-disabled {
- @include background-icon(file, info, 24px);
- }
+ &.download-disabled {
+ color: var(--color--font-inactive);
}
}
.cw-block-file-details {
margin-top: -16px;
padding-left: 40px;
padding-bottom: 16px;
- color: var(--dark-gray-color);
+ color: var(--color--font-secondar);
}
.cw-block-file-owner,
.cw-block-file-mkdate {
@@ -169,7 +130,7 @@
// download block
.cw-block-download {
.cw-block-download-content {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--content-box-border);
.cw-block-download-file-item {
a {
@@ -177,12 +138,11 @@
}
&:hover {
- background-color: fade-out($dark-gray-color-75, 0.8);
+ background-color: var(--color--table-hover);
}
.cw-block-download-download-icon {
- @include background-icon(download, $size: 24px);
- background-repeat: no-repeat;
+ @include icon(before, download, $size: 24px);
float: right;
height: 24px;
width: 24px;
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/gallery.scss b/resources/assets/stylesheets/scss/courseware/blocks/gallery.scss
index 6bacf7a..0781b87 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/gallery.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/gallery.scss
@@ -26,37 +26,29 @@
.cw-block-gallery-next {
cursor: pointer;
position: absolute;
- background-color: fade-out($white, 0.6);
+ background-color: fade-out($color--global-background, 0.6);
+ color: var(--color--font-primary);
top: 50%;
height: 36px;
width: 36px;
- background-repeat: no-repeat;
- background-position: center;
margin-top: -22px;
transition: 200ms ease;
user-select: none;
border: none;
&:hover {
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
+ color: var(--color--highlight-contrast);
}
}
.cw-block-gallery-prev {
- @include background-icon(arr_1left, $size: 24px);
-
- &:hover {
- @include background-icon(arr_1left, info-alt, 24px);
- }
+ @include icon(before, arr_1left, $size: 24px, $align: middle, $padding: -4px);
}
.cw-block-gallery-next {
right: 0;
- @include background-icon(arr_1right, $size: 24px);
-
- &:hover {
- @include background-icon(arr_1right, info-alt, 24px);
- }
+ @include icon(before, arr_1right, $size: 24px, $align: middle, $padding: -4px);
}
.cw-block-gallery-file-description {
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/headline.scss b/resources/assets/stylesheets/scss/courseware/blocks/headline.scss
index 2bfaace..5590973 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/headline.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/headline.scss
@@ -11,9 +11,6 @@ $large-icon-size-px: $large-icon-size * 1px;
.cw-block-headline-content {
min-height: 600px;
overflow: hidden;
- background-position: center;
- background-size: $max-content-width;
- background-repeat: no-repeat;
&.half {
min-height: 300px;
@@ -57,48 +54,26 @@ $large-icon-size-px: $large-icon-size * 1px;
}
&.bigicon_top {
.icon-layer {
- background-repeat: no-repeat;
- background-position: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
margin-top: 8em;
margin-bottom: 1em;
- background-size: $big-icon-size-px;
height: $big-icon-size-px;
@each $icon in $icons {
- &.icon-black-#{$icon} {
- @include background-icon($icon, info, $big-icon-size-px);
- }
- &.icon-white-#{$icon} {
- @include background-icon($icon, info-alt, $big-icon-size-px);
- }
- &.icon-studip-blue-#{$icon} {
- @include background-icon($icon, $size: $big-icon-size-px);
- }
- &.icon-studip-red-#{$icon} {
- @include background-icon($icon, status-red, $big-icon-size-px);
- }
- &.icon-studip-yellow-#{$icon} {
- @include background-icon($icon, status-yellow, $big-icon-size-px);
- }
- &.icon-studip-green-#{$icon} {
- @include background-icon($icon, status-green, $big-icon-size-px);
- }
- &.icon-studip-gray-#{$icon} {
- @include background-icon($icon, inactive, $big-icon-size-px);
+ &.icon-name-#{$icon} {
+ @include icon(before, $icon, $size: $big-icon-size-px);
}
}
&.half {
height: 144px;
- background-size: 144px;
- background-position: center;
margin-top: 2em;
margin-bottom: 0;
}
&.quarter {
height: 72px;
- background-size: 72px;
- background-position: center;
margin-top: 1em;
margin-bottom: 0;
}
@@ -150,37 +125,16 @@ $large-icon-size-px: $large-icon-size * 1px;
min-height: $big-icon-size-px;
min-width: $big-icon-size-px;
margin: 0 28px 0 28px;
- background-repeat: no-repeat;
- background-position: left center;
@each $icon in $icons {
- &.icon-black-#{$icon} {
- @include background-icon($icon, info, $big-icon-size-px);
- }
- &.icon-white-#{$icon} {
- @include background-icon($icon, info-alt, $big-icon-size-px);
- }
- &.icon-studip-blue-#{$icon} {
- @include background-icon($icon, $size: $big-icon-size-px);
- }
- &.icon-studip-red-#{$icon} {
- @include background-icon($icon, status-red, $big-icon-size-px);
- }
- &.icon-studip-yellow-#{$icon} {
- @include background-icon($icon, status-yellow, $big-icon-size-px);
- }
- &.icon-studip-green-#{$icon} {
- @include background-icon($icon, status-green, $big-icon-size-px);
- }
- &.icon-studip-gray-#{$icon} {
- @include background-icon($icon, inactive, $big-icon-size-px);
+ &.icon-name-#{$icon} {
+ @include icon(before, $icon, $size: $big-icon-size-px);
}
}
&.quarter {
min-height: $large-icon-size-px;
min-width: $large-icon-size-px;
- background-size: $large-icon-size-px;
}
}
@@ -357,56 +311,29 @@ $large-icon-size-px: $large-icon-size * 1px;
width: calc(50% - 96px);
height: 64px;
display: inline-block;
- border-top: solid 4px;
+ border-top: solid 4px var(--cw-headline-border-color);
content: '';
}
- @each $name, $hex in $border-colors {
- &.border-#{'' + $name}::before,
- &.border-#{'' + $name}::after {
- border-color: $hex;
- }
- }
.icon-layer {
- background-repeat: no-repeat;
- background-position: center;
- background-size: 128px;
+ display: inline-flex;
+ align-items: center;
+ flex-direction: column;
height: 128px;
width: 192px;
- display: inline-block;
margin: auto;
@each $icon in $icons {
- &.icon-black-#{$icon} {
- @include background-icon($icon, info, 128px);
- }
- &.icon-white-#{$icon} {
- @include background-icon($icon, info-alt, 128px);
- }
- &.icon-studip-blue-#{$icon} {
- @include background-icon($icon, $size: 128px);
- }
- &.icon-studip-red-#{$icon} {
- @include background-icon($icon, status-red, 128px);
- }
- &.icon-studip-yellow-#{$icon} {
- @include background-icon($icon, status-yellow, 128px);
- }
- &.icon-studip-green-#{$icon} {
- @include background-icon($icon, status-green, 128px);
- }
- &.icon-studip-gray-#{$icon} {
- @include background-icon($icon, inactive, 128px);
+ &.icon-name-#{$icon} {
+ @include icon(before, $icon, $size: 128px);
}
}
&.half {
height: 128px;
- background-size: 128px;
}
&.quarter {
height: 64px;
width: 96px;
- background-size: 64px;
}
}
&.half {
@@ -425,12 +352,8 @@ $large-icon-size-px: $large-icon-size * 1px;
width: calc(100% - 64px);
min-height: 350px;
margin: 0 auto;
- border-bottom: solid 4px;
- @each $name, $hex in $border-colors {
- &.border-#{'' + $name} {
- border-color: $hex;
- }
- }
+ border-bottom: solid 4px var(--cw-headline-border-color);
+
.cw-block-headline-title {
h1 {
border: none;
@@ -504,39 +427,21 @@ $large-icon-size-px: $large-icon-size * 1px;
}
&.bigicon_top {
.icon-layer {
- background-position: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
height: 98px;
margin-top: 2em;
margin-bottom: 1em;
@each $icon in $icons {
- &.icon-black-#{$icon} {
- @include background-icon($icon, info, 98px);
- }
- &.icon-white-#{$icon} {
- @include background-icon($icon, info-alt, 98px);
- }
- &.icon-studip-blue-#{$icon} {
- @include background-icon($icon, $size: 98px);
- }
- &.icon-studip-red-#{$icon} {
- @include background-icon($icon, status-red, 98px);
- }
- &.icon-studip-yellow-#{$icon} {
- @include background-icon($icon, status-yellow, 98px);
- }
- &.icon-studip-green-#{$icon} {
- @include background-icon($icon, status-green, 98px);
- }
- &.icon-studip-gray-#{$icon} {
- @include background-icon($icon, inactive, 98px);
+ &.icon-name-#{$icon} {
+ @include icon(before, $icon, $size: 98px);
}
}
&.half {
- background-size: 72px;
height: 72px;
- background-position: center;
}
}
@@ -558,32 +463,16 @@ $large-icon-size-px: $large-icon-size * 1px;
}
}
&.bigicon_before {
+ display: flex;
+ align-items: center;
min-height: 300px;
.icon-layer {
min-height: 92px;
min-width: 92px;
- background-position: 0 center;
+
@each $icon in $icons {
- &.icon-black-#{$icon} {
- @include background-icon($icon, info, 92px);
- }
- &.icon-white-#{$icon} {
- @include background-icon($icon, info-alt, 92px);
- }
- &.icon-studip-blue-#{$icon} {
- @include background-icon($icon, $size: 92px);
- }
- &.icon-studip-red-#{$icon} {
- @include background-icon($icon, status-red, 92px);
- }
- &.icon-studip-yellow-#{$icon} {
- @include background-icon($icon, status-yellow, 92px);
- }
- &.icon-studip-green-#{$icon} {
- @include background-icon($icon, status-green, 92px);
- }
- &.icon-studip-gray-#{$icon} {
- @include background-icon($icon, inactive, 92px);
+ &.icon-name-#{$icon} {
+ @include icon(before, $icon, $size: 92px);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/iframe.scss b/resources/assets/stylesheets/scss/courseware/blocks/iframe.scss
index 6bba2ab..bb2c391 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/iframe.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/iframe.scss
@@ -3,12 +3,12 @@
.cw-block-iframe {
.cw-block-content {
iframe {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
width: calc(100% - 2px);
}
.cw-block-iframe-cc-data {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
border-top: none;
margin-top: -6px;
padding-top: 10px;
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/keypoint.scss b/resources/assets/stylesheets/scss/courseware/blocks/keypoint.scss
index 7e1040a..a7b8470 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/keypoint.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/keypoint.scss
@@ -11,8 +11,8 @@
left: 0;
height: 48px;
width: 48px;
- background-color: var(--white);
- border: solid 4px var(--black);
+ background-color: var(--color--global-background);
+ border: solid 4px transparent;
border-radius: 64px;
padding: 16px;
margin: 1px 0;
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/link.scss b/resources/assets/stylesheets/scss/courseware/blocks/link.scss
index bfa286d..609c6ed 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/link.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/link.scss
@@ -6,13 +6,11 @@
}
.cw-link {
- border: solid thin var(--content-color-40);
- color: var(--base-color);
- height: 20px;
+ border: solid thin var(--color--highlight);
+ color: var(--color--highlight);
padding: 1em;
.cw-link-title {
- margin-left: 3em;
&.unit {
header {
font-size: 16px;
@@ -21,29 +19,16 @@
}
&:hover {
- background-color: var(--base-color);
- border: solid thin var(--base-color);
- color: var(--white);
+ background-color: var(--color--highlight);
+ color: var(--color--highlight-contrast);
}
&.internal {
- @include background-icon(link-intern, $size: 28px);
- background-position: 1em 50%;
- background-repeat: no-repeat;
-
- &:hover {
- @include background-icon(link-intern, info-alt, 28px);
- }
+ @include icon(before, link-intern, $size: 28px, $align: middle, $padding: 8px);
}
&.external {
- @include background-icon(link-extern, $size: 28px);
- background-position: 1em 50%;
- background-repeat: no-repeat;
-
- &:hover {
- @include background-icon(link-extern, info-alt, 28px);
- }
+ @include icon(before, link-extern, $size: 28px, $align: middle, $padding: 8px);
.cw-link-og-image {
display: inline-block;
@@ -69,7 +54,7 @@
}
.cw-link-og-description {
- color: var(--base-color-80);
+ color: var(--color--font-secondary);
text-align: justify;
}
}
@@ -78,6 +63,7 @@
&.unit {
height: unset;
display: flex;
+ gap: 8px;
.cw-unit-link {
background-repeat: no-repeat;
@@ -95,10 +81,10 @@
&:hover {
background-color: unset;
- border: solid thin var(--base-color);
+ border: solid thin var(--color--highlight);
.cw-link-title {
header {
- color: var(--active-color);
+ color: var(--color--content-link-hover);
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/lti.scss b/resources/assets/stylesheets/scss/courseware/blocks/lti.scss
index 5f4a82a..9d48a67 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/lti.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/lti.scss
@@ -3,16 +3,14 @@
.cw-block-lti {
.cw-block-content {
.cw-block-lti-content {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
box-sizing: border-box;
}
.cw-block-lti-icon-tool {
- @include background-icon(plugin, info, 24px);
- background-repeat: no-repeat;
+ @include icon(before, plugin, $size: 24px, $align: middle);
display: block;
- padding: 16px 16px 16px 40px;
- background-position: 10px center;
+ padding: 16px;
overflow: hidden;
text-overflow: ellipsis;
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/table-of-contents.scss b/resources/assets/stylesheets/scss/courseware/blocks/table-of-contents.scss
index 76bc53c..fac4948 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/table-of-contents.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/table-of-contents.scss
@@ -10,17 +10,17 @@
.cw-block-table-of-contents-list {
padding: 0;
list-style: none;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
li {
&:not(:last-child) {
- border-bottom: solid thin var(--dark-gray-color-30);
+ border-bottom: solid thin var(--color--courseware-border-active);
}
a {
display: block;
padding: 1em;
}
&:hover {
- background-color: fade-out($dark-gray-color-75, 0.8);
+ background-color: var(--color--courseware-background-highlight);
}
}
}
@@ -28,14 +28,14 @@
.cw-block-table-of-contents-list-details {
padding: 0;
list-style: none;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
li {
&:not(:last-child) {
- border-bottom: solid thin var(--dark-gray-color-30);
+ border-bottom: solid thin var(--color--courseware-border-active);
}
&:hover {
- background-color: fade-out($dark-gray-color-75, 0.8);
+ background-color: var(--color--courseware-background-highlight);
}
a {
display: block;
@@ -58,7 +58,7 @@
p,
p:hover {
- color: var(--black);
+ color: var(--color--font-primary);
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/blocks/timeline.scss b/resources/assets/stylesheets/scss/courseware/blocks/timeline.scss
index 49256b7..d928786 100644
--- a/resources/assets/stylesheets/scss/courseware/blocks/timeline.scss
+++ b/resources/assets/stylesheets/scss/courseware/blocks/timeline.scss
@@ -21,7 +21,7 @@
content:"";
width: 3px;
height: 100%;
- background: var(--content-color-40);
+ background: var(--color--courseware-border-default);
left: 50%;
top: 0;
position: absolute;
@@ -40,7 +40,7 @@
@extend %clearfix;
.cw-timeline-item-icon {
- background: var(--white);
+ background: var(--color--global-background);
width: 50px;
height: 50px;
position: absolute;
@@ -51,73 +51,28 @@
@each $name, $color in $tile-colors {
&.cw-timeline-item-icon-color-#{"" + $name} {
border: solid 2px $color;
+ color: $color;
}
}
border-radius: 50%;
- img {
+ .studip-icon {
position: relative;
top: 9px;
left: 9px;
-
- &.charcoal {
- filter: brightness(0) saturate(100%) invert(22%) sepia(29%) saturate(364%) hue-rotate(168deg) brightness(87%) contrast(79%);
- }
- &.royal-purple {
- filter: brightness(0) saturate(100%) invert(35%) sepia(43%) saturate(658%) hue-rotate(234deg) brightness(100%) contrast(87%);
- }
- &.iguana-green {
- filter: brightness(0) saturate(100%) invert(74%) sepia(9%) saturate(1885%) hue-rotate(76deg) brightness(86%) contrast(88%);
- }
- &.queen-blue {
- filter: brightness(0) saturate(100%) invert(44%) sepia(10%) saturate(2086%) hue-rotate(178deg) brightness(88%) contrast(80%);
- }
- &.verdigris {
- filter: brightness(0) saturate(100%) invert(64%) sepia(11%) saturate(4959%) hue-rotate(131deg) brightness(103%) contrast(49%);
- }
- &.mulberry {
- filter: brightness(0) saturate(100%) invert(49%) sepia(16%) saturate(1665%) hue-rotate(271deg) brightness(88%) contrast(95%);
- }
- &.pumpkin {
- filter: brightness(0) saturate(100%) invert(38%) sepia(86%) saturate(1993%) hue-rotate(13deg) brightness(104%) contrast(108%);
- }
- &.sunglow {
- filter: brightness(0) saturate(100%) invert(93%) sepia(69%) saturate(6824%) hue-rotate(313deg) brightness(102%) contrast(100%);
- }
- &.apple-green {
- filter: brightness(0) saturate(100%) invert(69%) sepia(5%) saturate(5203%) hue-rotate(42deg) brightness(100%) contrast(84%);
- }
- &.studip-blue {
- filter: brightness(0) saturate(100%) invert(26%) sepia(19%) saturate(1783%) hue-rotate(177deg) brightness(96%) contrast(93%);
- }
- &.studip-lightblue {
- filter: brightness(0) saturate(100%) invert(91%) sepia(12%) saturate(190%) hue-rotate(190deg) brightness(104%) contrast(89%);
- }
- &.studip-red {
- filter: brightness(0) saturate(100%) invert(8%) sepia(95%) saturate(6904%) hue-rotate(1deg) brightness(95%) contrast(109%);
- }
- &.studip-green {
- filter: brightness(0) saturate(100%) invert(27%) sepia(85%) saturate(1531%) hue-rotate(109deg) brightness(95%) contrast(101%);
- }
- &.studip-yellow {
- filter: brightness(0) saturate(100%) invert(94%) sepia(14%) saturate(7314%) hue-rotate(330deg) brightness(103%) contrast(101%);
- }
- &.studip-gray {
- filter: brightness(0) saturate(100%) invert(46%) sepia(1%) saturate(2621%) hue-rotate(169deg) brightness(87%) contrast(87%);
- }
}
}
.cw-timeline-item-content {
width: 40%;
- background: var(--white);
+ background: var(--color--global-background);
padding: 20px;
transition: all var(--transition-duration) ease;
h3 {
padding: 15px;
- color: var(--white);
+ color: var(--color--font-inverted);
margin: -20px -20px 0 -20px;
font-weight: 700;
min-height: 1.1em;
@@ -125,7 +80,7 @@
article {
min-height: 2em;
- border: solid thin var(--content-color-20);
+ border: solid thin var(--color--courseware-border-active);
border-top: none;
margin: 0 -20px;
padding: 15px;
diff --git a/resources/assets/stylesheets/scss/courseware/comments.scss b/resources/assets/stylesheets/scss/courseware/comments.scss
index cec94b0..ef989fc 100644
--- a/resources/assets/stylesheets/scss/courseware/comments.scss
+++ b/resources/assets/stylesheets/scss/courseware/comments.scss
@@ -23,14 +23,14 @@
.cw-structural-element-comment-create,
.cw-block-feedback-create,
.cw-block-comment-create {
- border-top: solid thin var(--content-color-40);
+ border-top: solid thin var(--color--courseware-border-default);
padding: 8px 1em 0 1em;
textarea {
width: calc(100% - 6px);
resize: none;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
&:active {
- border: solid thin var(--content-color-80);
+ border: solid thin var(--color--courseware-border-active);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/containers/accordion.scss b/resources/assets/stylesheets/scss/courseware/containers/accordion.scss
index 5cbd2df..87e45eb 100644
--- a/resources/assets/stylesheets/scss/courseware/containers/accordion.scss
+++ b/resources/assets/stylesheets/scss/courseware/containers/accordion.scss
@@ -4,7 +4,7 @@
.cw-block-wrapper-active {
.cw-container-accordion-block-list:empty {
height: 4em;
- border: dashed 2px var(--content-color-40);
+ border: dashed 2px var(--color--courseware-border-default);
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/containers/default-container.scss b/resources/assets/stylesheets/scss/courseware/containers/default-container.scss
index 02317f9..4860b9e 100644
--- a/resources/assets/stylesheets/scss/courseware/containers/default-container.scss
+++ b/resources/assets/stylesheets/scss/courseware/containers/default-container.scss
@@ -21,13 +21,14 @@
background-color: var(--color--content-box-header);
padding: 4px 10px 4px 22px;
+ @include highlight-anchor;
.cw-container-header-toggle {
- display: inline-block;
+ display: inline-flex;
+ align-items: center;
width: calc(100% - 40px);
}
span {
- color: var(--base-color);
font-weight: 700;
line-height: 2em;
font-size: 16px;
@@ -37,11 +38,6 @@
}
}
- img {
- vertical-align: middle;
- margin-bottom: 2px;
- }
-
.cw-container-actions {
position: relative;
float: right;
diff --git a/resources/assets/stylesheets/scss/courseware/containers/list.scss b/resources/assets/stylesheets/scss/courseware/containers/list.scss
index 063adda..0fbf55d 100644
--- a/resources/assets/stylesheets/scss/courseware/containers/list.scss
+++ b/resources/assets/stylesheets/scss/courseware/containers/list.scss
@@ -8,7 +8,7 @@
.cw-container-list-block-list:empty {
height: 4em;
- border: dashed 2px var(--content-color-40);
+ border: dashed 2px var(--color--courseware-border-default);
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/containers/tabs.scss b/resources/assets/stylesheets/scss/courseware/containers/tabs.scss
index 5ff8789..384faf7 100644
--- a/resources/assets/stylesheets/scss/courseware/containers/tabs.scss
+++ b/resources/assets/stylesheets/scss/courseware/containers/tabs.scss
@@ -13,7 +13,7 @@
.cw-container-tabs-block-list:empty {
height: 4em;
- border: dashed 2px var(--content-color-40);
+ border: dashed 2px var(--color--courseware-border-default);
margin: 5px;
}
diff --git a/resources/assets/stylesheets/scss/courseware/dashboard.scss b/resources/assets/stylesheets/scss/courseware/dashboard.scss
index a3e9dd3..3734fb1 100644
--- a/resources/assets/stylesheets/scss/courseware/dashboard.scss
+++ b/resources/assets/stylesheets/scss/courseware/dashboard.scss
@@ -72,7 +72,7 @@
padding: 0;
.cw-activity-item {
- border-bottom: solid thin var(--content-color-40);
+ border-bottom: solid thin var(--color--courseware-border-default);
padding: 0.5em;
&:last-child {
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/call-to-action.scss b/resources/assets/stylesheets/scss/courseware/layouts/call-to-action.scss
index 2e5e3b9..f5ad9ee 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/call-to-action.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/call-to-action.scss
@@ -1,19 +1,20 @@
@use '../../../mixins.scss' as *;
.cw-call-to-action {
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
.action-button {
width: 100%;
- background-color: var(--activity-color-20);
+ background-color: var(--color--global-background);
border: none;
text-align: left;
padding: 1em;
cursor: pointer;
- img {
- margin: 0 1em;
+ .studip-icon {
+ display: inline-block;
vertical-align: middle;
+ margin-right: 1em;
}
}
} \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/collapsible.scss b/resources/assets/stylesheets/scss/courseware/layouts/collapsible.scss
index e1acb44..15ffaed 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/collapsible.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/collapsible.scss
@@ -5,27 +5,21 @@
margin-bottom: -1px;
.cw-collapsible-title {
- @include background-icon(arr_1right);
- background-position: 6px center;
- background-repeat: no-repeat;
+ @include icon(before, arr_1right, $align: middle, $padding: 4px);
background-color: var(--color--content-box-header);
- padding: 0.5em 2em;
+ padding: 0.5em;
margin: 0;
font-weight: 600;
- color: var(--base-color);
+ color: var(--color--highlight);
cursor: pointer;
&.cw-collapsible-open {
- @include background-icon(arr_1down);
+ @include icon(before, arr_1down, $align: middle, $padding: 4px);
.cw-container-list-sort-mode {
margin-top: 8px;
}
}
-
- img {
- vertical-align: top;
- }
}
.cw-collapsible-content.cw-collapsible-content-open {
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/companion.scss b/resources/assets/stylesheets/scss/courseware/layouts/companion.scss
index dc80d39..229f436 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/companion.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/companion.scss
@@ -19,12 +19,12 @@ $companion-types: (
max-width: calc(100% - 140px);
height: 120px;
z-index: 42000;
- border: solid thin var(--content-color-40);
- background-color: var(--white);
+ border: solid thin var(--color--courseware-border-default);
+ background-color: var(--color--global-background);
background-repeat: no-repeat;
background-position: 1em center;
background-size: 100px;
- box-shadow: 5px 5px var(--dark-gray-color-10);
+ box-shadow: 5px 5px var(--color--courseware-border-default);
padding-left: 120px;
transform: translateX(100%);
transition: transform .5s ease;
@@ -46,27 +46,13 @@ $companion-types: (
top: 25%;
padding: 0 1em;
}
-
- .cw-compantion-overlay-close {
- @include background-icon(decline);
- background-color: var(--white);
- background-repeat: no-repeat;
-
- position: absolute;
- top: 7px;
- right: 7px;
- height: var(--icon-size-default);
- width: var(--icon-size-default);
- border: none;
- cursor: pointer;
- }
}
.cw-companion-box {
display: flex;
height: 120px;
- border: solid thin var(--content-color-40);
- background-color: var(--white);
+ border: solid thin var(--color--courseware-border-default);
+ background-color: var(--color--global-background);
background-repeat: no-repeat;
background-position: 1em center;
background-size: 100px;
@@ -90,6 +76,6 @@ $companion-types: (
.cw-companion-message {
margin: 0 1em 10px 0;
- color: var(--black);
+ color: var(--color--font-primary);
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/import-zip.scss b/resources/assets/stylesheets/scss/courseware/layouts/import-zip.scss
index 5ffd9a2..3b5f1eb 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/import-zip.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/import-zip.scss
@@ -7,7 +7,7 @@
}
.progress-bar-wrapper {
width: 100%;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
.progress-bar {
display: flex;
@@ -16,7 +16,7 @@
color: white;
text-align: center;
white-space: nowrap;
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/progress.scss b/resources/assets/stylesheets/scss/courseware/layouts/progress.scss
index 822294f..5cf7ac6 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/progress.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/progress.scss
@@ -30,7 +30,7 @@
}
.cw-unit-progress-subchapter-list {
- border-top: solid thin var(--content-color-40);
+ border-top: solid thin var(--color--courseware-border-default);
padding: 0 1em 0 1em;
.cw-unit-empty-info {
@@ -41,7 +41,7 @@
.cw-unit-progress-item {
display: block;
- border-bottom: solid thin var(--content-color-40);
+ border-bottom: solid thin var(--color--courseware-border-default);
padding: 10px 0;
&:hover {
@@ -60,7 +60,7 @@
.cw-unit-progress-item-value {
width: 70px;
- color: var(--base-color);
+ color: var(--color--highlight);
font-size: xx-large;
.cw-progress-circle {
@@ -70,7 +70,7 @@
}
.cw-unit-progress-item-description {
- color: var(--base-color);
+ color: var(--color--highlight);
padding: 0.5em 0 0 1em;
text-overflow: ellipsis;
overflow: hidden;
@@ -85,7 +85,7 @@
padding: 0;
width: 5em;
height: 5em;
- background-color: var(--dark-gray-color-10);
+ background-color: var(--color--courseware-background-highlight);
border-radius: 50%;
line-height: 5em;
@@ -109,7 +109,7 @@
width: 5em;
text-align: center;
display: block;
- color: var(--base-color);
+ color: var(--color--highlight);
z-index: 2;
}
@@ -131,14 +131,14 @@
width: 5em;
height: 5em;
border-radius: 50%;
- border: 0.45em solid var(--base-color);
+ border: 0.45em solid var(--color--highlight);
box-sizing: border-box;
}
&.over50 .first50-bar {
position: absolute;
clip: rect(0, 5em, 5em, 2.5em);
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
border-radius: 50%;
width: 5em;
height: 5em;
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/radioset.scss b/resources/assets/stylesheets/scss/courseware/layouts/radioset.scss
index 673ed2b..d867fce 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/radioset.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/radioset.scss
@@ -27,12 +27,13 @@ form.default .cw-radioset {
width: 100%;
margin: 0;
cursor: pointer;
- @include background-icon(radiobutton-unchecked);
+ @include icon(after, radiobutton-unchecked);
background-position: center 104px;
background-repeat: no-repeat;
+ color: var(--color--highlight);
.label-text {
- height: 48px;
+ height: 42px;
max-width: 80%;
overflow: hidden;
display: grid;
@@ -48,7 +49,7 @@ form.default .cw-radioset {
@each $type, $icon in $radio-icons {
&.#{$type} {
- @include background-icon(#{$icon}, $size: 48px);
+ @include icon(before, #{$icon}, $size: 48px);
}
}
}
@@ -68,14 +69,15 @@ form.default .cw-radioset {
}
&.selected {
- border-color: var(--base-color);
+ border-color: var(--color--highlight);
+ color: var(--color--highlight);
background-color: var(--color--tile-background-active);
label {
- @include background-icon(check-circle);
+ @include icon(after, check-circle);
.label-icon {
@each $type, $icon in $radio-icons {
&.#{$type} {
- @include background-icon(#{$icon}, $size: 48px);
+ @include icon(before, #{$icon}, $size: 48px);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/ribbon.scss b/resources/assets/stylesheets/scss/courseware/layouts/ribbon.scss
index c04407b..c256fe1 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/ribbon.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/ribbon.scss
@@ -16,7 +16,7 @@ $consum_ribbon_width: calc(100% - 58px);
.cw-ribbon-wrapper-consume {
padding-top: 7px;
padding-bottom: 15px;
- background-color: var(--white);
+ background-color: var(--color--global-background);
z-index: 42;
}
@@ -25,7 +25,7 @@ $consum_ribbon_width: calc(100% - 58px);
height: 15px;
left: 0;
width: calc(100% - 1em);
- background-color: var(--white);
+ background-color: var(--color--global-background);
z-index: 40;
}
@@ -34,7 +34,7 @@ $consum_ribbon_width: calc(100% - 58px);
top: 40px;
height: 20px;
width: calc(100% - 314px);
- background-color: var(--white);
+ background-color: var(--color--global-background);
z-index: 39;
}
@@ -43,7 +43,7 @@ $consum_ribbon_width: calc(100% - 58px);
top: 108px;
height: 16px;
width: calc(100% - 314px);
- background-color: var(--white);
+ background-color: var(--color--global-background);
z-index: 39;
}
@@ -61,7 +61,7 @@ $consum_ribbon_width: calc(100% - 58px);
margin-bottom: 15px;
padding: 0 2em;
justify-content: space-between;
- background-color: var(--dark-gray-color-10);
+ background-color: var(--color--content-bar-background);
&.cw-ribbon-sticky {
position: fixed;
@@ -82,33 +82,26 @@ $consum_ribbon_width: calc(100% - 58px);
padding: 1px 2px;
border: none;
background-color: transparent;
- background-repeat: no-repeat;
- background-position: center;
- background-size: 24px;
+ color: var(--color--highlight);
cursor: pointer;
&.cw-ribbon-button-menu {
- @include background-icon(table-of-contents);
+ @include icon(before, table-of-contents, $align: middle);
}
&.cw-ribbon-button-prev {
- @include background-icon(arr_1left, $size: 24px);
+ @include icon(before, arr_1left, $size: 24px, $align: middle);
margin: 0 0.5em 0 0;
}
&.cw-ribbon-button-next {
- @include background-icon(arr_1right, $size: 24px);
- margin: 0 0.5em 0 0;
- }
-
- &.cw-ribbon-button-prev-disabled {
- @include background-icon(arr_1left, inactive, 24px);
+ @include icon(before, arr_1right, $size: 24px, $align: middle);
margin: 0 0.5em 0 0;
- cursor: default;
}
- &.cw-ribbon-button-next-disabled {
- @include background-icon(arr_1right, inactive, 24px);
+ &.cw-ribbon-button-prev.disabled,
+ &.cw-ribbon-button-next.disabled {
+ color: var(--color--font-inactive);
margin: 0 0.5em 0 0;
cursor: default;
}
@@ -125,12 +118,10 @@ $consum_ribbon_width: calc(100% - 58px);
display: flex;
align-items: center;
+ @include highlight-anchor;
+
.contentbar-icon {
margin: 0 15px 0 10px;
-
- img {
- vertical-align: middle;
- }
}
}
@@ -160,13 +151,7 @@ $consum_ribbon_width: calc(100% - 58px);
text-overflow: ellipsis;
white-space: nowrap;
- a {
- color: var(--base-color);
- text-decoration: none;
- &:hover {
- color: var(--active-color);
- }
- }
+ @include highlight-anchor;
img {
vertical-align: text-top;
@@ -178,6 +163,10 @@ $consum_ribbon_width: calc(100% - 58px);
&.cw-ribbon-breadcrumb-item-current {
flex-shrink: 1;
+
+ .studip-icon {
+ display: inline-block;
+ }
}
}
}
@@ -203,44 +192,43 @@ $consum_ribbon_width: calc(100% - 58px);
}
}
- button:not(.action-menu-icon) {
+ button:not(.action-menu-icon):not(.button) {
height: 32px;
width: 32px;
border-radius: var(--border-radius-default);
- border: solid thin var(--color--button-border);
- background-color: var(--color--button-background);
+ border: solid thin var(--color--highlight);
+ background-color: var(--color--global-background);
cursor: pointer;
&:hover,
&:active,
&.active {
- background: var(--color--button-focus);
+ background: var(--color--highlight);
color: var(--color--font-inverted);
}
&.cw-ribbon-button-menu {
- @include background-icon(table-of-contents);
- background-repeat: no-repeat;
- background-position: center;
+ color: var(--color--highlight);
+ @include icon(before, table-of-contents, $align: middle);
&:hover,
&:active,
&.active {
- @include background-icon(table-of-contents, info_alt);
+ color: var(--color--highlight-contrast);
}
}
}
.action-menu:not(.is-open) {
- border: solid thin var(--color--button-border);
+ border: solid thin var(--color--highlight);
border-radius: var(--border-radius-default);
- background-color: var(--color--button-background);
+ background-color: var(--color--global-background);
padding: 5px;
&:hover,
&:active,
&.active {
- background: var(--color--button-focus);
+ background: var(--color--highlight);
.action-menu-icon span {
background-color: var(--color--font-inverted);
@@ -260,9 +248,9 @@ $consum_ribbon_width: calc(100% - 58px);
}
.cw-ribbon-tools {
- background-color: var(--white);
- border: solid thin var(--content-color-40);
- box-shadow: 2px 2px var(--dark-gray-color-30);
+ background-color: var(--color--global-background);
+ border: solid thin var(--color--courseware-border-default);
+ box-shadow: 2px 2px var(--color--courseware-border-default);
position: absolute;
right: 0;
top: 0;
@@ -294,18 +282,22 @@ $consum_ribbon_width: calc(100% - 58px);
.cw-ribbon-tool-content {
height: 100%;
width: 540px;
- background-color: var(--white);
+ background-color: var(--color--global-background);
padding: 0;
overflow: hidden;
+ a {
+ text-decoration: none;
+ }
+
.cw-ribbon-tool-content-nav {
position: sticky;
height: 100%;
top: 0;
- background-color: var(--white);
+ background-color: var(--color--global-background);
margin: 0;
padding: 0;
- color: var(--base-color);
+ color: var(--color--highlight);
display: flex;
z-index: 43;
@@ -320,11 +312,9 @@ $consum_ribbon_width: calc(100% - 58px);
right: 0;
top: 12px;
cursor: pointer;
- @include background-icon(decline, $size: 24px);
- background-repeat: no-repeat;
- background-size: 24px;
- background-position: center right;
- background-color: var(--white);
+ @include icon(before, decline, $size: 24px, $align: baseline);
+ background-color: var(--color--global-background);
+ color: var(--color--highlight);
}
> .cw-ribbon-tool-content-tablist {
@@ -348,7 +338,7 @@ $consum_ribbon_width: calc(100% - 58px);
> .cw-tabs-content {
border: none;
- border-top: solid thin var(--content-color-40);
+ border-top: solid thin var(--color--courseware-border-default);
padding: 0;
height: calc(100% - 58px);
@@ -359,7 +349,7 @@ $consum_ribbon_width: calc(100% - 58px);
overflow-y: auto;
overflow-x: hidden;
scrollbar-width: thin;
- scrollbar-color: var(--color--scrollbar-thumb) var(--white);
+ scrollbar-color: var(--color--scrollbar-thumb) var(--color--global-background);
&.cw-ribbon-tool-blockadder-tab {
height: 100%;
@@ -387,7 +377,7 @@ $consum_ribbon_width: calc(100% - 58px);
overflow-y: auto;
overflow-x: hidden;
scrollbar-width: thin;
- scrollbar-color: var(--base-color) var(--white);
+ scrollbar-color: var(--color--scrollbar-thumb) var(--color--global-background);
}
}
}
@@ -453,7 +443,7 @@ $consum_ribbon_width: calc(100% - 58px);
&.contentbar-button-menu,
&.cw-ribbon-button-menu {
- @include background-icon(table-of-contents, $size: 24px);
+ @include icon(before, table-of-contents, $size: 24px, $align: middle);
}
&.contentbar-button-zoom::before {
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/tabs.scss b/resources/assets/stylesheets/scss/courseware/layouts/tabs.scss
index c79f950..3d4d49c 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/tabs.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/tabs.scss
@@ -11,11 +11,11 @@
border-bottom: none;
button {
- background-color: var(--white);
+ background-color: var(--color--global-background);
border: none;
padding: 1em 0 4px 0;
margin: 0 7px 0 21px;
- color: var(--base-color);
+ color: var(--color--highlight);
cursor: pointer;
text-align: center;
flex-grow: 1;
@@ -28,14 +28,20 @@
margin-left: -14px;
width: calc(100% + 28px);
content: '';
- border-bottom: solid 3px var(--dark-gray-color-75);
+ border-bottom: solid 3px var(--color--tabs-marker-hover);
transform: scaleX(0);
transition: transform var(--transition-duration) ease-in-out;
}
+ &.is-active {
+ &:after {
+ border-bottom: solid 3px var(--color--tabs-marker-active);
+ }
+ }
+
&.is-active,
&:hover {
- color: var(--black);
+ color: var(--color--font-primary);
&:after {
transform: scaleX(1);
}
@@ -43,44 +49,22 @@
@each $icon in $icons {
&.cw-tabs-nav-icon-text-#{$icon} {
- &::before {
- @include background-icon($icon);
- background-repeat: no-repeat;
- background-position: left bottom;
-
- display: inline-block;
- height: var(--icon-size-inline);
- width: var(--icon-size-inline);
- margin-bottom: -2px;
- padding-left: 4px;
- content: '';
- }
+ @include icon(before, $icon, $padding: 4px, $align: middle);
}
&.is-active.cw-tabs-nav-icon-text-#{$icon},
&.cw-tabs-nav-icon-text-#{$icon}:hover {
- &::before {
- @include background-icon($icon, info);
- }
+ color: var(--color--font-primary);
}
}
+
+ $cw-tabs-nav-icon-solo-size: 24px;
@each $icon in $icons {
&.cw-tabs-nav-icon-solo-#{$icon} {
- &::before {
- display: inline-block;
- height: 24px;
- width: 24px;
- content: '';
-
- @include background-icon($icon, $size: 24px);
- background-repeat: no-repeat;
- background-position: center;
- }
+ @include icon(before, $icon, $size: $cw-tabs-nav-icon-solo-size);
}
&.is-active.cw-tabs-nav-icon-solo-#{$icon},
&.cw-tabs-nav-icon-solo-#{$icon}:hover {
- &::before {
- @include background-icon($icon, info, 24px);
- }
+ color: var(--color--font-primary);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/tile.scss b/resources/assets/stylesheets/scss/courseware/layouts/tile.scss
index 022dde9..0796d96 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/tile.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/tile.scss
@@ -11,7 +11,7 @@
height: 420px;
width: 270px;
margin: 0;
- background-color: var(--base-color);
+ background-color: var(--color--blue-1);
&:last-child {
margin-right: 0;
}
@@ -27,18 +27,18 @@
width: 100%;
background-size: 100% auto;
background-repeat: no-repeat;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
background-position: center;
.overlay-handle {
@extend .drag-handle;
- background-color: var(--white);
+ background-color: var(--color--global-background);
background-position: center !important;
height: 22px;
padding: 4px 8px;
margin-top: 3px;
float: left;
- border-left: solid thin var(--content-color-20);
+ border-left: solid thin var(--color--courseware-background-highlight);
}
@@ -86,14 +86,14 @@
.description {
height: 220px;
padding: 14px;
- color: var(--white);
+ color: var(--color--font-inverted);
position: relative;
display: block;
header {
font-size: 20px;
line-height: 22px;
- color: var(--white);
+ color: var(--color--font-inverted);
border: none;
width: 240px;
overflow: hidden;
@@ -148,15 +148,17 @@
footer {
display: table-cell;
height: 5em;
- color: var(--white);
+ color: var(--color--font-inverted);
overflow: hidden;
text-overflow: ellipsis;
vertical-align: bottom;
p {
+ display: inline-flex;
margin: 0;
+ gap: 4px;
}
- img {
+ svg {
vertical-align: text-bottom;
}
}
@@ -171,7 +173,7 @@
a.description:visited,
a.description:hover {
height: 210px;
- color: var(--white);
+ color: var(--color--font-inverted);
text-decoration: unset;
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/tree-units.scss b/resources/assets/stylesheets/scss/courseware/layouts/tree-units.scss
index 63288b7..3e4e5bd 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/tree-units.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/tree-units.scss
@@ -1,6 +1,6 @@
.cw-tree-units {
.cw-tree-unit-title {
- border-bottom: solid thin var(--content-color-40);
+ border-bottom: solid thin var(--color--courseware-border-default);
color: var(--black);
font-size: 16px;
}
@@ -36,7 +36,7 @@
background-size: 100% auto;
background-repeat: no-repeat;
background-position: center;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
}
.cw-tree-units-header-details {
@@ -53,7 +53,7 @@
}
p {
margin: 0;
- color: var(--black);
+ color: var(--color--font-primary);
}
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/layouts/tree.scss b/resources/assets/stylesheets/scss/courseware/layouts/tree.scss
index 4708e3a..cff1e4e 100644
--- a/resources/assets/stylesheets/scss/courseware/layouts/tree.scss
+++ b/resources/assets/stylesheets/scss/courseware/layouts/tree.scss
@@ -23,7 +23,7 @@
> .cw-tree-item-wrapper {
display: block;
- border-bottom: solid thin var(--content-color-40);
+ border-bottom: solid thin var(--color--courseware-border-default);
margin-bottom: 12px;
> .cw-sortable-handle {
@@ -67,9 +67,6 @@
border-bottom: none;
font-size: 14px;
width: calc(100% - 20px);
- background-repeat: no-repeat;
- background-position-y: center;
- padding-left: 18px;
margin-left: 4px;
margin-bottom: 0;
line-height: 28px;
@@ -78,7 +75,7 @@
width: calc(100% - 38px);
}
- @include background-icon(bullet-dot, $size: 18px);
+ @include icon(before, bullet-dot, $size: 18px, $align: middle, $padding: 4px);
}
form {
display: inline;
@@ -86,13 +83,6 @@
}
> a.cw-tree-item-link {
display: inline-block;
-
- &:hover {
- @include background-icon(bullet-dot, attention, 18px);
- }
- &.cw-tree-item-link-current {
- @include background-icon(bullet-dot, info, 18px);
- }
}
}
@@ -126,21 +116,20 @@
.cw-tree-item-edit-button {
opacity: 0;
padding: 0 4px;
- vertical-align: bottom;
+ vertical-align: text-bottom;
border: none;
background-color: transparent;
cursor: pointer;
- img {
- vertical-align: middle;
- }
+ color: var(--color--highlight);
+
&:focus {
opacity: 1;
}
}
&:hover {
- background-color: var(--light-gray-color-20);
- color: var(--active-color);
+ background-color: var(--color--sidebar-hover);
+ color: var(--color--content-link-hover);
.cw-tree-item-edit-button {
opacity: 1;
@@ -148,12 +137,12 @@
}
&.cw-tree-item-link-current {
- color: var(--black);
+ color: var(--color--font-primary);
font-weight: 600;
cursor: default;
&::before {
- color: var(--black);
+ color: var(--color--font-primary);
}
}
@@ -168,15 +157,15 @@
height: var(--icon-size-inline);
vertical-align: top;
float: right;
- @include background-icon(#{$icon}, $size: $icon-size-inline);
+ @include icon(after, #{$icon}, $size: $icon-size-inline);
}
&:hover .cw-tree-item-flag-#{$type} {
- @include background-icon(#{$icon}, $size: $icon-size-inline);
+ @include icon(after, #{$icon}, $size: $icon-size-inline);
}
&.cw-tree-item-link-current .cw-tree-item-flag-#{$type} {
- @include background-icon(#{$icon}, $size: $icon-size-inline);
+ @include icon(after, #{$icon}, $size: $icon-size-inline);
}
}
}
@@ -190,7 +179,7 @@
width: var(--icon-size-inline);
height: var(--icon-size-inline);
vertical-align: top;
- @include background-icon(accept, info, $icon-size-inline);
+ @include icon(after, accept, $size: $icon-size-inline);
}
&.cw-tree-item-sequential-percentage {
@@ -201,7 +190,7 @@
.cw-tree-item-ghost {
opacity: 0.6;
- border: dashed 2px var(--content-color-40);
+ border: dashed 2px var(--color--courseware-border-default);
height: 28px;
margin-left: 24px !important;
@@ -230,4 +219,17 @@
}
}
}
+
+ .cw-tree-root-list > .cw-tree-item.cw-tree-item-adder > .cw-tree-item-wrapper {
+ border-bottom: none;
+ }
+ .cw-tree-item-adder {
+ .add-element {
+ border: none;
+ cursor: pointer;
+ background-color: transparent;
+ color: var(--color--highlight);
+ height: 28px;
+ }
+ }
}
diff --git a/resources/assets/stylesheets/scss/courseware/shelf.scss b/resources/assets/stylesheets/scss/courseware/shelf.scss
index fb339b5..de9796d 100644
--- a/resources/assets/stylesheets/scss/courseware/shelf.scss
+++ b/resources/assets/stylesheets/scss/courseware/shelf.scss
@@ -2,7 +2,7 @@
.cw-contents-overview-teaser {
max-width: 782px;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
background-image: url('#{$image-path}/courseware-keyvisual-negative.svg');
background-repeat: no-repeat;
background-size: 196px;
@@ -54,8 +54,8 @@
.cw-unit-items {
.unit-ghost {
- background: var(--white);
- border: dashed 2px var(--content-color-40);
+ background: var(--color--global-background);
+ border: dashed 2px var(--color--courseware-border-default);
}
.unit-ghost .cw-tile {
opacity: 0;
diff --git a/resources/assets/stylesheets/scss/courseware/sortable.scss b/resources/assets/stylesheets/scss/courseware/sortable.scss
index b0edc5a..989b285 100644
--- a/resources/assets/stylesheets/scss/courseware/sortable.scss
+++ b/resources/assets/stylesheets/scss/courseware/sortable.scss
@@ -102,8 +102,8 @@
}
.container-ghost {
- background: var(--white);
- border: dashed 2px var(--content-color-40);
+ background: var(--color--global-background);
+ border: dashed 2px var(--color--courseware-border-default);
margin-top: -5px;
margin-bottom: 15px;
@@ -128,8 +128,8 @@
}
.block-ghost {
- background: var(--white);
- border: dashed 2px var(--content-color-40);
+ background: var(--color--global-background);
+ border: dashed 2px var(--color--courseware-border-default);
padding-top: 5px;
padding-left: 5px;
height: 100px;
diff --git a/resources/assets/stylesheets/scss/courseware/structural-element.scss b/resources/assets/stylesheets/scss/courseware/structural-element.scss
index 8142aac..278c0db 100644
--- a/resources/assets/stylesheets/scss/courseware/structural-element.scss
+++ b/resources/assets/stylesheets/scss/courseware/structural-element.scss
@@ -160,16 +160,19 @@
padding-bottom: 1em;
}
+$cw-placeholder-image-size: 128px;
.cw-structural-element-image-preview-placeholder {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
width: 300px;
- height: 200px;
+ height: $cw-placeholder-image-size;
margin: 0 auto;
- background-color: var(--color-image-placeholder-background);
- background-size: 100% auto;
- background-repeat: no-repeat;
- background-position: center;
- @include background-icon(courseware, $size: 128px);
+ background-color: var(--color--image-placeholder-background);
+ color: var(--color--image-placeholder-icon);
+ @include icon(before, courseware, $size: $cw-placeholder-image-size);
margin-bottom: 1em;
+ padding: 36px 0;
}
.cw-element-permissions {
@@ -197,8 +200,7 @@
height: 24px;
border: none;
background-color: transparent;
- @include background-icon(trash);
- background-repeat: no-repeat;
+ @include icon(before, trash, $align: middle);
cursor: pointer;
}
}
diff --git a/resources/assets/stylesheets/scss/courseware/tasks.scss b/resources/assets/stylesheets/scss/courseware/tasks.scss
new file mode 100644
index 0000000..67658d0
--- /dev/null
+++ b/resources/assets/stylesheets/scss/courseware/tasks.scss
@@ -0,0 +1,12 @@
+.cw-taskgroup-task-item-solver-info {
+ display: inline-flex;
+ gap: 8px;
+}
+
+.cw-task-group-peer-review-processes {
+ margin-block-start: 3rem;
+}
+
+.courseware-dashboard-tasks > * + * {
+ margin-block-start: 2rem;
+} \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/courseware/toolbar.scss b/resources/assets/stylesheets/scss/courseware/toolbar.scss
index 78a67e2..927dbb9 100644
--- a/resources/assets/stylesheets/scss/courseware/toolbar.scss
+++ b/resources/assets/stylesheets/scss/courseware/toolbar.scss
@@ -12,8 +12,8 @@
.cw-toolbar-tools {
width: 270px;
min-height: 100%;
- border: solid thin var(--content-color-40);
- background-color: var(--white);
+ border: solid thin var(--color--courseware-border-default);
+ background-color: var(--color--global-background);
overflow: hidden;
position: relative;
padding: 0 4px;
@@ -40,7 +40,7 @@
.cw-toolbar-tool-content {
overflow-y: auto;
scrollbar-width: thin;
- scrollbar-color: var(--color--scrollbar-thumb) var(--white);
+ scrollbar-color: var(--color--scrollbar-thumb) var(--color--global-background);
padding-right: 6px;
}
@@ -85,8 +85,8 @@
.cw-toolbar-button-wrapper {
position: sticky;
top: 0;
- background-color: var(--white);
- border-bottom: solid thin var(--content-color-40);
+ background-color: var(--color--global-background);
+ border-bottom: solid thin var(--color--courseware-border-default);
display: flex;
z-index: 31;
margin: 0 0 8px -4px;
@@ -97,26 +97,28 @@
margin: 0 4px 0 4px;
padding: 2px 8px 0 8px;
border: none;
- background-color: var(--white);
- background-repeat: no-repeat;
- background-position: center center;
+ background-color: var(--color--global-background);
+ color: var(--color--highlight);
cursor: pointer;
border-bottom: solid 2px transparent;
&.cw-toolbar-button-toggle {
- text-align: end;
+ display: flex;
+ flex-direction: row-reverse;
+ align-items: center;
flex-grow: 1;
}
&.active {
- border-bottom: solid 3px var(--dark-gray-color-75);
+ color: var(--color--font-primary);
+ border-bottom: solid 3px var(--color--tabs-marker-active);
}
}
.cw-toolbar-spacer-right {
z-index: 39;
flex-shrink: 0;
position: relative;
- background-color: var(--white);
+ background-color: var(--color--global-background);
width: 15px;
height: calc(100% + 2px);
}
diff --git a/resources/assets/stylesheets/scss/courseware/variables.scss b/resources/assets/stylesheets/scss/courseware/variables.scss
index 248e300..c746708 100644
--- a/resources/assets/stylesheets/scss/courseware/variables.scss
+++ b/resources/assets/stylesheets/scss/courseware/variables.scss
@@ -33,25 +33,6 @@ $tile-colors: (
studip-gray: #636a71,
);
-$icon-colors: (
- icon-white: #ffffff,
- icon-black: #000000,
- icon-red: #cb1800,
- icon-blue: #24437c,
- icon-green: #00962d,
- icon-gray: #6e6e6e,
- icon-yellow: #ffad00
-);
-$border-colors: (
- white: #ffffff,
- black: #000000,
- studip-red: #cb1800,
- studip-blue: #24437c,
- studip-green: #00962d,
- studip-gray: #6e6e6e,
- studip-yellow: #ffad00
-);
-
$blockadder-items: (
before-after: block-comparison,
blubber: blubber,
diff --git a/resources/assets/stylesheets/scss/courseware/widgets.scss b/resources/assets/stylesheets/scss/courseware/widgets.scss
index cef91c5..87584a9 100644
--- a/resources/assets/stylesheets/scss/courseware/widgets.scss
+++ b/resources/assets/stylesheets/scss/courseware/widgets.scss
@@ -1,59 +1,7 @@
.cw-action-widget {
- .cw-action-widget-show-toc {
- @include background-icon(table-of-contents);
+ @each $name, $icon in $button-icons {
+ &-#{$name} button {
+ @include icon(before, $icon);
+ }
}
- .cw-action-widget-edit {
- @include background-icon(edit);
- }
- .cw-action-widget-sort {
- @include background-icon(arr_1sort);
- }
- .cw-action-widget-add {
- @include background-icon(add);
- }
- .cw-action-widget-export {
- @include background-icon(export);
- }
- .cw-action-widget-info {
- @include background-icon(info);
- }
- .cw-action-widget-star {
- @include background-icon(star);
- }
- .cw-action-widget-trash {
- @include background-icon(trash);
- }
- .cw-action-widget-oer {
- @include background-icon(oer-campus);
- }
- .cw-action-widget-remove-lock {
- @include background-icon(lock-unlocked);
- }
-}
-
-.cw-export-widget {
- .cw-export-widget-export {
- @include background-icon(export);
- }
- .cw-export-widget-export-pdf {
- @include background-icon(export);
- }
- .cw-export-widget-oer {
- @include background-icon(share);
- }
-}
-
-.cw-import-widget {
- .cw-import-widget-archive {
- @include background-icon(import);
- }
- .cw-import-widget-copy {
- @include background-icon(copy);
- }
- .cw-import-widget-import {
- @include background-icon(import);
- }
- .cw-action-widget-link {
- @include background-icon(group);
- }
-}
+} \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/courseware/wizards.scss b/resources/assets/stylesheets/scss/courseware/wizards.scss
index 953f510..21c2ce9 100644
--- a/resources/assets/stylesheets/scss/courseware/wizards.scss
+++ b/resources/assets/stylesheets/scss/courseware/wizards.scss
@@ -5,17 +5,17 @@
.cw-element-selector-item {
display: block;
width: 100%;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
padding: 0.5em;
margin-bottom: 5px;
- background-color: var(--white);
- color: var(--base-color);
+ background-color: var(--color--global-background);
+ color: var(--color--highlight);
text-align: left;
cursor: pointer;
&:hover {
- color: var(--white);
- background-color: var(--base-color);
+ color: var(--color--global-background);
+ background-color: var(--color--highlight);
}
}
}
@@ -25,7 +25,13 @@ form.default .courseware-structural-element-selector {
padding-left: 0;
.courseware-structural-element-selector-item {
+ .studip-icon {
+ display: inline-block;
+ }
+
.radiobutton {
+ display: inline-block;
+ height: var(--icon-size-default);
background: none;
border: none;
padding: 0;
@@ -39,7 +45,6 @@ form.default .courseware-structural-element-selector {
display: inline-block;
margin-bottom: 0;
text-indent: 0;
- vertical-align: middle;
}
img {
diff --git a/resources/assets/stylesheets/scss/css_tree.scss b/resources/assets/stylesheets/scss/css_tree.scss
index b30adc2..2785896 100644
--- a/resources/assets/stylesheets/scss/css_tree.scss
+++ b/resources/assets/stylesheets/scss/css_tree.scss
@@ -52,12 +52,11 @@ $css-tree-border: 1px solid var(--light-gray-color-80);
input[type=checkbox] {
display: none;
+ label {
- @include icon(before, arr_1right);
+ @include icon(before, arr_1right, $align: bottom);
cursor: pointer;
&:before {
transition: transform var(--transition-duration);
- vertical-align: baseline;
}
}
~ ul {
diff --git a/resources/assets/stylesheets/scss/dashboard.scss b/resources/assets/stylesheets/scss/dashboard.scss
index ccf9f22..1ef490c 100644
--- a/resources/assets/stylesheets/scss/dashboard.scss
+++ b/resources/assets/stylesheets/scss/dashboard.scss
@@ -148,8 +148,8 @@ form div.files-search {
.button {
margin: 0;
line-height: 1.5;
- background-color: var(--color--button-background);
- color: var(--brand-color-dark);
+ background-color: var(--color--global-background);
+ color: var(--color--highlight);
min-width: auto;
border: 1px solid var(--light-gray-color-40);
border-left: none;
@@ -157,10 +157,6 @@ form div.files-search {
border-top-right-radius: var(--border-radius-search);
border-bottom-right-radius: var(--border-radius-search);
}
-
- img {
- vertical-align: middle;
- }
}
}
diff --git a/resources/assets/stylesheets/scss/dialog.scss b/resources/assets/stylesheets/scss/dialog.scss
index efdcc0e..5aa73f2 100644
--- a/resources/assets/stylesheets/scss/dialog.scss
+++ b/resources/assets/stylesheets/scss/dialog.scss
@@ -14,9 +14,9 @@
}
.ui-dialog-titlebar {
- background: var(--brand-color-darker);
+ background: var(--color--info);
border: 0;
- color: var(--contrast-content-white);
+ color: var(--color--info-contrast);
font-size:1.3em;
font-weight: normal;
@@ -27,6 +27,7 @@
.ui-dialog-titlebar-close {
@include square(32px);
+ color: var(--color--info-contrast);
background: inherit;
border: 0;
line-height:32px;
@@ -42,18 +43,14 @@
padding: 0;
}
.ui-icon {
- @include square($icon-size-default);
- @include background-icon(decline, info_alt);
- background-position: 0;
- display:inline-block;
margin: 0;
-
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
-
- &:hover{
- @include background-icon(decline, info_alt);
+ @include square($icon-size-default);
+ @include icon(before, decline);
+ &::before {
+ display: block;
}
}
}
@@ -116,15 +113,15 @@
}
}
.ui-dialog-titlebar-wiki {
- @include background-icon(question-circle, info_alt, 24px);
- background-position: center;
- background-repeat: no-repeat;
- display: inline-block;
position: absolute;
- @include square(32px);
margin-top: -16px;
top: 50%;
right: 34px; // This is ugly but hard to avoid since the close button's position on a dialog is also hardcoded
+ @include icon(before, question-circle, $size: 24px);
+ @include square(32px);
+ &::before {
+ color: var(--color--info-contrast);
+ }
}
// Centered content in dialog
@@ -145,28 +142,31 @@
min-width: 30em;
.ui-dialog-titlebar {
- background-color: var(--yellow);
- color: text-contrast($yellow, $black, $white);
+ background-color: var(--color--attention);
+ color: var(--color--attention-contrast);
text-align: left;
}
.ui-dialog-titlebar-close {
+ color: var(--color--attention-contrast);
background: transparent;
border: 0;
.ui-icon, .ui-icon:hover {
- @include background-icon(decline);
- background-position: 0;
+ @include icon(before, decline);
+ &::before {
+ display: block;
+ }
}
}
.ui-dialog-content {
box-sizing: border-box;
- @include background-icon(question-circle-full, status-yellow);
- background-position: 12px 8px;
- background-repeat: no-repeat;
- background-size: 32px;
- padding: 15px 15px 15px 55px;
+ padding: 15px;
max-height: 60vh;
+ @include icon(before, question-circle-full, $size: 32px, $align: middle, $padding: 8px);
+ &::before {
+ color: var(--color--attention);
+ }
}
.ui-dialog-buttonpane {
@@ -343,7 +343,7 @@ v u e d i a l o g
display: flex;
}
.studip-dialog-header {
- background: var(--base-color) none repeat scroll 0 0;
+ background: var(--color--info) none repeat scroll 0 0;
border-bottom: 1px solid var(--dark-gray-color-10);
color: var(--white);
justify-content: space-between;
@@ -356,12 +356,10 @@ v u e d i a l o g
}
}
.studip-dialog-close-button {
- @include background-icon(decline, info-alt);
- background-repeat: no-repeat;
- background-position-y: center;
- background-color: transparent;
+ @include icon(before, decline, $align: text-bottom);
border: none;
-
+ background-color: transparent;
+ color: var(--color--info-contrast);
width: 22px;
height: 22px;
margin-right: -10px;
@@ -371,7 +369,7 @@ v u e d i a l o g
.studip-dialog-content {
color: var(--black);
position: relative;
- padding: 15px;
+ padding: 10px 15px;
overflow-y: auto;
min-width: 100%;
box-sizing: border-box;
@@ -385,9 +383,6 @@ v u e d i a l o g
&.studip-dialog-warning,
&.studip-dialog-alert {
.studip-dialog-content {
- padding: 15px 15px 15px 62px;
- background-position: 12px center;
- background-repeat: no-repeat;
box-sizing: border-box;
display: flex;
align-items: center;
@@ -396,24 +391,31 @@ v u e d i a l o g
&.studip-dialog-alert {
.studip-dialog-header {
- background: var(--active-color) none repeat scroll 0 0;
+ background: var(--color--warning) none repeat scroll 0 0;
+ .studip-dialog-close-button {
+ color: var(--color--warning-contrast);
+ }
}
.studip-dialog-content {
- @include background-icon(question-circle-full, attention, 32px);
+ @include icon(before, question-circle-full, $size: 32px, $align: middle, $padding: 8px);
+ &::before {
+ color: var(--color--warning);
+ }
}
}
&.studip-dialog-warning {
.studip-dialog-header {
color: var(--black);
- background: var(--activity-color) none repeat scroll 0 0;
- }
- .studip-dialog-close-button {
- @include background-icon(decline);
- border: none;
- background-color: transparent;
+ background: var(--color--attention) none repeat scroll 0 0;
+ .studip-dialog-close-button {
+ color: var(--color--attention-contrast);
+ }
}
.studip-dialog-content {
- @include background-icon(question-circle-full, status-yellow, 32px);
+ @include icon(before, question-circle-full, $size: 32px, $align: middle, $padding: 8px);
+ &::before {
+ color: var(--color--attention);
+ }
}
}
&.studip-dialog-with-tab {
diff --git a/resources/assets/stylesheets/scss/documents.scss b/resources/assets/stylesheets/scss/documents.scss
index ee5f392..07836e1 100644
--- a/resources/assets/stylesheets/scss/documents.scss
+++ b/resources/assets/stylesheets/scss/documents.scss
@@ -40,13 +40,11 @@
line-height: 1.5em;
a {
- @include background-icon(folder-parent, $size: 24px);
- background-position: left center;
- background-repeat: no-repeat;
+ @include icon(before, folder-parent, $size: 24px);
padding-left: 30px;
}
&:first-child a {
- @include background-icon(folder-empty, $size: 24px);
+ @include icon(before, folder-empty, $size: 24px);
}
}
}
diff --git a/resources/assets/stylesheets/scss/files.scss b/resources/assets/stylesheets/scss/files.scss
index c69bd2d..d94328a 100644
--- a/resources/assets/stylesheets/scss/files.scss
+++ b/resources/assets/stylesheets/scss/files.scss
@@ -108,7 +108,7 @@ div.file_select_possibilities,
cursor: pointer;
background-color: transparent;
margin: 10px;
- border: thin solid var(--content-color-20);
+ border: thin solid var(--color--tile-border);
padding: 10px;
width: $width;
min-width: $width;
@@ -122,16 +122,24 @@ div.file_select_possibilities,
justify-content: space-around;
align-items: center;
text-align: center;
- > img {
+ color: var(--color--highlight);
+ > svg {
margin-left: auto;
margin-right: auto;
}
- button img {
+ button svg {
display: block;
margin-left: auto;
margin-right: auto;
}
+
+ &:hover {
+ border-color: var(--color--highlight);
+ color: var(--color--highlight-hover);
+ text-decoration: none;
+
+ }
}
> .important-item {
@@ -169,7 +177,7 @@ div.file_select_possibilities,
font-size:0.7em;
cursor: pointer;
- img {
+ svg {
width: 40%;
height: 40%;
display: block;
@@ -190,10 +198,6 @@ div.file_select_possibilities,
&:checked + label {
background-color: var(--brand-color-darker);
color: var(--contrast-content-white);
-
- img {
- filter: invert(100%) brightness(200%);
- }
}
}
diff --git a/resources/assets/stylesheets/scss/forms.scss b/resources/assets/stylesheets/scss/forms.scss
index dbed895..1a2b9c1 100644
--- a/resources/assets/stylesheets/scss/forms.scss
+++ b/resources/assets/stylesheets/scss/forms.scss
@@ -43,7 +43,7 @@ form.default {
box-sizing: border-box;
border: 1px solid var(--light-gray-color-40);
border-radius: var(--border-radius-default);
- color: var(--dark-gray-color);
+ color: var(--color--font-primary);
max-width: $max-width-m;
padding: 5px;
vertical-align: middle;
@@ -80,11 +80,7 @@ form.default {
}
input[list] {
- @include background-icon(arr_1down);
-
- background-repeat: no-repeat;
- background-position: center right 4px;
- padding-right: 24px
+ @include icon(before, arr_1down, $padding: 4px, $align: middle);
}
textarea:not(.size-l) + .ck-editor {
@@ -216,6 +212,7 @@ form.default {
padding: 10px;
margin: 0 0 10px -11px;
width: calc(100% + 22px);
+ color: var(--color--font-primary);
}
// Insert invisible element that corrects double padding/margin at the
@@ -286,13 +283,8 @@ form.default {
// Special inputs
label.file-upload {
- @include background-icon(upload);
-
- background-repeat: no-repeat;
- background-position: top left;
- background-size: 20px 20px;
+ @include icon(before, upload, $size: 20px, $padding: 4px, $align: top);
cursor: pointer;
- padding-left: 30px;
color: var(--base-color);
input[type=file] {
@@ -407,16 +399,13 @@ form.default {
fieldset.collapsable {
> legend {
box-sizing: border-box;
- @include background-icon(arr_1down);
- background-position: 6px center;
- background-repeat: no-repeat;
+ @include icon(before, arr_1down, $align: middle, $padding: 4px);
cursor: pointer;
- padding-left: 30px;
}
&.collapsed {
> legend {
- @include background-icon(arr_1right);
+ @include icon(before, arr_1right, $align: middle, $padding: 4px);
margin-bottom: 0;
}
padding-bottom: 0;
@@ -570,9 +559,10 @@ form.default {
display: inline;
width: calc(100% - 24px);
}
- img.icon {
+ div.icon {
height: 2em;
- margin-top: 0.5ex;
+ margin-top: 1ex;
+ color: var(--color--highlight);
}
}
.multiquicksearch > li {
diff --git a/resources/assets/stylesheets/scss/forum.scss b/resources/assets/stylesheets/scss/forum.scss
index 4c7187a6..9c5efc6 100644
--- a/resources/assets/stylesheets/scss/forum.scss
+++ b/resources/assets/stylesheets/scss/forum.scss
@@ -3,7 +3,7 @@ $card-max-width: 300px;
.forum {
hr {
- border-top: 1px solid $color--divider;
+ border-top: 1px solid var(--color--divider);
border-bottom: none;
border-left: none;
border-right: none;
@@ -115,7 +115,7 @@ $card-max-width: 300px;
&::selection,
*::selection {
background-color: $yellow;
- color: $color--font-primary;
+ color: var(--color--font-primary);
}
}
@@ -144,12 +144,12 @@ $card-max-width: 300px;
.card {
box-sizing: border-box;
- border: solid 1px $color--content-box-border;
+ border: solid 1px var(--color--content-box-border);
margin: 0 0 15px;
min-width: auto;
&__header {
- background-color: $color--fieldset-header;
+ background-color: var(--color--fieldset-header);
font-size: 16px;
padding: 10px;
@@ -176,7 +176,7 @@ $card-max-width: 300px;
.header {
display: flex;
- background-color: $color--fieldset-header;
+ background-color: var(--color--fieldset-header);
&.--sticky-top {
position: sticky;
@@ -221,8 +221,8 @@ $card-max-width: 300px;
align-items: center;
justify-content: center;
background: white;
- border: 1px solid $base-color;
- color: $base-color;
+ border: 1px solid var(--color--highlight);
+ color: var(--color--highlight);
border-radius: 5px;
padding: 7px;
cursor: pointer;
@@ -237,7 +237,7 @@ $card-max-width: 300px;
}
&:disabled {
- border-color: $color--button-inactive-border;
+ border-color: var(--color--button-inactive-border);
opacity: 0.5;
cursor: not-allowed;
}
@@ -283,7 +283,7 @@ $card-max-width: 300px;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 10px;
- color: $color--font-primary;
+ color: var(--color--font-primary);
padding: 0 20px;
.forum-illustration {
@@ -299,7 +299,7 @@ $card-max-width: 300px;
}
p {
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
}
.buttons-container {
@@ -337,7 +337,7 @@ $card-max-width: 300px;
p {
margin-top: 5px;
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
}
}
@@ -349,7 +349,7 @@ $card-max-width: 300px;
}
p {
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
}
.discussion-category {
@@ -389,9 +389,9 @@ $card-max-width: 300px;
display: flex;
align-items: center;
justify-content: center;
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
font-size: 10px;
- border: 1px solid $color--action-menu-border;
+ border: 1px solid var(--color--action-menu-border);
padding: 1px 5px;
border-radius: 4px;
}
@@ -413,8 +413,8 @@ $card-max-width: 300px;
}
.card-group {
- background-color: $color--tile-background;
- border: 1px solid $color--button-inactive-border;
+ background-color: var(--color--tile-background);
+ border: 1px solid var(--color--button-inactive-border);
padding-top: 4px;
padding-right: 4px;
margin-left: 4px;
@@ -428,8 +428,8 @@ $card-max-width: 300px;
}
.topic-card {
- background-color: $color--tile-background;
- border: 1px solid $color--button-inactive-border;
+ background-color: var(--color--tile-background);
+ border: 1px solid var(--color--button-inactive-border);
outline: transparent;
height: 100%;
min-height: 180px;
@@ -486,7 +486,7 @@ $card-max-width: 300px;
&:hover:not(.--new-topic),
&:focus:not(.--new-topic) {
- background-color: $color--tile-background-hover;
+ background-color: var(--color--tile-background-hover);
}
&.--with-hover-style:hover,
@@ -528,7 +528,7 @@ $card-max-width: 300px;
&__text {
p {
- color: $color--font-primary;
+ color: var(--color--font-primary);
}
img {
@@ -542,7 +542,7 @@ $card-max-width: 300px;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
.author-name {
font-size: 14px;
@@ -588,12 +588,12 @@ $card-max-width: 300px;
border: none;
position: relative;
padding-left: 2rem;
- color: $color--font-primary;
+ color: var(--color--font-primary);
white-space: pre-line;
- background-color: $color--tile-background !important;
+ background-color: var(--color--tile-background) !important;
&:before {
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
position: absolute;
font-size: 4rem;
width: 2rem;
@@ -637,13 +637,13 @@ $card-max-width: 300px;
.add-reaction-icon {
width: 20px;
height: auto;
- fill: $color--font-secondary;
+ fill: var(--color--font-secondary);
transition: fill 0.2s;
}
&:hover {
.add-reaction-icon {
- fill: $base-color;
+ fill: var(--color--highlight);
}
}
}
@@ -656,7 +656,7 @@ $card-max-width: 300px;
z-index: 10;
display: flex;
background: white;
- border: 1px solid $base-color;
+ border: 1px solid var(--color--highlight);
border-radius: 5px;
cursor: pointer;
overflow: hidden;
@@ -689,7 +689,7 @@ $card-max-width: 300px;
}
.discussion {
- background-color: $color--main-navigation-background;
+ background-color: var(--color--main-navigation-background);
&__status,
&__body,
@@ -708,7 +708,7 @@ $card-max-width: 300px;
flex-wrap: wrap;
justify-content: space-between;
gap: 10px;
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
}
.post__author-image {
@@ -736,7 +736,7 @@ $card-max-width: 300px;
}
&__author-name {
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
font-weight: 600;
}
@@ -757,15 +757,15 @@ $card-max-width: 300px;
padding: 3px;
align-items: center;
justify-content: center;
- background-color: $color--tile-background;
- border: 1px solid $color--action-menu-border;
+ background-color: var(--color--tile-background);
+ border: 1px solid var(--color--action-menu-border);
border-radius: 4px;
transition: background-color 1s ease;
z-index: 1;
&:hover,
&:focus {
- background-color: $color--tile-background-hover;
+ background-color: var(--color--tile-background-hover);
}
}
@@ -821,7 +821,7 @@ $card-max-width: 300px;
.user-group {
&--moderators {
img.user-profile {
- border-color: $base-color;
+ border-color: var(--color--highlight);
}
}
@@ -835,7 +835,7 @@ $card-max-width: 300px;
&__title {
font-size: 14px;
font-weight: bold;
- color: $color--font-primary;
+ color: var(--color--font-primary);
margin: 0;
}
@@ -865,7 +865,7 @@ $card-max-width: 300px;
&:hover,
&:focus {
- background-color: $color--tile-background-hover;
+ background-color: var(--color--tile-background-hover);
}
&__user {
@@ -922,7 +922,7 @@ $card-max-width: 300px;
}
.moderator img.user-profile {
- border: 2px solid $base-color;
+ border: 2px solid var(--color--highlight);
}
.remained-users {
@@ -936,8 +936,8 @@ $card-max-width: 300px;
&__count {
cursor: pointer;
font-size: 14px;
- color: $color--font-secondary;
- background-color: $color--fieldset-header;
+ color: var(--color--font-secondary);
+ background-color: var(--color--fieldset-header);
width: 25px;
height: 25px;
border-radius: 100%;
@@ -976,8 +976,8 @@ $card-max-width: 300px;
position: absolute;
display: none;
background: white;
- border: 1px solid $base-color;
- color: $base-color;
+ border: 1px solid var(--color--highlight);
+ color: var(--color--highlight);
border-radius: 5px;
gap: 5px;
cursor: pointer;
@@ -1010,11 +1010,11 @@ $card-max-width: 300px;
tr td:first-child {
width: 6px;
- background-color: $color--tile-title-background;
+ background-color: var(--color--tile-title-background);
}
tr:first-child td:first-child {
- background-color: $base-color;
+ background-color: var(--color--highlight);
}
tr td:nth-child(2) {
@@ -1022,7 +1022,7 @@ $card-max-width: 300px;
}
time, p {
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
margin: 0;
}
@@ -1054,7 +1054,7 @@ $card-max-width: 300px;
gap: 15px;
padding: 15px;
justify-content: space-between;
- border: thin solid $color--button-inactive-border;
+ border: thin solid var(--color--button-inactive-border);
max-width: calc(48em - 30px);
.icon {
@@ -1132,13 +1132,13 @@ $card-max-width: 300px;
.option-title {
font-size: 14px;
- color: $base-color;
+ color: var(--color--font-primary);
font-weight: 400;
margin: 0;
}
p {
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
margin-top: 6px;
font-size: small;
display: -webkit-box;
@@ -1322,7 +1322,7 @@ $card-max-width: 300px;
z-index: 1;
}
.color-font-secondary {
- color: $color--font-secondary;
+ color: var(--color--font-secondary);
}
}
@@ -1336,7 +1336,7 @@ $card-max-width: 300px;
background: transparent;
align-items: center;
gap: 5px;
- border: thin solid $color--divider;
+ border: thin solid var(--color--divider);
border-radius: 5px;
}
@@ -1359,7 +1359,7 @@ $card-max-width: 300px;
display: inline-flex;
align-items: center;
gap: 5px;
- border: thin solid $color--divider;
+ border: thin solid var(--color--divider);
padding: 1px 5px;
border-radius: 5px;
font-size: smaller;
@@ -1384,7 +1384,7 @@ $card-max-width: 300px;
}
.search-container {
- background-color: $color--tile-background;
+ background-color: var(--color--tile-background);
padding: 30px;
h1 {
diff --git a/resources/assets/stylesheets/scss/fullscreen.scss b/resources/assets/stylesheets/scss/fullscreen.scss
index 6897fd6..c84025f 100644
--- a/resources/assets/stylesheets/scss/fullscreen.scss
+++ b/resources/assets/stylesheets/scss/fullscreen.scss
@@ -9,9 +9,7 @@
cursor: pointer;
height: 28px;
- @include background-icon(zoom-in2);
- background-position: center;
- background-repeat: no-repeat;
+ @include icon(before, zoom-in2);
text-indent: 200%;
overflow: hidden;
diff --git a/resources/assets/stylesheets/scss/globalsearch.scss b/resources/assets/stylesheets/scss/globalsearch.scss
index 69b3b46..1e53c13 100644
--- a/resources/assets/stylesheets/scss/globalsearch.scss
+++ b/resources/assets/stylesheets/scss/globalsearch.scss
@@ -25,6 +25,11 @@
display: none;
}
+ .icon-button {
+ margin-left: 4px;
+ color: var(--color--font-inverted);
+ }
+
#globalsearch-input {
flex: 1;
border: none;
@@ -93,12 +98,10 @@
margin-left: -5px;
border-radius: var(--border-radius-default);
- a {
- color: var(--base-color);
+ @include highlight-anchor;
- &:hover {
- color: var(--active-color);
- }
+ article a:hover {
+ text-decoration: none;
}
section {
@@ -120,6 +123,10 @@
width: 400px;
background-color: var(--white);
+ .icon-button {
+ color: var(--color--highlight);
+ }
+
#globalsearch-input {
background-color: var(--color--header-inverted);
color: var(--color--font-primary);
@@ -129,11 +136,6 @@
}
}
- #globalsearch-clear,
- #globalsearch-icon {
- filter: brightness(0) saturate(100%) invert(25%) sepia(7%) saturate(6410%) hue-rotate(181deg) brightness(95%) contrast(88%);
- }
-
#globalsearch-list {
visibility: visible;
opacity: 1;
@@ -270,7 +272,7 @@
margin: 20px 0 0 -32px;
a {
- @include background-icon(arr_1right, $size: 24px);
+ @include icon(before, arr_1right, $size: 24px, $align: middle);
@include square(24px);
display: inline-block;
}
diff --git a/resources/assets/stylesheets/scss/header.scss b/resources/assets/stylesheets/scss/header.scss
index 7e7f3fa..05e4b68 100644
--- a/resources/assets/stylesheets/scss/header.scss
+++ b/resources/assets/stylesheets/scss/header.scss
@@ -6,9 +6,8 @@
margin-bottom: 10px;
}
#top-bar {
- background-color: var(--base-color);
- color: var(--contrast-content-white);
- border-bottom: 1px solid var(--brand-color-darker);
+ background-color: var(--color--brand-primary);
+ color: var(--color--brand-primary-contrast);
height: $bar-bottom-container-height;
width: 100%;
min-width: $site-width;
@@ -28,7 +27,7 @@
#site-title {
flex: 1;
- color: var(--white);
+ color: var(--color--brand-primary-contrast);
margin-left: 0;
z-index: 1002;
line-height: $bar-bottom-container-height;
@@ -49,13 +48,16 @@
> li {
> a {
- color: var(--white);
+ color: var(--color--brand-primary-contrast);
margin: 0 6px;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
+ > button {
+ color: var(--color--brand-primary-contrast);
+ }
}
}
}
@@ -178,6 +180,13 @@
> ul {
flex: 1 1 auto;
}
+
+ #fullscreen-on {
+ color: var(--color--highlight);
+ svg {
+ vertical-align: middle;
+ }
+ }
}
#responsive-menu,
@@ -223,18 +232,19 @@
position: absolute;
top: 40px;
right: 0;
- background: var(--white);
+ background: var(--color--global-background);
box-shadow: 1px 1px 1px var(--dark-gray-color-60);
text-align: left;
white-space: nowrap;
a:link,
a:visited {
- color: var(--base-color);
+ color: var(--color--highlight);
}
a:hover,
a:active {
- color: var(--active-color);
+ color: var(--color--highlight-hover);
+ text-decoration: none;
}
div {
diff --git a/resources/assets/stylesheets/scss/helpbar.scss b/resources/assets/stylesheets/scss/helpbar.scss
index fe5cca3..94f8cfd 100644
--- a/resources/assets/stylesheets/scss/helpbar.scss
+++ b/resources/assets/stylesheets/scss/helpbar.scss
@@ -16,6 +16,13 @@ $border-width: 4px;
min-width: 32px;
right: 10px;
+ #helpbar_icon {
+ color: var(--color--highlight);
+ &:hover {
+ color: var(--color--highlight-hover);
+ }
+ }
+
h2, h3 {
border-bottom: 0;
color: var(--color--font-inverted);
@@ -76,6 +83,7 @@ $border-width: 4px;
}
.helpbar-toggler {
+ color: var(--color--font-inverted);
margin-top: -5px;
margin-right: 5px;
}
@@ -115,28 +123,27 @@ $border-width: 4px;
padding: 0;
a {
- @include background-icon(play, info_alt);
+ @include icon(before, play, $padding: 4px, $align: middle);
background-position: left;
background-repeat: no-repeat;
display: block;
- padding-left: 24px;
&.tour-paused {
- @include background-icon(pause, info_alt);
+ @include icon(before, pause, $padding: 4px, $align: middle);
}
&.tour-completed {
- @include background-icon(accept, info_alt);
+ @include icon(before, accept, $padding: 4px, $align: middle);
}
}
}
a.link-extern {
- @include icon(before, link-extern, info_alt);
+ @include icon(before, link-extern);
}
a.link-intern {
- @include icon(before, link-intern, info_alt);
+ @include icon(before, link-intern);
}
}
diff --git a/resources/assets/stylesheets/scss/icons.scss b/resources/assets/stylesheets/scss/icons.scss
new file mode 100644
index 0000000..c6d3ccc
--- /dev/null
+++ b/resources/assets/stylesheets/scss/icons.scss
@@ -0,0 +1,26 @@
+$icon-colors: (
+ accept: good,
+ attention: warning,
+ info_alt: white,
+ inactive: font-inactive,
+ new: red-1,
+ status-green: green-1,
+ status-red: red-1,
+ status-yellow: yellow-1,
+
+// This are disabled for now since they should be coloured in a different way
+// clickable: blue,
+// info: black,
+// navigation: blue,
+// sort: blue,
+);
+
+.studip-icon {
+ display: inline-block;
+
+ @each $role, $color in $icon-colors {
+ &.icon-role-#{$role} {
+ color: var(--color--#{$color});
+ }
+ }
+}
diff --git a/resources/assets/stylesheets/scss/index.scss b/resources/assets/stylesheets/scss/index.scss
index 15a40c4..209eb9b 100644
--- a/resources/assets/stylesheets/scss/index.scss
+++ b/resources/assets/stylesheets/scss/index.scss
@@ -195,18 +195,17 @@ $gap-between-boxes: calc($login-page-margin / 2);
height: 36px;
.login-news-nav {
+ background-color: transparent;
+ color: var(--color--highlight);
margin-left: 8px;
width: 48px;
height: 48px;
border: none;
- @include background-icon('bullet-dot', $size: 28px);
- background-repeat: no-repeat;
- background-color: transparent;
- background-position: center;
+ @include icon(before, 'bullet-dot', $size: 28px, $align: middle);
cursor: pointer;
&.active-news-bullet {
- background-size: 42px;
+ @include icon(before, 'bullet-dot', $size: 42px, $align: middle);
}
}
}
diff --git a/resources/assets/stylesheets/scss/jquery-ui/custom.scss b/resources/assets/stylesheets/scss/jquery-ui/custom.scss
index 2a7d639..62d3c73 100644
--- a/resources/assets/stylesheets/scss/jquery-ui/custom.scss
+++ b/resources/assets/stylesheets/scss/jquery-ui/custom.scss
@@ -38,22 +38,22 @@
.ui-widget-content {
border: 1px solid #dddddd;
background: var(--white);
- color: #333333;
+ color: var(--color--font-primary);
}
.ui-widget-content a {
- color: #333333;
+ color: var(--color--content-link);
}
.ui-widget-header {
- border: 1px solid #dddddd;
- background: #e9e9e9;
- color: #333333;
- font-weight: bold;
+ border: 1px solid var(--color--content-box-border);
+ background: var(--color--content-box-background);
+ color: var(--color--font-primary);
+ font-weight: 700;
}
.ui-widget-header a {
- color: #333333;
+ color: var(--color--content-link);
}
/* Interaction states
@@ -69,7 +69,7 @@ html .ui-button.ui-state-disabled:active {
border: 1px solid #c5c5c5;
background: #f6f6f6;
font-weight: normal;
- color: #454545;
+ color: var(--color--font-primary);
}
.ui-state-default a,
@@ -79,7 +79,7 @@ a.ui-button,
a:link.ui-button,
a:visited.ui-button,
.ui-button {
- color: #454545;
+ color: var(--color--font-primary);
text-decoration: none;
}
@@ -94,7 +94,7 @@ a:visited.ui-button,
border: 1px solid #cccccc;
background: #ededed;
font-weight: normal;
- color: #2b2b2b;
+ color: var(--color--font-primary);
}
.ui-state-hover a,
@@ -107,7 +107,7 @@ a:visited.ui-button,
.ui-state-focus a:visited,
a.ui-button:hover,
a.ui-button:focus {
- color: #2b2b2b;
+ color: var(--color--font-primary);
text-decoration: none;
}
@@ -124,7 +124,7 @@ a.ui-button:active,
border: 1px solid #003eff;
background: #007fff;
font-weight: normal;
- color: #ffffff;
+ color: var(--color--font-inverted);
}
.ui-icon-background,
@@ -136,7 +136,7 @@ a.ui-button:active,
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
- color: #ffffff;
+ color: var(--color--font-inverted);
text-decoration: none;
}
diff --git a/resources/assets/stylesheets/scss/jquery-ui/studip.scss b/resources/assets/stylesheets/scss/jquery-ui/studip.scss
index 002eb17..3d5168d 100644
--- a/resources/assets/stylesheets/scss/jquery-ui/studip.scss
+++ b/resources/assets/stylesheets/scss/jquery-ui/studip.scss
@@ -172,13 +172,14 @@ textarea.ui-resizable-handle.ui-resizable-s {
background-color: var(--brand-color-light);
color: var(--white);
}
-
+$schedule-icon-path: icon-path(schedule, info);
.hasDatepicker,
[data-date-picker],
.has-date-picker,
[data-datetime-picker],
.has-datetime-picker {
- @include background-icon(schedule);
+ background-image: url("#{$schedule-icon-path}");
+ background-size: var(--icon-size-default);
background-position: right 3px center;
background-repeat: no-repeat;
min-width: 12ex;
@@ -187,10 +188,12 @@ textarea.ui-resizable-handle.ui-resizable-s {
border-color: var(--brand-color-dark);
}
}
+$date-icon-path: icon-path(date, info);
.hasTimepicker,
[data-time-picker],
.has-time-picker {
- @include background-icon(date);
+ background-image: url("#{$date-icon-path}");
+ background-size: var(--icon-size-default);
background-position: right 3px center;
background-repeat: no-repeat;
min-width: 10ex;
diff --git a/resources/assets/stylesheets/scss/layouts.scss b/resources/assets/stylesheets/scss/layouts.scss
index f9cb143..8be21e8 100644
--- a/resources/assets/stylesheets/scss/layouts.scss
+++ b/resources/assets/stylesheets/scss/layouts.scss
@@ -100,7 +100,7 @@ body#login #content-wrapper {
}
#main-footer {
- background-color: var(--base-color);
+ background-color: var(--color--brand-primary);
color: var(--white);
display: flex;
padding: 2px 0;
diff --git a/resources/assets/stylesheets/scss/links.scss b/resources/assets/stylesheets/scss/links.scss
index 03fe33a..bb6e0bc 100644
--- a/resources/assets/stylesheets/scss/links.scss
+++ b/resources/assets/stylesheets/scss/links.scss
@@ -1,10 +1,10 @@
/* --- Links ---------------------------------------------------------------- */
a, a:link, a:visited {
- color: var(--base-color);
+ color: var(--color--content-link);
text-decoration: none;
- &.index { color: var(--base-gray); }
- &.printhead { color: var(--base-color); }
+ &.index { color: var(--color--font-secondary); }
+ &.printhead { color: var(--black); }
&.tree { color: var(--black); }
&.toolbar {
color: var(--brand-color-lighter);
@@ -19,8 +19,8 @@ a[disabled] {
}
a:hover, a:active, a:hover.index, a:active.index, a:hover.tree {
- color: var(--active-color);
- text-decoration: none;
+ color: var(--color--content-link-hover);
+ text-decoration: underline;
}
a:hover.toolbar {
@@ -28,16 +28,16 @@ a:hover.toolbar {
}
a.link-intern {
- @include icon(before, link-intern, $padding: 2px, $inline: true);
+ @include icon(before, link-intern, $padding: 2px, $inline: true, $align: text-bottom);
}
a.link-extern {
- @include icon(before, link-extern, $padding: 2px, $inline: true);
+ @include icon(before, link-extern, $padding: 2px, $inline: true, $align: text-bottom);
}
a.link-add {
- @include icon(before, add, $padding: 2px, $inline: true);
+ @include icon(before, add, $padding: 2px, $inline: true, $align: text-bottom);
}
a.link-edit {
- @include icon(before, edit, $padding: 2px, $inline: true);
+ @include icon(before, edit, $padding: 2px, $inline: true, $align: text-bottom);
}
a img {
diff --git a/resources/assets/stylesheets/scss/messagebox.scss b/resources/assets/stylesheets/scss/messagebox.scss
index 336eb0d..2166d88 100644
--- a/resources/assets/stylesheets/scss/messagebox.scss
+++ b/resources/assets/stylesheets/scss/messagebox.scss
@@ -9,6 +9,10 @@ div.messagebox {
position: relative;
text-align: left;
+ div {
+ margin-left: 8px;
+ }
+
&:first-child {
margin-top: 0;
}
@@ -32,17 +36,17 @@ div.messagebox {
span { display: none; }
}
&.close {
- @include background-icon(decline);
+ @include icon(before, decline);
}
&.details {
- @include background-icon(arr_eol-down);
+ @include icon(before, arr_eol-down);
}
}
}
&.details_hidden {
.messagebox_buttons a.details {
- @include background-icon(arr_eol-up);
+ @include icon(before, arr_eol-up);
}
.messagebox_details { height: 0; }
}
@@ -61,22 +65,65 @@ section.contentbox {
}
}
+$messagebox-icons: (
+ info: 'info',
+ success: 'accept',
+ error: 'decline',
+ exception: 'decline',
+ warning: 'exclaim',
+);
+
// Messagebox definitions
@mixin messagebox($name, $color, $background-color, $border-color: $color, $image: $name) {
+ $icon-name: map-get($messagebox-icons, $name);
+ $svg: icon-path($icon-name, clickable);
+
div.messagebox_#{$name} {
- color: $color;
- background-color: $background-color;
- background-image: url("#{$image-path}/messagebox/#{$image}.png");
- background-size: 32px 32px;
- border-color: $border-color;
+ color: $color;
+ background-color: $background-color;
+ border-color: $border-color;
+ position: relative;
+ display: flex;
+ align-items: center;
+
+ // Der Kreis mit ::before
+ &::before {
+ content: "";
+ width: 32px; // Größe des Kreises
+ height: 32px;
+ background-color: $border-color; // Kreisfarbe
+ border-radius: 50%; // Macht es rund
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: absolute;
+ left: 16px;
+ top: 50%;
+ transform: translateY(-50%);
+ margin-right: 12px; // Platz für den Text, je nach Bedarf anpassen
+ }
+
+ // Das Icon mit ::after auf dem Kreis
+ &::after {
+ content: "";
+ width: 20px; // Größe des Icons
+ height: 20px;
+ mask: url("#{$svg}") no-repeat center / contain; // Maskierung mit dem Icon
+ background-color: $background-color; // Farbe des Icons
+ position: absolute;
+ top: 50%;
+ left: 32px;
+ transform: translate(-50%, -50%); // Zentriert das Icon im Kreis
+ }
}
-}
+ }
+
-@include messagebox(info, var(--color--black), var(--color--info-alternative), var(--color--info));
-@include messagebox(success, var(--color--black), var(--color--good-alternative), var(--color--good));
-@include messagebox(error, var(--color--black), var(--color--warning-alternative), var(--color--warning));
-@include messagebox(exception, var(--color--black), var(--color--warning-alternative), var(--color--warning));
-@include messagebox(warning, var(--color--black), var(--color--attention-alternative), var(--color--attention), advice);
+@include messagebox(info, var(--color--info-secondary-contrast), var(--color--info-secondary), var(--color--info));
+@include messagebox(success, var(--color--good-secondary-contrast), var(--color--good-secondary), var(--color--good));
+@include messagebox(error, var(--color--warning-secondary-contrast), var(--color--warning-secondary), var(--color--warning));
+@include messagebox(exception, var(--color--warning-secondary-contrast), var(--color--warning-secondary), var(--color--warning));
+@include messagebox(warning, var(--color--attention-secondary-contrast), var(--color--attention-secondary), var(--color--attention), advice);
// Define modal messagebox
.modaloverlay {
@@ -108,7 +155,7 @@ section.contentbox {
max-width: 50%;
width: auto;
- color: #000;
+ color: var(--color--font-primary);
border-color: var(--yellow);
background-color: white;
background-image: url("@{image-path}/messagebox/question.png");
diff --git a/resources/assets/stylesheets/scss/messages.scss b/resources/assets/stylesheets/scss/messages.scss
index 8642fc7..7e150cd 100644
--- a/resources/assets/stylesheets/scss/messages.scss
+++ b/resources/assets/stylesheets/scss/messages.scss
@@ -13,13 +13,13 @@ a.message-tag {
#statusbar_container {
> .statusbar {
- border: thin solid var(--light-gray-color);
+ border: thin solid var(--color--input-field-border);
min-width: 100%;
max-width: 100%;
- background-color: var(--content-color-40);
+ background-color: var(--color--input-field-background);
> .progress {
- background-color: var(--content-color);
+ background-color: var(--color--highlight);
width: 100%;
min-width: 0;
max-width: 0;
@@ -27,22 +27,27 @@ a.message-tag {
line-height: 20px;
&.progress-error {
- background-color: var(--red);
+ background-color: var(--color--warning);
}
}
> .progresstext {
margin-top: -20px;
text-align: center;
- color: var(--white);
+ color: var(--color--font-inverted);
height: 20px;
line-height: 20px;
}
}
}
-#message_metadata tr {
- vertical-align: top;
+#message_metadata {
+ svg {
+ color: var(--color--highlight);
+ }
+ tr {
+ vertical-align: top;
+ }
}
#adressees {
@@ -55,15 +60,15 @@ a.message-tag {
}
.message_body {
- background-color: var(--content-color-20);
margin: 3px;
padding: 10px;
+ background-color: var(--color--tile-background);
}
.responsive_author {
margin: 0;
font-size: 0.8em;
- color: var(--base-gray);
+ color: var(--color--font-secondary);
}
form.default {
@@ -89,7 +94,7 @@ form.default {
.multi_person_search_link {
line-height: 30px;
- img {
+ svg {
vertical-align: middle;
margin-top: -2px;
}
@@ -116,7 +121,19 @@ ul.message-options {
> div.message-indicators {
float: right;
margin-right: 5px;
+
+ svg {
+ vertical-align: bottom;
+ }
}
}
}
}
+
+.message-attachments {
+ margin-top: 2em;
+
+ .file-icon svg {
+ vertical-align: bottom;
+ }
+}
diff --git a/resources/assets/stylesheets/scss/mvv.scss b/resources/assets/stylesheets/scss/mvv.scss
index a6c7275..69b49fc 100644
--- a/resources/assets/stylesheets/scss/mvv.scss
+++ b/resources/assets/stylesheets/scss/mvv.scss
@@ -377,14 +377,14 @@ select.mvv-search-select-list {
}
&.selected {
- @include background-icon(arr_2right, inactive);
+ @include icon(before, arr_2right);
background-position: right;
background-repeat: no-repeat;
cursor: pointer;
font-weight: bold;
&.last {
- @include background-icon(accept, inactive);
+ @include icon(before, accept);
background-position: right;
background-repeat: no-repeat;
}
diff --git a/resources/assets/stylesheets/scss/my_courses.scss b/resources/assets/stylesheets/scss/my_courses.scss
index 9d34b5c..04655f8 100644
--- a/resources/assets/stylesheets/scss/my_courses.scss
+++ b/resources/assets/stylesheets/scss/my_courses.scss
@@ -12,6 +12,7 @@
$icon-padding: 3px;
.my-courses-navigation {
+ color: var(--color--highlight);
list-style: none;
margin: 0 0 -10px;
padding: 0;
@@ -27,11 +28,13 @@ $icon-padding: 3px;
padding: $icon-padding;
}
+ @include highlight-anchor;
+
&:last-child {
margin-right: 0;
}
- img {
+ svg {
vertical-align: bottom;
}
@@ -40,12 +43,19 @@ $icon-padding: 3px;
padding-left: $icon-padding;
padding-right: $icon-padding;
}
-}
-.my-courses-navigation-important {
- $border-width: 1px;
- border: $border-width solid var(--red);
- a {
- padding: $icon-padding - $border-width;
+ &.my-courses-navigation-important {
+ $border-width: 1px;
+ border: $border-width solid var(--color--warning);
+
+ a {
+ padding: $icon-padding - $border-width;
+ color: var(--color--warning);
+
+ &:hover {
+ color: var(--color--warning);
+ }
+ }
}
}
+
diff --git a/resources/assets/stylesheets/scss/navigation-hoverborder.scss b/resources/assets/stylesheets/scss/navigation-hoverborder.scss
index 16dc09b..8c5605f 100644
--- a/resources/assets/stylesheets/scss/navigation-hoverborder.scss
+++ b/resources/assets/stylesheets/scss/navigation-hoverborder.scss
@@ -28,10 +28,10 @@
body:not(.fixed) #navigation-level-1-items {
> li.active {
- @include border-beneath(var(--dark-gray-color-80));
+ @include border-beneath(var(--color--tabs-marker-active));
}
> li:not(.active) {
- @include border-beneath(var(--dark-gray-color-40));
+ @include border-beneath(var(--color--tabs-marker-hover));
&:not(:hover)::after {
@include border-shrink;
}
@@ -46,7 +46,7 @@ body:not(.fixed) #navigation-level-1-items {
}
.overflow li:hover {
- @include border-beneath(var(--dark-gray-color-40), 2px, 3px);
+ @include border-beneath(var(--color--tabs-marker-hover), 2px, 3px);
&::after {
transform: translate(0, -4px);
}
@@ -59,10 +59,10 @@ body:not(.fixed) #navigation-level-1-items {
line-height: 25px;
}
&.current {
- @include border-beneath(var(--dark-gray-color-80), -2px, 3px);
+ @include border-beneath(var(--color--tabs-marker-active), -2px, 3px);
}
&:not(.current) {
- @include border-beneath(var(--dark-gray-color-40), -2px, 3px);
+ @include border-beneath(var(--color--tabs-marker-hover), -2px, 3px);
&:not(:hover)::after {
@include border-shrink;
}
diff --git a/resources/assets/stylesheets/scss/navigation.scss b/resources/assets/stylesheets/scss/navigation.scss
index 3af4f97..d876a22 100644
--- a/resources/assets/stylesheets/scss/navigation.scss
+++ b/resources/assets/stylesheets/scss/navigation.scss
@@ -17,7 +17,7 @@ body:not(.fixed) #navigation-level-1-items {
font-size: $font-size-base;
}
a {
- color: var(--base-color);
+ color: var(--color--main-navigation-item-inactive);
display: block;
padding: 0 0;
text-align: center;
@@ -35,10 +35,13 @@ body:not(.fixed) #navigation-level-1-items {
}
}
- img {
+ .headericon {
margin: 8px 0;
- @include square(32px);
}
+ img.headericon:not(:hover) {
+ filter: hue-rotate(350deg) saturate(8.7%) brightness(177.3%) !important;
+ }
+
&[data-badge]:not([data-badge="0"]) {
position: relative;
@@ -51,8 +54,8 @@ body:not(.fixed) #navigation-level-1-items {
@include square(16px);
background-clip: content-box;
- background-color: var(--red);
- border: 3px solid var(--dark-gray-color-5);
+ background-color: var(--color--warning);
+ border: 3px solid transparent;
border-radius: 50%;
color: var(--white);
content: attr(data-badge);
@@ -78,10 +81,6 @@ body:not(.fixed) #navigation-level-1-items {
}
}
- img {
- filter: hue-rotate(350deg) saturate(8.7%) brightness(177.3%) !important;
- }
-
// Hide all navigation item title on hover and display only the currently
// hovered one
.navtitle {
@@ -105,9 +104,7 @@ body:not(.fixed) #navigation-level-1-items {
opacity: 1;
}
> a {
- img {
- filter: hue-rotate(0deg) saturate(100%) brightness(100%) !important;
- }
+ color: var(--color--main-navigation-item);
}
// Icon state: hover
@@ -215,7 +212,6 @@ body.fixed {
#navigation-level-1-items {
background-color: var(--base-color);
-
list-style: none;
margin: 0 0 0px -15px;
padding: 0;
@@ -226,9 +222,7 @@ body.fixed {
// Hide menu
display: none;
- img {
- filter: contrast(0) brightness(2);
-
+ svg {
@include square(16px);
margin-right: 0.8em;
}
diff --git a/resources/assets/stylesheets/scss/oer.scss b/resources/assets/stylesheets/scss/oer.scss
index b8732e7..1ddb46e 100644
--- a/resources/assets/stylesheets/scss/oer.scss
+++ b/resources/assets/stylesheets/scss/oer.scss
@@ -281,8 +281,11 @@ ul.reviews, ol.reviews {
button {
border-right: none;
height: 35px;
+ color: var(--color--highlight);
+
&.active {
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
+ color: var(--color--highlight-contrast);
}
&.erase {
background-color: white;
@@ -302,7 +305,7 @@ ul.reviews, ol.reviews {
button {
border: thin solid var(--color--input-field-border);
- background-color: var(--color--button-background);
+ background-color: var(--color--global-background);
display: flex;
align-items: center;
justify-content: center;
diff --git a/resources/assets/stylesheets/scss/opengraph.scss b/resources/assets/stylesheets/scss/opengraph.scss
index 074a5e5..d9094d2 100644
--- a/resources/assets/stylesheets/scss/opengraph.scss
+++ b/resources/assets/stylesheets/scss/opengraph.scss
@@ -22,25 +22,21 @@
.switch-right {
@include hide-text;
@include square(var(--icon-size-default));
- background-position: center;
- background-repeat: no-repeat;
padding: 0;
+ color: var(--color--highlight);
&:not([disabled]) {
cursor: pointer;
}
- }
- .switch-left {
- @include background-icon(arr_1left);
&[disabled] {
- @include background-icon(arr_1left);
+ color: var(--color--font-inactive);
}
}
+ .switch-left {
+ @include icon(before, arr_1left);
+ }
.switch-right {
- @include background-icon(arr_1right);
- &[disabled] {
- @include background-icon(arr_1right);
- }
+ @include icon(before, arr_1right);
}
}
diff --git a/resources/assets/stylesheets/scss/pagination.scss b/resources/assets/stylesheets/scss/pagination.scss
index 2f74bcc..9b34e28 100644
--- a/resources/assets/stylesheets/scss/pagination.scss
+++ b/resources/assets/stylesheets/scss/pagination.scss
@@ -40,19 +40,20 @@
.next {
.pagination--link {
@include hide-text;
- background-position: center;
- background-repeat: no-repeat;
display: inline-block;
height: 16px;
width: 16px;
vertical-align: top;
+ &::before {
+ color: var(--color--highlight);
+ }
}
}
.prev .pagination--link {
- @include background-icon(arr_1left);
+ @include icon(before, arr_1left, $align: middle);
}
.next .pagination--link {
- @include background-icon(arr_1right);
+ @include icon(before, arr_1right, $align: middle);
}
}
diff --git a/resources/assets/stylesheets/scss/personal-notifications.scss b/resources/assets/stylesheets/scss/personal-notifications.scss
index 6ce6d27..8d80fbb 100644
--- a/resources/assets/stylesheets/scss/personal-notifications.scss
+++ b/resources/assets/stylesheets/scss/personal-notifications.scss
@@ -13,19 +13,14 @@
padding: 0 5px;
}
- img {
+ svg {
vertical-align: middle;
margin-top: -3px;
- filter: brightness(0) saturate(100%) invert(26%) sepia(19%) saturate(1783%) hue-rotate(177deg) brightness(96%) contrast(93%); // #000 to #28497c
}
&.alert {
background-color: var(--color--warning);
color: var(--color--font-inverted);
-
- img {
- filter: invert(100); // #000 to #fff
- }
}
}
@@ -172,6 +167,7 @@
flex-grow: 1;
.avatar {
+ color: var(--color--highlight);
$avatar-size: 36px;
margin-right: 10px;
margin-left: 0;
@@ -187,40 +183,33 @@
}
a:not(.mark-all-as-read) {
- color: var(--brand-color-dark);
+ color: var(--color--highlight);
display: block;
padding: 0;
- &:hover { color: var(--active-color); }
+ &:hover {
+ color: var(--color--highlight-hover);
+ text-decoration: none;
+ }
}
a.mark-all-as-read:not(.invisible),
a.enable-desktop-notifications {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
border-bottom: thin solid var(--color--action-menu-divider);
- display: block;
max-height: 31px;
padding: 7px 7px 7px 9px;
z-index: 3;
}
a.mark-all-as-read {
- @include background-icon('accept', 'clickable');
- background-repeat: no-repeat;
- background-position: right 8px center;
-
- &:hover {
- @include background-icon('accept', 'attention');
- }
-
- margin: 0;
+ @include icon(after, 'accept', $align: middle);
+ color: var(--color--highlight);
}
a.enable-desktop-notifications {
- @include background-icon('notification', 'clickable');
- background-repeat: no-repeat;
- background-position: right 8px center;
-
- &:hover {
- @include background-icon('notification', 'attention');
- }
+ @include icon(after, 'notification', $align: middle);
+ color: var(--color--highlight);
}
.options {
@@ -228,9 +217,7 @@
background: none;
cursor: pointer;
height: 24px;
- > img {
- vertical-align: top;
- }
+ color: var(--color--highlight);
&.hidden { visibility: hidden; }
}
diff --git a/resources/assets/stylesheets/scss/progress_indicator.scss b/resources/assets/stylesheets/scss/progress_indicator.scss
index 12ea750..cc8ece5 100644
--- a/resources/assets/stylesheets/scss/progress_indicator.scss
+++ b/resources/assets/stylesheets/scss/progress_indicator.scss
@@ -24,7 +24,8 @@
}
@media (prefers-reduced-motion) {
.progress-indicator {
- @include background-icon(refresh, info, 32px);
+ @include icon(before, refresh, $size: 32px);
+ color: var(--color--font-primary);
}
.progress-indicator-description-default {
display: block;
diff --git a/resources/assets/stylesheets/scss/questionnaire.scss b/resources/assets/stylesheets/scss/questionnaire.scss
index 3870355..9f6f880 100644
--- a/resources/assets/stylesheets/scss/questionnaire.scss
+++ b/resources/assets/stylesheets/scss/questionnaire.scss
@@ -96,6 +96,10 @@ $width: 270px;
padding: 10px 10px 10px 15px;
min-height: 150px;
min-width: 0;
+
+ .add_question button {
+ color: var(--color--highlight)
+ }
}
.inline_editing {
diff --git a/resources/assets/stylesheets/scss/quicksearch.scss b/resources/assets/stylesheets/scss/quicksearch.scss
index f91af93..6e8f957 100644
--- a/resources/assets/stylesheets/scss/quicksearch.scss
+++ b/resources/assets/stylesheets/scss/quicksearch.scss
@@ -33,21 +33,18 @@ div.quicksearch_frame {
margin-top: 0 !important;
}
- input[type=submit] {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
+ label.icon-button {
+ display: inline-block;
+ color: var(--color--highlight);
width: 36px;
height: 30px;
- @include background-icon(search);
- background-position: center;
- background-repeat: no-repeat;
vertical-align: middle;
margin-left: -40px;
- margin-top: 1px;
border-left: solid thin var(--color--input-field-border);
+
+ svg {
+ padding: 5px 7px;
+ }
}
}
@@ -135,4 +132,4 @@ div.quicksearch_frame {
}
}
}
-}
+} \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/raumzeit.scss b/resources/assets/stylesheets/scss/raumzeit.scss
index 982cebc..c680b26 100644
--- a/resources/assets/stylesheets/scss/raumzeit.scss
+++ b/resources/assets/stylesheets/scss/raumzeit.scss
@@ -64,7 +64,7 @@ div.at_least_one_teacher {
// Show visual toggle indicator
header h1 a {
- @include icon(before, arr_1right);
+ @include icon(before, arr_1right, $align: text-bottom);
}
&.open {
@@ -77,21 +77,24 @@ div.at_least_one_teacher {
article header {
&.red {
border-left: 3px solid var(--red);
+ .tooltip {
+ color: var(--color--warning);
+ }
}
&.yellow {
border-left: 3px solid var(--activity-color);
+ .tooltip {
+ color: var(--color--attention);
+ }
}
&.green {
border-left: 3px solid var(--green);
+ .tooltip {
+ color: var(--color--good);
+ }
}
- &.red .tooltip-icon {
- @include icon(before, radiobutton-checked, status-red);
- }
- &.yellow .tooltip-icon {
- @include icon(before, radiobutton-checked, status-yellow);
- }
- &.green .tooltip-icon {
- @include icon(before, radiobutton-checked, status-green);
+ .tooltip-icon {
+ @include icon(before, radiobutton-checked);
}
}
form.default {
diff --git a/resources/assets/stylesheets/scss/report.scss b/resources/assets/stylesheets/scss/report.scss
deleted file mode 100644
index d00ce06..0000000
--- a/resources/assets/stylesheets/scss/report.scss
+++ /dev/null
@@ -1,94 +0,0 @@
-// Alert dialog (like createQuestion)
-.ui-dialog.ui-widget.ui-widget-content.report {
- &-info,
- &-success,
- &-warning,
- &-error {
- min-width: 30em;
-
- .ui-dialog-titlebar {
- font-weight: bold;
- text-align: left;
- }
-
- .ui-dialog-content {
- background-position: 12px 8px;
- background-repeat: no-repeat;
- background-size: 32px;
- box-sizing: border-box;
- max-height: 60vh;
- padding: 15px 15px 15px 55px;
- }
-
- .ui-dialog-buttonpane {
- text-align: center;
-
- .ui-dialog-buttonset {
- float: none;
- > * {
- display: inline-block;
- }
- }
- }
- }
-
- &-info {
- .ui-dialog-titlebar {
- background-color: var(--base-color);
- color: var(--white);
- }
- .ui-dialog-content {
- background-image: url("#{$image-path}/messagebox/info.png");
- }
- }
-
- &-success {
- .ui-dialog-titlebar {
- background-color: var(--dark-green);
- color: var(--white);
- }
-
- .ui-dialog-content {
- background-image: url("#{$image-path}/messagebox/success.png");
- }
- }
-
- &-warning {
- .ui-dialog-titlebar {
- background-color: var(--yellow);
- color: black;
- }
-
- .ui-button-icon {
- .ui-icon {
- .ui-icon-closethick {
- @include background-icon(decline);
- }
- }
- }
-
- .ui-dialog-content {
- background-image: url("#{$image-path}/messagebox/advice.png");
- }
-
- .ui-dialog-titlebar-close {
- background: transparent;
- border: 0;
-
- .ui-icon, .ui-icon:hover {
- @include background-icon(decline, info);
- background-position: 0;
- }
- }
- }
-
- &-error {
- .ui-dialog-titlebar {
- background-color: var(--red);
- color: var(--white);
- }
- .ui-dialog-content {
- background-image: url("#{$image-path}/messagebox/error.png");
- }
- }
-}
diff --git a/resources/assets/stylesheets/scss/resources.scss b/resources/assets/stylesheets/scss/resources.scss
index 517ad47..4de6f09 100644
--- a/resources/assets/stylesheets/scss/resources.scss
+++ b/resources/assets/stylesheets/scss/resources.scss
@@ -181,6 +181,7 @@ ul.resource-tree {
select, span.selection, span.select2 {
height: 30px;
width: calc(100% - 2em) !important;
+ color: var(--color--font-primary);
}
}
}
@@ -359,22 +360,25 @@ ul.resource-tree {
.request-list {
a.request-marking-icon {
- background-repeat: no-repeat;
display: block;
width: var(--icon-size-default);
height: var(--icon-size-default);
- @include background-icon(radiobutton-unchecked);
+ @include icon(before, radiobutton-unchecked);
+ color: var(--color--font-primary);
&[data-marked="1"] {
- @include background-icon(radiobutton-checked, status-red);
+ @include icon(before, radiobutton-checked);
+ color: var(--color--warning)
}
&[data-marked="2"] {
- @include background-icon(radiobutton-checked, status-yellow);
+ @include icon(before, radiobutton-checked);
+ color: var(--color--attention);
}
&[data-marked="3"] {
- @include background-icon(radiobutton-checked, status-green);
+ @include icon(before, radiobutton-checked);
+ color: var(--color--good);
}
}
}
diff --git a/resources/assets/stylesheets/scss/responsive.scss b/resources/assets/stylesheets/scss/responsive.scss
index 97d9bc5..5c8be5a 100644
--- a/resources/assets/stylesheets/scss/responsive.scss
+++ b/resources/assets/stylesheets/scss/responsive.scss
@@ -45,8 +45,10 @@ $sidebarOut: -330px;
.responsive-navigation-header {
display: flex;
padding: 2px 0;
+ color: var(--color--brand-primary-contrast);
.menu-closed {
+ color: var(--color--brand-primary-contrast);
cursor: pointer;
transform: rotate(0deg);
transition: var(--transition-duration) ease-in-out;
@@ -54,8 +56,8 @@ $sidebarOut: -330px;
.menu-open {
cursor: pointer;
+ color: var(--color--brand-primary-contrast);
transform: rotate(90deg);
-
transition: var(--transition-duration) ease-in-out;
}
}
diff --git a/resources/assets/stylesheets/scss/root.scss b/resources/assets/stylesheets/scss/root.scss
index 25521ab..24054e7 100644
--- a/resources/assets/stylesheets/scss/root.scss
+++ b/resources/assets/stylesheets/scss/root.scss
@@ -1,5 +1,5 @@
:root {
- --text-color: #{$text-color};
+ --text-color: #{$color--font-primary};
--active-color: #{$active-color};
--activity-color: #{$activity-color};
--activity-color-20: #{$activity-color-20};
@@ -134,7 +134,19 @@
--color--global-background: #{$color--global-background};
--color--brand-primary: #{$color--brand-primary};
+ --color--brand-primary-contrast: #{$color--brand-primary-contrast};
--color--brand-secondary: #{$color--brand-secondary};
+ --color--brand-secondary-contrast: #{$color--brand-secondary-contrast};
+
+ --color--highlight: #{$color--highlight};
+ --color--highlight-hover: #{$color--highlight-hover};
+ --color--highlight-contrast: #{$color--highlight-contrast};
+
+ --color--sidebar-item: #{$color--sidebar-item};
+ --color--sidebar-item-hover: #{$color--sidebar-item-hover};
+
+ --color--content-link: #{$color--content-link};
+ --color--content-link-hover: #{$color--content-link-hover};
--color--font-primary: #{$color--font-primary};
--color--font-secondary: #{$color--font-secondary};
@@ -143,6 +155,8 @@
--color--main-navigation-background: #{$color--main-navigation-background};
--color--main-navigation-border: #{$color--main-navigation-border};
+ --color--main-navigation-item: #{$color--main-navigation-item};
+ --color--main-navigation-item-inactive: #{$color--main-navigation-item-inactive};
--color--sidebar-marker-active: #{$color--sidebar-marker-active};
--color--sidebar-marker-active-navigation: #{$color--sidebar-marker-active-navigation};
@@ -176,6 +190,8 @@
--color--scrollbar-thumb: #{$color--scrollbar-thumb};
+ --color--content-bar-background: #{$color--content-bar-background};
+
--color--content-box-border: #{$color--content-box-border};
--color--content-box-header: #{$color--content-box-header};
--color--content-box-background: #{$color--content-box-background};
@@ -188,11 +204,11 @@
--color--fieldset-border: #{$color--fieldset-border};
--color--fieldset-header: #{$color--fieldset-header};
- --color--button-background: #{$color--button-background};
- --color--button-border: #{$color--button-border};
- --color--button-focus: #{$color--button-focus};
- --color--button-hover: #{$color--button-hover};
+ --color--tabs-marker-hover: #{$color--tabs-marker-hover};
+ --color--tabs-marker-active: #{$color--tabs-marker-active};
+
--color--button-inactive-background: #{$color--button-inactive-background};
+ --color--button-inactive-background-contrast: #{$color--button-inactive-background-contrast};
--color--button-inactive-border: #{$color--button-inactive-border};
--color--radiobuttonset-background: #{$color--radiobuttonset-background};
@@ -209,15 +225,27 @@
--color--focus: #{$color--focus};
--color--warning: #{$color--warning};
- --color--warning-alternative: #{$color--warning-alternative};
+ --color--warning-secondary: #{$color--warning-secondary};
+ --color--warning-contrast: #{$color--warning-contrast};
+ --color--warning-secondary-contrast: #{$color--warning-secondary-contrast};
+
--color--attention: #{$color--attention};
- --color--attention-alternative: #{$color--attention-alternative};
+ --color--attention-secondary: #{$color--attention-secondary};
+ --color--attention-contrast: #{$color--attention-contrast};
+ --color--attention-secondary-contrast: #{$color--attention-secondary-contrast};
+
--color--good: #{$color--good};
- --color--good-alternative: #{$color--good-alternative};
+ --color--good-secondary: #{$color--good-secondary};
+ --color--good-contrast: #{$color--good-contrast};
+ --color--good-secondary-contrast: #{$color--good-secondary-contrast};
+
--color--info: #{$color--info};
- --color--info-alternative: #{$color--info-alternative};
+ --color--info-secondary: #{$color--info-secondary};
+ --color--info-contrast: #{$color--info-contrast};
+ --color--info-secondary-contrast: #{$color--info-secondary-contrast};
- --color-image-placeholder-background: #{$color-image-placeholder-background};
+ --color--image-placeholder-background: #{$color--image-placeholder-background};
+ --color--image-placeholder-icon: #{$color--image-placeholder-icon};
--color--header-inverted: #{$color-header-inverted};
diff --git a/resources/assets/stylesheets/scss/scroll-to-top.scss b/resources/assets/stylesheets/scss/scroll-to-top.scss
index 531c1ca..1abaaf6 100644
--- a/resources/assets/stylesheets/scss/scroll-to-top.scss
+++ b/resources/assets/stylesheets/scss/scroll-to-top.scss
@@ -8,7 +8,8 @@ body #scroll-to-top {
margin-right: $scroll-to-top-margin;
margin-bottom: $scroll-to-top-margin;
padding: 10px;
- background: var(--base-color);
+ background: var(--color--highlight);
+ color: var(--color--highlight-contrast);
border: 1px solid transparent;
background-clip: padding-box;
cursor: pointer;
@@ -16,12 +17,9 @@ body #scroll-to-top {
position: fixed;
right: 0;
bottom: 0;
- transition: all 250ms ease-in-out;
+ transition: bottom 250ms ease-in-out;
z-index: 1;
- &:hover {
- background: var(--brand-color-darker);
- border-radius: 2px;
- }
+
&.hide {
bottom: calc( 0px - #{$scroll-to-top-height + $scroll-to-top-margin});
}
diff --git a/resources/assets/stylesheets/scss/search.scss b/resources/assets/stylesheets/scss/search.scss
index d3231ba..c843ff1 100644
--- a/resources/assets/stylesheets/scss/search.scss
+++ b/resources/assets/stylesheets/scss/search.scss
@@ -155,7 +155,7 @@ label.inactive-settings-category {
margin: 20px 0 0 -32px;
a {
- @include background-icon(arr_1right, $size: 24px);
+ @include icon(after, arr_1right, $size: 24px, $align: middle);
@include square(24px);
display: inline-block;
}
@@ -186,7 +186,7 @@ div#div-search-input {
}
-.button.seach-button {
+.button.search-button {
border-radius: 0;
}
@@ -209,19 +209,7 @@ div#div-search-input {
white-space: nowrap;
padding: 8px;
margin: 0 5px;
-
- &::before {
- background-repeat: no-repeat;
- content: " ";
- float: right;
- height: var(--icon-size-default);
- width: var(--icon-size-default);
- @include background-icon(trash);
- }
-
- &:hover::before {
- @include background-icon(trash);
- }
+ @include icon(after, trash, $align: middle);
}
}
}
diff --git a/resources/assets/stylesheets/scss/select.scss b/resources/assets/stylesheets/scss/select.scss
index a5f51b7..22c6c20 100644
--- a/resources/assets/stylesheets/scss/select.scss
+++ b/resources/assets/stylesheets/scss/select.scss
@@ -22,8 +22,13 @@
border-radius: var(--border-radius-default);
}
- .vs__actions {
- align-items: end;
+ .vs__dropdown-option {
+ display: flex;
+ flex-direction: row;
+ }
+
+ .vs__actions .studip-icon {
+ line-height: 10px;
}
&.studip-v-select-drop-up {
diff --git a/resources/assets/stylesheets/scss/selects.scss b/resources/assets/stylesheets/scss/selects.scss
index 3e46dd6..bba1d6d 100644
--- a/resources/assets/stylesheets/scss/selects.scss
+++ b/resources/assets/stylesheets/scss/selects.scss
@@ -3,6 +3,7 @@ $select-border-focus: 1px solid var(--brand-color-dark);
$select-border-radius: var(--border-radius-default);
$select-height-default: 32px;
$select-arrow-size: 10px;
+$svg: icon-path(arr_1down, info);
select {
// Reset appearance
@@ -25,8 +26,8 @@ select {
// Allow all other paddings to be overwritten but the right padding
// to ensure the icon is always clearly visible
padding-right: 20px;
-
- @include background-icon(arr_1down, $size: $select-arrow-size);
+ background-image: url("#{$svg}");
+ background-size: icon-size($select-arrow-size);
background-position: right 4px center;
background-repeat: no-repeat;
@@ -91,9 +92,7 @@ select {
.select2-selection--single {
.select2-selection__clear {
- @include background-icon(decline, $size: $select-arrow-size);
- background-position: right center;
- background-repeat: no-repeat;
+ @include icon(after, decline, $size: $select-arrow-size, $align: middle);
color: transparent;
display: inline-block;
float: none;
@@ -118,16 +117,14 @@ select {
.select2-selection--multiple {
padding-right: ($select-arrow-size + 5px);
- @include background-icon(arr_1down, $size: $select-arrow-size);
- $backgroundPosition: calc($select-height-default / 2 - 4px);
- background-position: right 4px top $backgroundPosition;
- background-repeat: no-repeat;
+ @include icon(after,arr_1down, $size: $select-arrow-size, $align: super);
+
+ .select2-selection__rendered {
+ width: calc(100% - $select-arrow-size);
+ }
.select2-selection__choice__remove {
- @include background-icon(decline, $size: $select-arrow-size);
- background-position: right center;
- background-repeat: no-repeat;
- color: transparent !important;
+ @include icon(after, decline, $size: $select-arrow-size , $align: bottom, $padding: 4px);
display: inline-block;
float: none;
width: ($select-arrow-size + 5px);
@@ -150,9 +147,7 @@ select {
}
.select2-selection__arrow {
- @include background-icon(arr_1down, $size: $select-arrow-size);
- background-position: right 4px center;
- background-repeat: no-repeat;
+ @include icon(after, arr_1down, $role: info, $size: $select-arrow-size , $align: bottom, $padding: 4px);
b {
visibility: hidden;
diff --git a/resources/assets/stylesheets/scss/sidebar.scss b/resources/assets/stylesheets/scss/sidebar.scss
index 0fcc32a..74f411b 100644
--- a/resources/assets/stylesheets/scss/sidebar.scss
+++ b/resources/assets/stylesheets/scss/sidebar.scss
@@ -52,36 +52,34 @@ $icon-size: 20px;
}
.sidebar-widget,
.sidebar-widget-placeholder {
- background-color: var(--white);
+ background-color: var(--color--global-background);
border: none;
margin: 15px 0 0;
width: $sidebar-width;
}
.sidebar-widget-header {
- background-color: var(--white);
- color: var(--black);
+ background-color: var(--color--global-background);
+ color: var(--color--font-primary);
font-weight: bold;
padding: 4px;
word-break: break-word;
}
.sidebar-widget-extra {
- background-color: var(--white);
- a {
+ background-color: var(--color--global-background);
+ a, a:link, a:visited {
display: inline-block;
height: $icon-size;
width: $icon-size;
padding: 4px;
- border: solid thin var(--base-color);
+ color: var(--color--sidebar-item);
+ border: solid thin var(--color--sidebar-item);
border-radius: 5px;
margin-bottom: 4px;
&:hover {
- background-color: var(--base-color);
-
- img {
- filter: brightness(100);
- }
+ background-color: var(--color--sidebar-item);
+ color: var(--color--global-background);
}
}
}
@@ -115,15 +113,19 @@ ul.widget-list {
border-left: solid 4px var(--white);
> *:not(label):not(.options-radio, .options-checkbox) {
- padding: 4px 0 4px 28px;
+ display: inline-flex;
+ flex-direction: row;
+ padding: 4px 0 4px 2px;
line-height: $icon-size;
+ gap: 6px;
+ width: 100%;
}
.label-text {
text-indent: 0;
}
- &:has(>button:not(.options-radio, .options-checkbox)), &:has(>a):not(:last-child) {
+ &:has(>button:not(.options-radio, .options-checkbox)), &:has(>a:not(:last-child, .options-radio, .options-checkbox)) {
border-bottom: solid thin var(--color--sidebar-divider);
}
@@ -133,12 +135,13 @@ ul.widget-list {
}
}
- &:hover:not(:has(>label)):not(:has(button.options-radio)) {
+ &:hover:not(:has(>label)):not(:has(.options-checkbox, .options-radio)):not(.active):has(button, a) {
background-color: var(--color--sidebar-active);
border-left-color: var(--color--sidebar-marker-active);
a, button {
- color: var(--color--font-primary);
+ color: var(--color--sidebar-item-hover);
+ text-decoration: none;
}
}
@@ -162,6 +165,11 @@ ul.widget-list {
@extend .as-link;
text-align: left;
width: 100%;
+ color: var(--color--sidebar-item);
+ }
+
+ a, a:link, a:visited {
+ color: var(--color--sidebar-item);
}
&.sidebar-navigation,
@@ -194,26 +202,21 @@ div#sidebar-navigation {
cursor: not-allowed;
font-weight: lighter;
}
- &.sidebar-navigation > li.active {
- background-color: var(--color--sidebar-active);
- border-left: solid 4px var(--color--sidebar-marker-active-navigation);
- margin-left: -4px;
- padding-left: 1px;
- a {
- color: var(--black);
- padding-left: 4px;
- }
- }
+ &.sidebar-navigation > li.active,
&.sidebar-views > li.active {
background-color: var(--color--sidebar-active);
- border-left: solid 4px var(--color--sidebar-marker-active-view);
+ border-left: solid 4px var(--color--sidebar-item);
margin-left: -4px;
padding-left: 1px;
a, button {
- color: var(--base-color);
+ color: var(--color--font-primary);
padding-left: 5px;
+
+ &:hover {
+ text-decoration: none;
+ }
}
}
&.sidebar-navigation > li,
@@ -241,7 +244,7 @@ div#sidebar-navigation {
}
.sidebar-widget {
- background: var(--white);
+ background: var(--color--global-background);
.widget-options {
list-style: none;
@@ -266,36 +269,34 @@ div#sidebar-navigation {
}
.options-checkbox {
- background-repeat: no-repeat;
- background-position: 2px center;
display: block;
- padding-left: 28px;
+ margin-left: 2px;
&.options-checked {
- @include background-icon(checkbox-checked);
+ @include icon(before, checkbox-checked, $padding: 6px, $align: middle);
}
&.options-unchecked {
- @include background-icon(checkbox-unchecked);
+ @include icon(before, checkbox-unchecked, $padding: 6px, $align: middle);
}
&:hover {
- color: var(--color--font-primary);
+ color: var(--color--sidebar-item-hover);
+ text-decoration: none;
}
}
.options-radio {
- background-repeat: no-repeat;
- background-position: 2px center;
display: block;
- padding-left: 28px;
+ margin-left: 2px;
&.options-checked {
- @include background-icon(radiobutton-checked);
+ @include icon(before, radiobutton-checked, $padding: 6px, $align: middle);
}
&.options-unchecked {
- @include background-icon(radiobutton-unchecked);
+ @include icon(before, radiobutton-unchecked, $padding: 6px, $align: middle);
}
&:hover {
- color: var(--color--font-primary);
+ color: var(--color--sidebar-item-hover);
+ text-decoration: none;
}
}
}
@@ -352,10 +353,10 @@ select.sidebar-selectlist {
}
.submit-search {
- background-color: var(--color--button-background);
+ background-color: var(--color--global-background);
border: 1px solid var(--color--input-field-border);
border-radius: 0;
- color: transparent;
+ color: var(--color--sidebar-item);
cursor: pointer;
font: 0/0 a;
text-shadow: none;
@@ -369,10 +370,9 @@ select.sidebar-selectlist {
display: inline-block;
cursor: pointer;
order: 2;
- height: 100%;
+ height: var(--icon-size);
box-sizing: border-box;
- margin-right: 2px;
- margin-left: -22px;
+ margin: auto 2px auto -22px;
img {
padding-top: 4px;
diff --git a/resources/assets/stylesheets/scss/start.scss b/resources/assets/stylesheets/scss/start.scss
index f052f26..792fc1b 100644
--- a/resources/assets/stylesheets/scss/start.scss
+++ b/resources/assets/stylesheets/scss/start.scss
@@ -36,7 +36,7 @@
float: right;
white-space: nowrap;
- img {
+ svg {
vertical-align: middle;
}
}
diff --git a/resources/assets/stylesheets/scss/studip-cke-ui.scss b/resources/assets/stylesheets/scss/studip-cke-ui.scss
index 660a2e9..787c6de 100644
--- a/resources/assets/stylesheets/scss/studip-cke-ui.scss
+++ b/resources/assets/stylesheets/scss/studip-cke-ui.scss
@@ -1,42 +1,42 @@
@use '../mixins.scss' as *;
:root {
- --ck-color-base-foreground: var(--dark-gray-color-5);
- --ck-color-base-background: var(--white);
- --ck-color-base-border: var(--content-color-40);
- --ck-color-base-action: var(--green);
- --ck-color-base-focus: var(--base-color);
+ --ck-color-base-foreground: var(--color--tile-background);
+ --ck-color-base-background: var(--color--global-background);
+ --ck-color-base-border: var(--color--tile-border);
+ --ck-color-base-action: var(--color--good);
+ --ck-color-base-focus: var(--color--highlight);
--ck-color-base-text: #000;
- --ck-color-base-active: var(--base-color);
- --ck-color-base-active-focus: var(--base-color);
- --ck-color-base-error: var(--red);
+ --ck-color-base-active: var(--color--highlight);
+ --ck-color-base-active-focus: var(--color--highlight);
+ --ck-color-base-error: var(--color--warning);
/* -- Buttons ------------------------------------------------------------------------------- */
- --ck-color-button-default-hover-background: var(--base-color);
- --ck-color-button-default-active-background: var(--base-color);
+ --ck-color-button-default-hover-background: var(--color--highlight);
+ --ck-color-button-default-active-background: var(--color--highlight);
--ck-color-button-default-active-shadow: transparent;
- --ck-color-button-on-background: var(--base-color);
- --ck-color-button-on-hover-background: var(--base-color);
- --ck-color-button-on-active-background: var(--base-color);
+ --ck-color-button-on-background: var(--color--highlight);
+ --ck-color-button-on-hover-background: var(--color--highlight);
+ --ck-color-button-on-active-background: var(--color--highlight);
--ck-color-button-on-active-shadow: transparent;
- --ck-color-button-action-background: var(--white);
- --ck-color-switch-button-on-background: var(--base-color);
- --ck-color-switch-button-on-hover-background: var(--base-color);
+ --ck-color-button-action-background: var(--color--font-inverted);
+ --ck-color-switch-button-on-background: var(--color--highlight);
+ --ck-color-switch-button-on-hover-background: var(--color--highlight);
--ck-color-split-button-hover-border: transparent;
--ck-color-split-button-hover-background: transparent;
/* -- Generic colors ------------------------------------------------------------------------ */
- --ck-color-focus-border: var(--base-color);
+ --ck-color-focus-border: var(--color--highlight);
--ck-color-text: var(--ck-color-base-text);
/* -- Link -------------------------------------------------------------------------------- */
- --ck-color-link-default: var(--base-color);
- --ck-color-link-selected-background: var(--base-color);
- --ck-color-link-fake-selection: var(--base-color);
+ --ck-color-link-default: var(--color--content-link);
+ --ck-color-link-selected-background: var(--color--content-link);
+ --ck-color-link-fake-selection: var(--color--content-link);
/* disable border radius*/
@@ -66,7 +66,7 @@
}
.ck.ck-icon, .ck.ck-icon * {
- color: var(--base-color);
+ color: var(--color--font-primary);
}
.ck.ck-button.ck-on .ck.ck-icon,
.ck.ck-button.ck-on .ck.ck-icon *,
@@ -78,7 +78,7 @@
/* buttons */
.ck.ck-button, a.ck.ck-button {
font-size: 12px;
- color: var(--base-color);
+ color: var(--color--font-primary);
}
.ck.ck-button:hover {
@@ -86,20 +86,16 @@
}
.ck.ck-button.ck-off.ck-button-save {
- @include background-icon(accept, $size: 24px);
- background-position: center;
- background-repeat: no-repeat;
+ @include icon(after, accept, $size: 24px, $align: middle);
}
.ck.ck-button.ck-off.ck-button-cancel {
- @include background-icon(decline, $size: 24px);
- background-position: center;
- background-repeat: no-repeat;
+ @include icon(after, decline, $size: 24px, $align: middle);
}
.ck.ck-button.ck-off.ck-button_with-text:not(.ck-character-grid__tile):not(.ck-source-editing-button) {
background-position: 5px 50%;
- border: solid thin var(--base-color);
+ border: solid thin var(--color--font-primary);
}
.ck-list .ck.ck-button.ck-off.ck-button_with-text:not(.ck-character-grid__tile):not(.ck-source-editing-button) {
@@ -107,18 +103,23 @@
}
.ck.ck-button.ck-off.ck-button_with-text:hover {
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
+ color: var(--color--font-inverted);
}
.ck.ck-button.ck-button_with-text.ck-dropdown__button:not(.ck-disabled, .ck-on):hover {
- background-color: var(--white);
- color: var(--base-color);
+ background-color: var(--color--font-inverted);
+ color: var(--color--highlight);
}
.ck.ck-button.ck-off.ck-button_with-text.ck-disabled:hover,
.ck.ck-button.ck-off.ck-button_with-text.ck-character-grid__tile:hover {
background: transparent;
- color: var(--black);
+ color: var(--color--font-primary);
+}
+
+.ck-list__item .ck.ck-button.ck-on.ck-button_with-text {
+ background-color: var(--color--highlight);
}
.ck-list__item .ck.ck-button.ck-on.ck-button_with-text {
@@ -127,7 +128,12 @@
.ck.ck-button.ck-off.ck-button_with-text:not(.ck-disabled) .ck.ck-button__label {
- color: var(--base-color);
+ color: var(--color--font-primary);
+}
+
+.ck.ck-button.ck-off.ck-button_with-text:not(.ck-disabled):hover .ck.ck-button__label,
+.ck.ck-button.ck-on.ck-button_with-text:not(.ck-disabled) .ck.ck-button__label {
+ color: var(--color--font-inverted);
}
.ck.ck-button.ck-off.ck-button_with-text:not(.ck-disabled, .ck-dropdown__button):hover .ck.ck-button__label,
@@ -146,22 +152,22 @@
}
.ck.ck-button.ck-on.ck-button_with-text.ck-switchbutton {
- color: var(--base-color);
+ color: var(--color--font-primary);
}
.ck.ck-button.ck-on.ck-button_with-text.ck-switchbutton:hover {
- color: var(--white);
+ color: var(-color--font-inverted);
}
.ck.ck-button.ck-off.ck-button-save:hover:not(.ck-disabled) {
- @include background-icon(accept, info_alt, 24px);
+ color: var(--color--font-inverted);
}
.ck.ck-button.ck-off.ck-button-save.ck-disabled {
- @include background-icon(accept, inactive, 24px);
+ color: var(--color--font-inactive);
}
.ck.ck-button.ck-off.ck-button-cancel:hover {
- @include background-icon(decline, info_alt, 24px);
+ color: var(--color--font-inverted);
}
.ck.ck-button.ck-off.ck-button-save svg,
@@ -179,8 +185,8 @@
}
.ck.ck-button.ck-button_with-text.ck-switchbutton {
- color: var(--base-color);
- background-color: var(--white);
+ color: var(--color--font-primary);
+ background-color: var(--color--font-inverted);
}
.ck.ck-button.ck-button_with-text.ck-switchbutton,
@@ -194,24 +200,24 @@
.ck.ck-collapsible.ck-collapsible_collapsed .ck.ck-button.ck-button_with-text:hover .ck.ck-button__label,
.ck.ck-collapsible .ck.ck-button.ck-on.ck-button_with-text:not(.ck-disabled):not(.ck-switchbutton):not(.ck-dropdown__button) .ck.ck-button__label {
- color: var(--base-color);
+ color: var(--color--highlight);
}
.ck.ck-collapsible.ck-collapsible_collapsed .ck.ck-button.ck-disabled.ck-button_with-text:hover .ck.ck-button__label {
- color: var(--black);
+ color: var(--color--font-primary);
}
.ck.ck-collapsible .ck.ck-icon.ck-button__icon *,
.ck.ck-collapsible .ck.ck-button:hover .ck.ck-icon.ck-button__icon *,
.ck.ck-collapsible .ck.ck-button.ck-on .ck.ck-icon.ck-button__icon * {
- color: var(--base-color);
+ color: var(--color--highlight);
}
.ck.ck-button.ck-button_with-text.ck-switchbutton.ck-on:hover,
.ck.ck-button.ck-button_with-text.ck-switchbutton:hover {
- background-color: var(--white);
+ background-color: var(--color--font-inverted);
}
.ck.ck-button.ck-button_with-text.ck-switchbutton.ck-on:hover span,
@@ -236,7 +242,7 @@
/* links */
.ck .ck-fake-link-selection,
.ck .ck-link_selected {
- color: var(--white);
+ color: var(--color--font-inverted);
}
/* input */
@@ -321,7 +327,7 @@
/* table inserter */
.ck.ck-insert-table-dropdown-grid-box.ck-on {
- background: var(--base-color-20);
+ background: var(--color--highlight);
}
/* tooltips */
diff --git a/resources/assets/stylesheets/scss/studip-selection.scss b/resources/assets/stylesheets/scss/studip-selection.scss
index 6b94041..2000c7d 100644
--- a/resources/assets/stylesheets/scss/studip-selection.scss
+++ b/resources/assets/stylesheets/scss/studip-selection.scss
@@ -16,14 +16,14 @@
}
li:not(.empty-placeholder) {
- color: var(--base-color);
+ color: var(--color--highlight);
cursor: pointer;
margin: 1px 0;
padding-right: 0.5em;
}
li.empty-placeholder {
- color: fade-out($text-color, 0.3);
+ color: var(--color--font-secondary);
&:not(:only-child) {
display: none;
@@ -50,11 +50,11 @@
}
.studip-selection-selected .studip-selection-label {
- @include icon(before, radiobutton-checked);
+ @include icon(before, radiobutton-checked, $align: bottom);
}
.studip-selection-selectable .studip-selection-label {
- @include icon(before, radiobutton-unchecked);
+ @include icon(before, radiobutton-unchecked, $align: bottom);
}
.studip-selection-image + .studip-selection-label {
@@ -65,15 +65,15 @@
.studip-selection-selected li:hover {
.studip-selection-image,
- .studip-selection-label::before {
- @include background-icon(remove-circle-full);
+ .studip-selection-label {
+ @include icon(before, remove-circle-full, $align: bottom);
}
}
.studip-selection-selectable li:hover {
.studip-selection-image,
- .studip-selection-label::before {
- @include background-icon(add-circle-full);
+ .studip-selection-label {
+ @include icon(before, add-circle-full, $align: bottom);
}
}
@@ -98,7 +98,7 @@
}
.studip-selection-label {
- color: var(--active-color);
+ color: var(--color--highlight-hover);
}
}
}
diff --git a/resources/assets/stylesheets/scss/system-notifications.scss b/resources/assets/stylesheets/scss/system-notifications.scss
index b17cce5..b1fbed1 100644
--- a/resources/assets/stylesheets/scss/system-notifications.scss
+++ b/resources/assets/stylesheets/scss/system-notifications.scss
@@ -110,11 +110,8 @@
height: 20px;
width: 20px;
- img, svg {
+ svg {
cursor: pointer;
- position: absolute;
- right: 10px;
- top: 10px;
}
}
@@ -171,30 +168,31 @@
}
-.system-notification-exception {
- background-color: var(--color--warning);
- color: var(--color--white);
-
- .system-notification-timeout {
- background-color: var(--color--warning-alternative);
- }
-}
+.system-notification-exception,
.system-notification-error {
background-color: var(--color--warning);
- color: var(--color--white);
+ color: var(--color--warning-contrast);
+
+ .studip-icon {
+ color: var(--color--warning-contrast);
+ }
.system-notification-timeout {
- background-color: var(--color--warning-alternative);
+ background-color: var(--color--warning-secondary);
}
}
.system-notification-warning {
background-color: var(--color--attention);
- color: var(--color--black);
+ color: var(--color--attention-contrast);
+
+ .studip-icon {
+ color: var(--color--attention-contrast);
+ }
.system-notification-timeout {
- background-color: var(--color--attention-alternative);
+ background-color: var(--color--attention-secondary);
}
a:not(.system-notification-message) {
@@ -211,16 +209,26 @@
.system-notification-success {
background-color: var(--color--good);
+ color: var(--color--good-contrast);
+
+ .studip-icon {
+ color: var(--color--good-contrast);
+ }
.system-notification-timeout {
- background-color: var(--color--good-alternative);
+ background-color: var(--color--good-secondary);
}
}
.system-notification-info {
background-color: var(--color--info);
+ color: var(--color--info-contrast);
+
+ .studip-icon {
+ color: var(--color--info-contrast);
+ }
.system-notification-timeout {
- background-color: var(--color--info-alternative);
+ background-color: var(--color--info-secondary);
}
}
diff --git a/resources/assets/stylesheets/scss/table_of_contents.scss b/resources/assets/stylesheets/scss/table_of_contents.scss
index ef8077c..dcb7a30 100644
--- a/resources/assets/stylesheets/scss/table_of_contents.scss
+++ b/resources/assets/stylesheets/scss/table_of_contents.scss
@@ -21,7 +21,7 @@ ul.numberedchapters {
position: absolute;
right: -10px;
top: -11px;
- background-color: var(--white);
+ background-color: var(--color--global-background);
border: 1px solid var(--content-color-40);
margin: 11px 11px 10px;
box-shadow: 2px 2px var(--dark-gray-color-30);
@@ -46,11 +46,9 @@ ul.numberedchapters {
right: 0;
top: 12px;
cursor: pointer;
- @include background-icon(decline, $size: 24px);
- background-repeat: no-repeat;
- background-size: 24px;
- background-position: center right;
- background-color: var(--white);
+ color: var(--color--highlight);
+ background-color: var(--color--global-background);
+ @include icon(after, decline, $size: 24px, $align: middle, $padding: -4px);
}
&.cw-ribbon-slide-enter-active,
diff --git a/resources/assets/stylesheets/scss/tables.scss b/resources/assets/stylesheets/scss/tables.scss
index 9423b50..ec461cd 100644
--- a/resources/assets/stylesheets/scss/tables.scss
+++ b/resources/assets/stylesheets/scss/tables.scss
@@ -105,28 +105,34 @@ td.tree-indent {
}
.toggle-indicator {
- color: var(--black);
+ color: var(--color--font-primary);
font-weight: bold;
a {
background: left center no-repeat;
- @include background-icon(arr_1down);
- color: var(--black);
+ @include icon(before, arr_1down, $align: middle, $padding: -4px);
+ color: var(--color--font-primary);
cursor: pointer;
display: block;
+ &::before {
+ color: var(--color--highlight);
+ }
}
}
.empty .toggle-indicator a {
- @include background-icon(arr_1right, inactive);
+ @include icon(before, arr_1right, $align: middle, $padding: -4px);
+ ::before {
+ color: var(--color--font-inactive);
+ }
}
.collapsed .toggle-indicator a {
- @include background-icon(arr_1right);
+ @include icon(before, arr_1right, $align: middle, $padding: -4px);
}
- td.label-cell, .toggle-indicator a, .empty .toggle-indicator {
+ td.label-cell, .empty .toggle-indicator {
padding-left: 20px;
}
@@ -258,14 +264,21 @@ tr.sortable {
.tablesorter-header-inner {
display: inline-block;
}
+ &::after {
+ color: var(--color--highlight);
+ }
}
th.sortasc {
- @include icon('after', 'arr_1up', 'clickable', $icon-size-inline);
+ @include icon('after', 'arr_1up', $size: $icon-size-inline, $align: top, $padding: 2px);
}
th.sortdesc {
- @include icon('after', 'arr_1down', 'clickable', $icon-size-inline);
+ @include icon('after', 'arr_1down', $size: $icon-size-inline, $align: top, $padding: 2px);
+ }
+
+ th {
+ @include highlight-anchor;
}
}
@@ -393,17 +406,11 @@ table.tree {
padding-left: 5px;
&.open {
- @include background-icon(arr_1down);
- background-position: left center;
- background-repeat: no-repeat;
- padding-left: 20px;
+ @include icon(before, arr_1down);
}
&.closed {
- @include background-icon(arr_1right);
- background-position: left center;
- background-repeat: no-repeat;
- padding-left: 20px;
+ @include icon(before, arr_1right);
}
}
}
@@ -609,15 +616,18 @@ table.default {
float: right;
text-align: right;
white-space: nowrap;
+ color: var(--color--highlight);
img, svg, input[type="image"] {
vertical-align: middle;
}
+ @include highlight-anchor;
}
> caption .actions {
font-size: $font-size-base;
border-left: 1px solid var(--color--table-border);
+ color: var(--color--font-primary);
margin-bottom: -2px;
padding-left: 0.5em;
input[type=text] {
@@ -630,6 +640,16 @@ table.default {
float: none;
}
+ th.actions {
+ color: var(--color--font-primary);
+ }
+
+ td.actions:has(>svg) {
+ display: flex;
+ flex-direction: row-reverse;
+ gap: 4px;
+ }
+
> caption {
.caption-container {
display: flex;
@@ -637,9 +657,17 @@ table.default {
justify-content: space-between;
margin-bottom: 5px;
- img.text-bottom {
+ .files-home {
+ display: inline-flex;
+ gap: 8px;
+ }
+
+ svg {
vertical-align: middle;
- margin: -4px 8px 0 0;
+ margin-top: -4px;
+ }
+ span > a {
+ margin-left: 2px;
}
}
@@ -659,7 +687,7 @@ table.default {
> tbody.toggleable {
&.toggled {
.toggle-switch {
- @include background-icon(arr_1right);
+ @include icon(before, arr_1right);
}
tr:not(:first-child) {
@@ -669,7 +697,7 @@ table.default {
.toggle-switch {
@include hide-text;
- @include background-icon(arr_1down);
+ @include icon(before, arr_1down);
display: inline-block;
height: $icon-size-inline;
text-align: center;
@@ -742,11 +770,10 @@ article.studip > section > table.default:last-child {
table.withdetails {
> tbody > tr:not(.details) > td:first-child {
- @include background-icon(arr_1right);
- background-repeat: no-repeat;
- background-position: 2px center;
- padding-left: 20px;
-
+ @include icon(before, arr_1right, $align: bottom);
+ &::before {
+ color: var(--color--highlight);
+ }
> a {
margin-left: -20px;
padding-left: 20px;
@@ -755,10 +782,13 @@ table.withdetails {
> tbody > tr.open > td {
background-color: var(--color--table-header);
+ &::before {
+ color: var(--color--highlight);
+ }
}
> tbody > tr.open > td:first-child {
- @include background-icon(arr_1down);
+ @include icon(before, arr_1down, $align: bottom);
}
tr.details {
@@ -794,15 +824,9 @@ table.withdetails {
}
@mixin sortable-dreieck($direction) {
+ @include icon(after, 'arr_1#{$direction}', $size: $icon-size-inline);
&::after {
- background-repeat: no-repeat;
- content: ' ';
- display: inline-block;
- height: $icon-size-inline;
- margin-left: 0;
- @include background-icon('arr_1#{$direction}', clickable, $icon-size-inline);
- vertical-align: text-bottom;
- width: $icon-size-inline;
+ color: var('--color--highlight');
}
}
@@ -811,19 +835,19 @@ table.withdetails {
.tablesorter-header:not(.sorter-false) {
white-space: nowrap;
- color: var(--base-color);
+ color: var(--color--highlight);
&:hover {
- color: var(--active-color);
+ color: var(--color--highlight-hover);
cursor: pointer;
}
- &.tablesorter-headerDesc:hover .tablesorter-header-inner::after {
- @include background-icon(arr_1down, status-red, $icon-size-inline);
+ &.tablesorter-headerDesc:hover .tablesorter-header-inner {
+ @include icon(after, arr_1down, $size: $icon-size-inline);
}
- &.tablesorter-headerAsc:hover .tablesorter-header-inner::after {
- @include background-icon(arr_1up, status-red, $icon-size-inline);
+ &.tablesorter-headerAsc:hover .tablesorter-header-inner {
+ @include icon(after, arr_1up, $size: $icon-size-inline);
}
}
@@ -930,7 +954,7 @@ table.show-tree {
a:hover {
background-color: var(--color--table-header) !important;
- color: var(--base-color) !important;
+ color: var(--color--content-link-hover) !important;
}
}
diff --git a/resources/assets/stylesheets/scss/tabs.scss b/resources/assets/stylesheets/scss/tabs.scss
index 77179e5..914da5f 100644
--- a/resources/assets/stylesheets/scss/tabs.scss
+++ b/resources/assets/stylesheets/scss/tabs.scss
@@ -38,10 +38,10 @@ div.clear
margin-right: 0;
}
&.current {
- color: var(--base-color);
+ color: var(--color--main-navigation-item);
}
&:hover {
- color: var(--base-color);
+ color: var(--color--main-navigation-item);
padding-top: 0;
}
@@ -49,17 +49,25 @@ div.clear
padding-top: 0;
line-height: 25px;
a, span.quiet {
- color: var(--base-color);
+ color: var(--color--main-navigation-item);
+
+ &:hover {
+ text-decoration: none;
+ }
}
}
}
a, span.quiet {
- color: var(--black);
+ color: var(--color--font-primary);
float: left;
display: block;
padding: 5px 8px;
white-space: nowrap;
+
+ &:hover {
+ text-decoration: none;
+ }
}
}
diff --git a/resources/assets/stylesheets/scss/themes.scss b/resources/assets/stylesheets/scss/themes.scss
new file mode 100644
index 0000000..ba618e1
--- /dev/null
+++ b/resources/assets/stylesheets/scss/themes.scss
@@ -0,0 +1,249 @@
+.theme-settings-app-wrapper {
+ .theme-list {
+ max-width: 1660px;
+
+ h2 {
+ margin-top: 0;
+ }
+
+ .theme-categories {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
+ gap: 15px;
+
+ .theme-category {
+ .theme-list {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
+ gap: 15px;
+ padding: 0;
+ margin: 0;
+ list-style: none;
+
+ li {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ border: 1px solid var(--color--tile-border);
+ border-left: 8px solid var(--color--tile-marker-inactive);
+ background: var(--color--tile-background);
+ padding: 0.5rem;
+
+ &.active {
+ border-left-color: var(--color--tile-marker-active);
+ }
+
+ &.theme-add {
+ border-left: 1px solid var(--color--tile-border);
+
+ button {
+ width: 100%;
+ height: 100%;
+ background: var(--color--tile-background);
+ border: none;
+ color: var(--color--font-primary);
+ font-size: 1.1rem;
+ cursor: pointer;
+ color: var(--color--highlight);
+
+ .studip-icon {
+ display: inline-block;
+ vertical-align: top;
+ margin-right: 5px;
+ }
+ }
+ }
+
+ .theme-info {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+
+ .theme-meta {
+ flex: 1;
+
+ .theme-name {
+ margin: 0;
+ font-size: 1.1rem;
+ }
+
+ .theme-description {
+ margin: 0.25rem 0 0 0;
+ font-size: 0.9rem;
+ color: var(--color--text-muted);
+ }
+ }
+
+ .theme-colors {
+ display: flex;
+ gap: 4px;
+
+ .theme-color {
+ width: 14px;
+ height: 48px;
+ }
+ }
+ }
+
+ .theme-actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: 0.5rem;
+ margin-top: 2rem;
+
+ button.button {
+ margin: 0;
+ }
+ }
+ }
+ }
+ }
+
+ .themes-footer {
+ grid-column: 1 / -1;
+ display: flex;
+ justify-content: center;
+ margin-top: 2rem;
+ }
+
+ .json-upload {
+ margin-top: 2rem;
+
+ input {
+ margin-bottom: 1rem;
+ }
+
+ button {
+ padding: 0.5rem 1rem;
+ }
+ }
+ }
+ }
+}
+.theme-editor {
+ .color-group {
+ margin-bottom: 2rem;
+
+ .group-title {
+ font-size: 1.2rem;
+ margin-bottom: 0.5rem;
+ border-bottom: 1px solid var(--color--divider);
+ padding-bottom: 0.2rem;
+ }
+
+ .color-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
+ gap: 1rem;
+
+ .color-entry {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ min-height: 150px;
+ background: var(--color--tile-background);
+ border: 1px solid var(--color--tile-border);
+
+ .color-entry-color {
+ border: 1px solid var(--color--tile-border);
+ width: 50px;
+ margin: 10px;
+ }
+ .color-entry-content {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 0.5rem;
+ flex-grow: 1;
+
+ .color-entry-text {
+ .color-entry-hex {
+ font-weight: 700;
+ }
+ }
+
+ .color-entry-buttons {
+ display: flex;
+ justify-content: end;
+ button.button.btn-icon--only {
+ margin: 0 8px 0 0;
+ }
+ }
+ }
+ }
+ }
+ }
+ .new-color-entry {
+ input {
+ margin-right: 8px;
+ }
+
+ button {
+ margin-left: 8px;
+ }
+ }
+}
+
+.theme-upload {
+ display: flex;
+ flex-direction: column;
+ width: 540px;
+ border: solid thin var(--color--tile-border);
+ background: var(--color--global-background);
+ margin: 0 auto;
+ padding: 1em;
+ .theme-upload-title h3 {
+ margin: 0;
+ font-size: 1.1rem;
+ }
+}
+.theme-upload-actions {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ margin-top: 30px;
+
+ .visually-hidden {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0 0 0 0);
+ white-space: nowrap;
+ border: 0;
+ }
+ .file-dropzone-wrapper {
+ width: 100%;
+ padding: 5px;
+ border: thin solid var(--color--tile-border);
+ border-radius: var(--border-radius-default);
+ background: var(--color--tile-background);
+ cursor: pointer;
+
+ .file-dropzone {
+ display: inline-flex;
+ width: calc(100% - 60px);
+ gap: 20px;
+ padding: 30px;
+ border: thin solid transparent;
+ color: var(--color--highlight);
+ border-radius: var(--border-radius-default);
+
+ &:hover {
+ border: thin dashed var(--color--tile-border);
+ }
+
+ .studip-icon {
+ flex-shrink: 0;
+ }
+
+ span {
+ max-width: 14em;
+ padding: 7px 0;
+ }
+ }
+ }
+}
diff --git a/resources/assets/stylesheets/scss/tree.scss b/resources/assets/stylesheets/scss/tree.scss
index 1d700f9..af1c8ec 100644
--- a/resources/assets/stylesheets/scss/tree.scss
+++ b/resources/assets/stylesheets/scss/tree.scss
@@ -19,6 +19,15 @@ $tree-outline: 1px solid var(--light-gray-color-40);
.contentbar-wrapper-right {
display: inherit;
+ button,
+ a {
+ color: var(--color--highlight);
+
+ &:hover {
+ color: var(--color--highlight-hover);
+ }
+ }
+
.action-menu {
button {
top: -2px;
@@ -77,7 +86,7 @@ $tree-outline: 1px solid var(--light-gray-color-40);
button {
background: transparent;
border: 0;
- color: var(--base-color);
+ color: var(--color--highlight);
cursor: pointer;
padding: 0;
diff --git a/resources/assets/stylesheets/scss/typography.scss b/resources/assets/stylesheets/scss/typography.scss
index 5268145..d3a70a8 100644
--- a/resources/assets/stylesheets/scss/typography.scss
+++ b/resources/assets/stylesheets/scss/typography.scss
@@ -8,7 +8,7 @@ body {
font-family: $font-family-base;
font-size: $font-size-base;
line-height: $line-height-base;
- color: $text-color;
+ color: var(--color--font-primary);
}
// Reset fonts for relevant elements
@@ -33,7 +33,7 @@ h1, h2, h3, h4, h5, h6 {
font-family: $headings-font-family;
font-weight: $headings-font-weight;
line-height: $headings-line-height;
- color: $headings-color;
+ color: var(--color--font-primary);
}
h1 {
diff --git a/resources/assets/stylesheets/scss/variables.scss b/resources/assets/stylesheets/scss/variables.scss
index 551bb0a..4e7e36f 100644
--- a/resources/assets/stylesheets/scss/variables.scss
+++ b/resources/assets/stylesheets/scss/variables.scss
@@ -2,7 +2,7 @@
@import '../mixins/colors';
// Typography
-$text-color: #000;
+$text-color: var(--color--font-primary);
$font-family-base: "Lato", sans-serif;
@@ -81,15 +81,21 @@ $grid-gap: 0;
// Buttons
$button-icons: (
accept: accept,
- cancel: decline,
- edit: edit,
- move-up: arr_1up,
- move-down: arr_1down,
add: add,
- trash: trash,
- download: download,
- search: search,
arr_left: arr_1left,
arr_right: arr_1right,
+ cancel: decline,
+ date: date,
+ delete: trash,
+ edit: edit,
+ move-down: arr_1down,
+ move-up: arr_1up,
+ play: play,
refresh: refresh,
-);
+ search: search,
+ sidebar-toggle: sidebar3,
+ trash: trash,
+ upload: upload,
+ has-notice: file-text,
+ has-no-notice: file,
+); \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/vips.scss b/resources/assets/stylesheets/scss/vips.scss
index f11afda..ea092af 100644
--- a/resources/assets/stylesheets/scss/vips.scss
+++ b/resources/assets/stylesheets/scss/vips.scss
@@ -36,18 +36,6 @@ form.default {
}
}
-button.vips_file_upload {
- @include background-icon(upload);
- background-position: 0.5em center;
- background-repeat: no-repeat;
- background-size: var(--icon-size-inline);
- padding-left: 30px;
-
- &:hover {
- @include background-icon(upload, info_alt);
- }
-}
-
progress.assignment {
appearance: none;
background: var(--light-gray-color-20);
@@ -157,6 +145,9 @@ progress.assignment {
}
.exercise_type {
+ display: flex;
+ flex-direction: row;
+ gap: 16px;
background-color: transparent;
background-position: 0.5em center;
background-repeat: no-repeat;
@@ -165,7 +156,7 @@ progress.assignment {
cursor: pointer;
margin-top: 1.5ex;
min-height: 50px;
- padding: 4px 4px 4px 56px;
+ padding: 8px;
text-align: left;
width: 342px;
@@ -173,6 +164,15 @@ progress.assignment {
border: 1px solid var(--brand-color-dark);
color: var(--active-color);
}
+
+ .exercise_type_description {
+ display: flex;
+ flex-direction: column;
+
+ .exercise_type_name {
+ font-weight: bold;
+ }
+ }
}
.exercise .points {
diff --git a/resources/assets/stylesheets/scss/wiki.scss b/resources/assets/stylesheets/scss/wiki.scss
index 3d1c1ff..f03ce6f 100644
--- a/resources/assets/stylesheets/scss/wiki.scss
+++ b/resources/assets/stylesheets/scss/wiki.scss
@@ -49,12 +49,7 @@ body#wiki #main_content {
}
a.wiki-restricted {
- $icon-size: 12px;
- @include background-icon(lock-locked, info, $icon-size);
- background-position: left center;
- background-repeat: no-repeat;
-
- padding-left: $icon-size;
+ @include icon(before, lock-locked, $size: 12px, $padding: 12px);
}
.wiki-empty-background {
@@ -156,13 +151,19 @@ a.wiki-restricted {
.wiki_added {
background-color: var(--content-color-20);
border: 1px solid var(--content-color-40);
- @include background-icon(add, inactive);
+ @include icon(before, add);
+ &::before {
+ color: var(--color--font-inactive);
+ }
}
.wiki_erased {
background-color: var(--white);
border: 1px solid var(--light-gray-color-40);
- @include background-icon(remove, inactive);
+ @include icon(before, remove);
+ &::before {
+ color: var(--color--font-inactive);
+ }
}
.wiki_added + div,
.wiki_erased + div {
diff --git a/resources/assets/stylesheets/scss/wizard.scss b/resources/assets/stylesheets/scss/wizard.scss
index 9663f98..8c869c2 100644
--- a/resources/assets/stylesheets/scss/wizard.scss
+++ b/resources/assets/stylesheets/scss/wizard.scss
@@ -9,13 +9,12 @@
margin-top: 38px;
flex-shrink: 0;
- img {
+ .studip-icon {
margin: auto;
- display: block;
}
p {
- margin: 15px;
+ margin: 15px 0;
}
.wizard-requirements {
@@ -30,14 +29,17 @@
list-style: none;
button {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
padding: 2px 0;
background-color: transparent;
border: none;
- color: var(--base-color);
+ color: var(--color--highlight);
cursor: pointer;
&:hover {
- color: var(--red);
+ color: var(--color--highlight--hover);
}
}
@@ -68,34 +70,40 @@
display: inline-block;
position: relative;
margin-right: 60px;
- border: solid 2px var(--base-color);
+ border: solid 2px var(--color--highlight);
button {
+ display: inline-flex;
+ justify-content: center;
padding: 6px 0;
height: 36px;
width: 36px;
cursor: pointer;
background: no-repeat;
border: none;
+ color: var(--color--highlight);
}
&.valid {
- background-color: var(--base-color);
+ background-color: var(--color--highlight);
+ button {
+ color: var(--color--highlight-contrast);
+ }
}
&.invalid {
- background-color: white;
+ background-color: var(--color--global-background);
}
&.optional {
- border: dashed thin var(--base-color);
+ border: dashed thin var(--color--highlight);
}
&::before {
position: absolute;
content: "";
width: 62px;
- border: solid thin var(--base-color);
+ border: solid thin var(--color--highlight);
top: 50%;
transform: translateY(-50%);
left: 100%;
@@ -106,7 +114,7 @@
content: "";
width: 38px;
height: 3px;
- background: var(--base-color);
+ background: var(--color--highlight);
top: 44px;
left: -1px;
}
@@ -132,10 +140,10 @@
max-height: 475px;
overflow-y: auto;
scrollbar-width: thin;
- scrollbar-color: var(--base-color) var(--dark-gray-color-5);
+ scrollbar-color: var(--color--highlight) var(--dark-gray-color-5);
.wizard-required {
- color: var(--red);
+ color: var(--color--warning);
}
textarea {
diff --git a/resources/assets/stylesheets/studip.scss b/resources/assets/stylesheets/studip.scss
index 97422e1..d923f64 100644
--- a/resources/assets/stylesheets/studip.scss
+++ b/resources/assets/stylesheets/studip.scss
@@ -53,6 +53,7 @@
@import "scss/headings";
@import "scss/helpbar";
@import "scss/i18n";
+@import "scss/icons";
@import "scss/ilias-interface";
@import "scss/index";
@import "scss/fullscreen";
@@ -80,7 +81,6 @@
@import "scss/questionnaire";
@import "scss/quicksearch";
@import "scss/raumzeit";
-@import "scss/report";
@import "scss/responsive";
@import "scss/resources";
@import "scss/sidebar";
@@ -104,6 +104,7 @@
@import "scss/talk-bubble";
@import "scss/tooltip";
@import "scss/tfa";
+@import "scss/themes";
@import "scss/tour";
@import "scss/tree";
@import "scss/typography";
@@ -380,8 +381,8 @@ td.index_box_cell {
a {
box-sizing: border-box;
- background-color: var(--content-color-20);
- border: 1px solid var(--dark-gray-color-30);
+ background-color: var(--color--tile-background);
+ border: 1px solid var(--color--tile-border);
display: block;
height: 11em;
margin: 0 0 1em;
@@ -390,15 +391,16 @@ td.index_box_cell {
position: relative;
&:hover {
- background-color: var(--content-color-10);
- border-color: var(--dark-gray-color-45);
+ background-color: var(--color--tile-background-hover);
+ border-color: var(--color--tile-border-hover);
+ text-decoration: none;
p {
- color: var(--black);
+ color: var(--color--font-primary);
}
}
}
- img {
+ svg {
height: calc(100% - 20px);
position: absolute;
top: 10px;
@@ -416,25 +418,25 @@ td.index_box_cell {
padding: 0;
}
p {
- color: var(--dark-gray-color-80);
+ color: var(--color--font-secondary);
}
}
/* --- general style classes ------------------------------------------------ */
.arrow_down {
background: transparent top left no-repeat !important;
- @include background-icon(arr_1down);
+ @include icon(before, arr_1down);
}
.arrow_right {
background: transparent top left no-repeat !important;
- @include background-icon(arr_1right);
+ @include icon(before, arr_1right);
}
h1:hover, h2:hover, h3:hover, h4:hover {
.arrow_down {
- @include background-icon(arr_1down, attention);
+ @include icon(before, arr_1down, attention);
}
.arrow_right {
- @include background-icon(arr_1right, attention);
+ @include icon(before, arr_1right, attention);
}
}
@@ -643,10 +645,11 @@ input.allow-plaintext-toggle {
position: absolute;
transform: translateY(-50%);
- @include background-icon(visibility-invisible);
+ @include icon($position: before, $icon: visibility-invisible, $padding: 6px);
+ color: var(--color--font-primary);
&.password-is-hidden {
- @include background-icon(visibility-checked);
+ @include icon($position: before, $icon: visibility-checked, $padding: 6px);
}
}
}
diff --git a/resources/vue/apps/ThemeSettings.vue b/resources/vue/apps/ThemeSettings.vue
new file mode 100644
index 0000000..a69fe89
--- /dev/null
+++ b/resources/vue/apps/ThemeSettings.vue
@@ -0,0 +1,52 @@
+<template>
+ <div class="theme-settings-app-wrapper">
+ <ThemeEditor
+ v-if="selectedTheme"
+ :theme="selectedTheme"
+ @back="clearSelection"
+ />
+
+ <ThemeList
+ v-else
+ :themes="themes"
+ @select="selectTheme"
+ @activate="activateTheme"
+ @add="addTheme"
+ />
+ </div>
+</template>
+
+<script setup>
+import { computed, ref } from 'vue';
+import { useStore } from 'vuex';
+import ThemeList from '@/vue/components/theme/ThemeList.vue';
+import ThemeEditor from '@/vue/components/theme/ThemeEditor.vue';
+
+
+const store = useStore();
+const themes = computed(() => store.getters['studip-themes/all']);
+const selectedTheme = ref(null);
+
+const selectTheme = (theme) => {
+ selectedTheme.value = theme;
+};
+
+const activateTheme = (theme) => {
+ store.dispatch('theme-settings-module/activateTheme', {theme: theme}).then(() => {
+ window.location.reload();
+ });
+};
+
+const addTheme = () => {
+ store.dispatch('theme-settings-module/addTheme').then((theme) => {
+ selectTheme(theme);
+ });
+};
+
+const clearSelection = () => {
+ selectedTheme.value = null;
+};
+
+store.dispatch('users/loadById', { id: store.getters['theme-settings-module/userId'] });
+store.dispatch('studip-themes/loadAll', {options: {}});
+</script>
diff --git a/resources/vue/components/ContentModulesEditTiles.vue b/resources/vue/components/ContentModulesEditTiles.vue
index 5867eba..fc2b2ee 100644
--- a/resources/vue/components/ContentModulesEditTiles.vue
+++ b/resources/vue/components/ContentModulesEditTiles.vue
@@ -21,7 +21,7 @@
<div>
<a class="upper_part dragarea" :href="getDescriptionURL(element)" data-dialog>
<div>
- <img :src="element.icon" width="40" height="40" v-if="element.icon" />
+ <StudipIcon v-if="element.icon" :shape="element.icon.shape" :size="40" />
</div>
<div>
<h3>{{ element.displayname }}</h3>
@@ -118,7 +118,7 @@
<div>
<a class="upper_part" :href="getDescriptionURL(module)" data-dialog>
<div>
- <img :src="module.icon" width="40" height="40" v-if="module.icon" />
+ <StudipIcon v-if="module.icon" :shape="module.icon.shape" :size="40" />
</div>
<div>
<h3>{{ module.displayname }}</h3>
@@ -182,7 +182,7 @@ export default {
}
.inactive-modules {
margin-top: 1em;
- border-top: solid thin var(--content-color-40);
+ border-top: solid thin var(--color--tile-border);
padding-top: 1em;
}
.studip-grid-element {
@@ -205,7 +205,7 @@ export default {
}
&.sortable-ghost {
- border: dashed 2px var(--content-color-40);
+ border: dashed 2px var(--color--tile-border);
margin: 0;
* {
opacity: 0;
@@ -244,8 +244,11 @@ export default {
min-height: 150px;
width: 100%;
- > .upper_part {
+ > a.upper_part {
display: flex;
+ color: var(--color--highlight);
+ height: 100%;
+
> :first-child {
padding: 10px 5px 10px 15px;
}
@@ -254,7 +257,14 @@ export default {
h3 {
margin-top: 0;
- color: var(--base-color);
+ color: var(--color--highlight);
+ }
+ }
+ &:hover {
+ color: var(--color--highlight-hover);
+ text-decoration: none;
+ h3 {
+ color: var(--color--highlight-hover);
}
}
}
diff --git a/resources/vue/components/ContentmodulesEditTable.vue b/resources/vue/components/ContentmodulesEditTable.vue
index 85b89a3..58fe01d 100644
--- a/resources/vue/components/ContentmodulesEditTable.vue
+++ b/resources/vue/components/ContentmodulesEditTable.vue
@@ -55,7 +55,7 @@
:href="getDescriptionURL(element)"
data-dialog
>
- <img :src="element.icon" width="20" height="20" v-if="element.icon" class="text-bottom" />
+ <StudipIcon v-if="element.icon" :shape="element.icon.shape" :size="20" />
{{ element.displayname }}
</a>
</td>
@@ -110,7 +110,7 @@
</td>
<td>
<a class="upper_part" :href="getDescriptionURL(module)" data-dialog>
- <img :src="module.icon" width="20" height="20" v-if="module.icon" class="text-bottom" />
+ <StudipIcon v-if="module.icon" :shape="module.icon.shape" :size="20" />
{{ module.displayname }}
</a>
</td>
@@ -152,6 +152,17 @@ table.admin_contentmodules > tbody > tr {
}
> td {
height: 31px; //to make all rows equally high
+
+ a {
+ display: flex;
+ flex-direction: row;
+ gap: 10px;
+ color: var(--color--content-link);
+
+ &:hover {
+ color: var(--color--content-link-hover);
+ }
+ }
}
}
</style>
diff --git a/resources/vue/components/FilesTable.vue b/resources/vue/components/FilesTable.vue
index 85e237a..2bc83ce 100644
--- a/resources/vue/components/FilesTable.vue
+++ b/resources/vue/components/FilesTable.vue
@@ -6,10 +6,9 @@
<caption>
<div class="caption-container">
<div v-if="breadcrumbs && !table_title">
- <a v-if="breadcrumbs[0]" :href="breadcrumbs[0].url" :title="$gettext('Zum Hauptordner')">
+ <a v-if="breadcrumbs[0]" :href="breadcrumbs[0].url" :title="$gettext('Zum Hauptordner')" class="files-home">
<studip-icon shape="folder-home-full"
role="clickable"
- class="text-bottom"
:size="30"></studip-icon>
<span v-if="breadcrumbs.length === 1">
{{ breadcrumbs[0].name }}
diff --git a/resources/vue/components/StudipDialog.vue b/resources/vue/components/StudipDialog.vue
index 77edd1b..8d56668 100644
--- a/resources/vue/components/StudipDialog.vue
+++ b/resources/vue/components/StudipDialog.vue
@@ -1,7 +1,7 @@
<template>
<Teleport to="body">
<focus-trap v-model="trap">
- <div class="studip-dialog" @keydown.esc="closeDialog" :style="{zIndex: zIndex}">
+ <div class="studip-dialog" @keydown.esc="closeDialog" :style="{ zIndex: zIndex }">
<transition name="dialog-fade">
<div class="studip-dialog-backdrop" v-if="true">
<vue-resizeable
@@ -30,7 +30,7 @@
:class="[
{ 'studip-dialog-warning': question, 'studip-dialog-alert': alert },
'studip-dialog-body',
- $attrs.class
+ $attrs.class,
]"
role="dialog"
aria-modal="true"
@@ -38,14 +38,14 @@
:aria-describedby="dialogDescId"
ref="dialog"
>
- <header
- class="studip-dialog-header"
- >
- <span :id="dialogTitleId"
- class="studip-dialog-title"
- :title="dialogTitle"
- role="heading"
- aria-level="2">
+ <header class="studip-dialog-header">
+ <span
+ :id="dialogTitleId"
+ class="studip-dialog-title"
+ :title="dialogTitle"
+ role="heading"
+ aria-level="2"
+ >
{{ dialogTitle }}
</span>
<slot name="dialogHeader"></slot>
@@ -54,8 +54,7 @@
:title="$gettext('Schließen')"
class="studip-dialog-close-button"
@click="closeDialog"
- >
- </button>
+ ></button>
</header>
<section
:id="dialogDescId"
@@ -125,32 +124,32 @@ export default {
props: {
height: {
type: [String, Number],
- default: 300
+ default: 300,
},
width: {
type: [String, Number],
- default: 450
+ default: 450,
},
title: String,
confirmText: String,
closeText: String,
confirmShow: {
type: Boolean,
- default: true
+ default: true,
},
confirmDisabled: {
type: Boolean,
- default: false
+ default: false,
},
confirmClass: String,
- closeClass: String,
+ closeClass: [String, Boolean],
question: String,
alert: String,
message: String,
defaultFocus: {
type: Boolean,
- default: true
- }
+ default: true,
+ },
},
data() {
const dialogId = uuid++;
@@ -166,8 +165,8 @@ export default {
minH: 100,
left: 0,
top: 0,
- dragSelector: ".studip-dialog-header",
- handlers: ["r", "rb", "b", "lb", "l", "lt", "t", "rt"],
+ dragSelector: '.studip-dialog-header',
+ handlers: ['r', 'rb', 'b', 'lb', 'l', 'lt', 't', 'rt'],
fit: false,
footerHeight: 68,
@@ -189,7 +188,7 @@ export default {
button = {};
button.text = this.confirmText;
button.class = this.confirmClass;
- button.disabled = this.confirmDisabled
+ button.disabled = this.confirmDisabled;
}
return button;
@@ -209,8 +208,10 @@ export default {
if (this.closeText) {
button = {};
button.text = this.closeText;
- if (this.closeClass) {
+ if (typeof this.closeClass === 'string') {
button.class = this.closeClass;
+ } else if (this.closeClass === false) {
+ // keine Klasse setzen
} else {
button.class = 'cancel';
}
@@ -231,14 +232,14 @@ export default {
return '';
},
dialogWidth() {
- return this.currentWidth ? (this.currentWidth - dialogPadding * 4) + 'px' : 'unset';
+ return this.currentWidth ? this.currentWidth - dialogPadding * 4 + 'px' : 'unset';
},
dialogHeight() {
- return this.currentHeight ? (this.currentHeight - dialogPadding * 4) + 'px' : 'unset';
+ return this.currentHeight ? this.currentHeight - dialogPadding * 4 + 'px' : 'unset';
},
contentHeight() {
return this.currentHeight ? this.currentHeight - this.footerHeight + 'px' : 'unset';
- }
+ },
},
methods: {
closeDialog() {
@@ -272,25 +273,21 @@ export default {
if (el) {
el.blur();
}
- }
+ },
},
mounted() {
if (this.defaultFocus) {
- this.$nextTick()
- .then(() => {
- this.$refs.buttonB.focus();
- });
+ this.$nextTick().then(() => {
+ this.$refs.buttonB.focus();
+ });
}
},
created() {
- const maxZIndex = Array.from(document.querySelectorAll('.studip-dialog')).reduce(
- (acc, el) => {
- const style = getComputedStyle(el);
- return Math.max(acc, Number.parseInt(style.zIndex, 10));
- },
- 1000
- );
+ const maxZIndex = Array.from(document.querySelectorAll('.studip-dialog')).reduce((acc, el) => {
+ const style = getComputedStyle(el);
+ return Math.max(acc, Number.parseInt(style.zIndex, 10));
+ }, 1000);
this.zIndex = maxZIndex + 1;
- }
+ },
};
</script>
diff --git a/resources/vue/components/StudipFileChooser.vue b/resources/vue/components/StudipFileChooser.vue
index 37dc208..1e7c322 100644
--- a/resources/vue/components/StudipFileChooser.vue
+++ b/resources/vue/components/StudipFileChooser.vue
@@ -132,7 +132,7 @@ export default {
}
span {
box-sizing: border-box;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
border-left: none;
display: inline-block;
font-size: 14px;
diff --git a/resources/vue/components/StudipIcon.vue b/resources/vue/components/StudipIcon.vue
index 5248ff9..ddd55c3 100644
--- a/resources/vue/components/StudipIcon.vue
+++ b/resources/vue/components/StudipIcon.vue
@@ -1,118 +1,80 @@
<template>
- <input
- v-if="name"
+ <div
+ v-if="!name"
v-bind="$attrs"
- type="image"
- :name="name"
- :src="url"
- :style="{ width: realSize + 'px', height: realSize + 'px' }"
+ v-html="svgContent"
:role="ariaRole"
:class="cssClass"
- :alt="$attrs.alt ?? ''"
- />
- <img v-else
- v-bind="$attrs"
- :src="url"
- :style="{ width: realSize + 'px', height: realSize + 'px' }"
- :role="ariaRole"
- :class="cssClass"
- :alt="$attrs.alt ?? ''"
+ :style="computedStyle"
/>
+
+ <label v-else class="icon-button undecorated">
+ <input type="submit" hidden v-bind="$attrs">
+ <div v-html="svgContent" :role="ariaRole" :class="cssClass" :style="computedStyle" />
+ <span v-if="text">{{ text }}</span>
+ </label>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
-
-function getCSSVariableValue(property: string): number {
- const value = getComputedStyle(document.body).getPropertyValue(property);
- return parseInt(value, 10);
-}
-
-const defaultIconSize: number = getCSSVariableValue('--icon-size-default');
-const inlineIconSize: number = getCSSVariableValue('--icon-size-inline');
+import iconLoader from "../../assets/javascripts/lib/icon-loader";
export default defineComponent({
name: 'studip-icon',
props: {
- ariaRole: {
- type: String,
- required: false,
- },
- name: {
- type: String,
- required: false,
- },
- role: {
- type: String,
- required: false,
- default: 'clickable',
- },
- shape: {
- type: String,
- required: true,
- },
- size: {
- type: Number,
- required: false,
- default: defaultIconSize,
- },
- inline: {
- type: Boolean,
- default: false
- }
+ ariaRole: { type: String, required: false },
+ name: { type: String, required: false },
+ role: { type: String, required: false, default: 'clickable' },
+ shape: { type: String, required: true },
+ size: { type: Number, required: false, default: null },
+ inline: { type: Boolean, default: false },
+ text: { type: String, required: false }
+ },
+ data() {
+ return { svgContent: '' };
},
computed: {
- realSize(): number | undefined {
- if (this.inline) {
- return inlineIconSize;
- }
- return Number(this.size) !== defaultIconSize ? this.size : undefined;
- },
- url(): string {
- if (this.shape.indexOf('http') === 0) {
- return this.shape;
- }
- var path = this.shape.split('+').reverse().join('/');
- return `${window.STUDIP.ASSETS_URL}images/icons/${this.color}/${path}.svg`;
- },
color(): string {
- switch (this.role) {
- case 'info':
- return 'black';
-
- case 'inactive':
- return 'grey';
-
- case 'accept':
- case 'status-green':
- return 'green';
-
- case 'attention':
- case 'new':
- case 'status-red':
- return 'red';
-
- case 'info_alt':
- return 'white';
+ const roleColors: Record<string, string> = {
+ accept: 'green',
+ attention: 'red',
+ clickable: 'blue',
+ info: 'black',
+ info_alt: 'white',
+ inactive: 'grey',
+ navigation: 'blue',
+ new: 'red',
+ sort: 'blue',
+ 'status-green': 'green',
+ 'status-red': 'red',
+ 'status-yellow': 'yellow',
+ };
- case 'status-yellow':
- return 'yellow';
-
- case 'sort':
- case 'clickable':
- case 'navigation':
- default:
- return 'blue';
- }
+ return roleColors[this.role] ?? 'blue';
},
- cssClass(): Array<string> {
+ cssClass(): string[] {
return [
'studip-icon',
this.inline ? 'studip-icon-inline' : '',
`icon-role-${this.role}`,
- `icon-shape-${this.shape}`,
+ `icon-shape-${this.shape}`
];
+ },
+ computedStyle(): Record<string, string> {
+ return this.size
+ ? { width: `${this.size}px`, height: `${this.size}px` }
+ : {}; // Falls size nicht gesetzt ist, greift CSS mit --icon-size-default
}
},
+ watch: {
+ shape: {
+ immediate: true,
+ handler(shape) {
+ iconLoader.load(shape).then((svg: string) => {
+ this.svgContent = svg;
+ });
+ }
+ }
+ }
});
</script>
diff --git a/resources/vue/components/StudipModalLeave.vue b/resources/vue/components/StudipModalLeave.vue
new file mode 100644
index 0000000..1e1f4f5
--- /dev/null
+++ b/resources/vue/components/StudipModalLeave.vue
@@ -0,0 +1,94 @@
+<template>
+ <StudipDialog
+ v-if="showModal"
+ width="600"
+ height="200"
+ @confirm="confirmLeave"
+ @close="cancelLeave"
+ :closeClass="false"
+ :closeText="$gettext('Auf Seite bleiben')"
+ :confirmText="$gettext('Seite verlassen')"
+ :title="$gettext('Ungespeicherte Änderungen')"
+ :question="$gettext('Es gibt ungespeicherte Änderungen. Möchten Sie die Seite wirklich verlassen?')"
+ >
+ <template #dialogButtons>
+ <button v-if="props.onSave" class="button" @click="saveAndLeave">
+ {{ $gettext('Speichern & Verlassen') }}
+ </button>
+ </template>
+ </StudipDialog>
+</template>
+
+<script setup>
+import { ref, onMounted, onUnmounted } from 'vue';
+import StudipDialog from './StudipDialog.vue';
+
+const props = defineProps({
+ hasUnsavedChanges: {
+ type: Boolean,
+ required: true,
+ },
+ onSave: {
+ type: Function,
+ required: false,
+ },
+});
+
+const showModal = ref(false);
+const pendingHref = ref(null);
+
+function onClick(e) {
+ const link = e.target.closest('a[href]');
+ if (!link || link.target === '_blank') {
+ return;
+ }
+
+ const href = link.href;
+
+ if (props.hasUnsavedChanges) {
+ e.preventDefault();
+ pendingHref.value = href;
+ showModal.value = true;
+ }
+}
+
+function confirmLeave() {
+ window.removeEventListener('beforeunload', onBeforeUnload);
+ showModal.value = false;
+ window.location.href = pendingHref.value;
+}
+
+function cancelLeave() {
+ showModal.value = false;
+ pendingHref.value = null;
+}
+
+function onBeforeUnload(e) {
+ if (props.hasUnsavedChanges) {
+ e.preventDefault();
+ e.returnValue = '';
+ return '';
+ }
+}
+async function saveAndLeave() {
+ if (typeof props.onSave === 'function') {
+ try {
+ await props.onSave();
+ window.removeEventListener('beforeunload', onBeforeUnload);
+ window.location.href = pendingHref.value;
+ } catch (e) {
+ console.error('Speichern fehlgeschlagen:', e);
+ }
+ }
+}
+
+onMounted(() => {
+ document.addEventListener('click', onClick);
+ window.addEventListener('beforeunload', onBeforeUnload);
+});
+
+onUnmounted(() => {
+ document.removeEventListener('click', onClick);
+ window.removeEventListener('beforeunload', onBeforeUnload);
+});
+</script>
diff --git a/resources/vue/components/StudipSquareButton.vue b/resources/vue/components/StudipSquareButton.vue
index 42434dd..e1bcb66 100644
--- a/resources/vue/components/StudipSquareButton.vue
+++ b/resources/vue/components/StudipSquareButton.vue
@@ -23,33 +23,4 @@ export default {
},
},
};
-</script>
-<style scoped lang="scss">
-$size: 130px;
-.square-button {
- display: flex;
- flex-direction: column;
- justify-content: flex-start;
- max-height: $size;
- max-width: $size;
- min-width: $size;
- min-height: $size;
- margin: 10px;
- padding: 10px;
- background-color: transparent;
- border: solid thin var(--content-color-40);
- cursor: pointer;
-
- img {
- height: 50px;
- margin: 0 auto 8px auto;
- }
- span {
- color: var(--base-color);
- min-width: 110px;
- }
- &:hover span {
- color: var(--red);
- }
-}
-</style>
+</script> \ No newline at end of file
diff --git a/resources/vue/components/avatar/AvatarApp.vue b/resources/vue/components/avatar/AvatarApp.vue
index 1067e42..cf86ef4 100644
--- a/resources/vue/components/avatar/AvatarApp.vue
+++ b/resources/vue/components/avatar/AvatarApp.vue
@@ -370,13 +370,6 @@ export default {
height: 500px;
margin-bottom: 1em;
}
-.square-button-panel {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- width: 100%;
- justify-content: center;
-}
.cropper-actions-wrapper {
max-width: 500px;
diff --git a/resources/vue/components/colorPicker/ColorPicker.vue b/resources/vue/components/colorPicker/ColorPicker.vue
new file mode 100644
index 0000000..3da8ed6
--- /dev/null
+++ b/resources/vue/components/colorPicker/ColorPicker.vue
@@ -0,0 +1,92 @@
+<template>
+ <div class="studip-color-picker" ref="wrapper">
+ <span v-if="withColor" class="studip-color-picker-value" :style="{ backgroundColor: selectedColor }"></span>
+ <button class="button btn-icon--only" @click="togglePicker" :disabled="disabled">
+ <StudipIcon shape="group4" />
+ </button>
+
+ <div v-if="isOpen" class="color-picker-popup">
+ <div class="tabs">
+ <button :class="{ active: tab === 'palette' }" @click="tab = 'palette'">
+ {{ $gettext('Palette') }}
+ </button>
+ <button :class="{ active: tab === 'spectrum' }" @click="tab = 'spectrum'">
+ {{ $gettext('Spektrum') }}
+ </button>
+ </div>
+
+ <div v-show="tab === 'palette'" class="palette-grid">
+ <button
+ v-for="color in colors"
+ :key="color"
+ class="color-swatch"
+ :class="{ selected: selectedColor === color, inverted: color === '#ffffff' }"
+ :style="{ backgroundColor: color }"
+ :aria-label="color"
+ @click="selectedColor = color"
+ @dblclick="selectedColor = color; confirmSelection()"
+ />
+ </div>
+
+ <div v-show="tab === 'spectrum'" class="spectrum">
+ <ChromePicker v-model="selectedColor" :formats="['hex', 'rgb', 'hsl']" :disableAlpha="true" />
+ </div>
+
+ <div class="actions">
+ <button class="button" @click="confirmSelection">{{ $gettext('Wählen') }}</button>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script setup>
+import { ref, watch, onMounted, onBeforeUnmount } from 'vue';
+import 'vue-color/style.css';
+import { ChromePicker } from 'vue-color';
+import colors from './colorPalette';
+import StudipIcon from '../StudipIcon.vue';
+
+const props = defineProps({
+ modelValue: { type: String, required: true },
+ disabled: { type: Boolean, default: false },
+ withColor: { type: Boolean, default: false },
+});
+const emit = defineEmits(['update:modelValue']);
+
+const wrapper = ref(null);
+const isOpen = ref(false);
+const tab = ref('palette');
+
+const selectedColor = ref(props.modelValue);
+
+watch(
+ () => props.modelValue,
+ (val) => {
+ if (val !== selectedColor.value) {
+ selectedColor.value = val;
+ }
+ }
+);
+
+const confirmSelection = () => {
+ emit('update:modelValue', selectedColor.value);
+ isOpen.value = false;
+};
+
+const togglePicker = () => {
+ isOpen.value = !isOpen.value;
+};
+
+const handleClickOutside = (event) => {
+ if (wrapper.value && !wrapper.value.contains(event.target)) {
+ isOpen.value = false;
+ }
+};
+
+onMounted(() => document.addEventListener('click', handleClickOutside));
+onBeforeUnmount(() => document.removeEventListener('click', handleClickOutside));
+</script>
+
+<style lang="scss">
+@import '../../../assets/stylesheets/scss/colorpicker.scss';
+</style>
diff --git a/resources/vue/components/colorPicker/colorPalette.ts b/resources/vue/components/colorPicker/colorPalette.ts
new file mode 100644
index 0000000..f6a4239
--- /dev/null
+++ b/resources/vue/components/colorPicker/colorPalette.ts
@@ -0,0 +1,13 @@
+export default [
+ '#28497c', '#536d96', '#7e92b0', '#a9b6cb', '#d4dbe5',
+ '#682c8b', '#8656a2', '#a480b9', '#c2aad0', '#e0d4e7',
+ '#af2d7b', '#bf5796', '#cf81b0', '#dfabca', '#efd5e4',
+ '#d60000', '#de3333', '#e76666', '#ef9999', '#f7cccc',
+ '#f26e00', '#f58b33', '#f7a866', '#fac599', '#fce2cc',
+ '#ffbd33', '#ffca5c', '#ffd785', '#ffe4ad', '#fff2d6',
+ '#6ead10', '#8bbd40', '#a8ce70', '#c5dea0', '#e2efcf',
+ '#008512', '#339d41', '#66b570', '#99cea0', '#cce6cf',
+ '#129c94', '#41afaa', '#70c3bf', '#a0d7d4', '#cfebe9',
+ '#a85d45', '#b97d6a', '#ca9e8f', '#dcbeb4', '#edded9',
+ '#000000', '#101010', '#676767', '#d8d8d8', '#ffffff',
+]; \ No newline at end of file
diff --git a/resources/vue/components/courseware/blocks/CoursewareCanvasBlock.vue b/resources/vue/components/courseware/blocks/CoursewareCanvasBlock.vue
index ae460bb..e5fb23c 100644
--- a/resources/vue/components/courseware/blocks/CoursewareCanvasBlock.vue
+++ b/resources/vue/components/courseware/blocks/CoursewareCanvasBlock.vue
@@ -69,7 +69,6 @@
:title="$gettext('Textwerkzeug')"
@click="setTool('text')"
>
- T
</button>
</div>
</div>
diff --git a/resources/vue/components/courseware/blocks/CoursewareHeadlineBlock.vue b/resources/vue/components/courseware/blocks/CoursewareHeadlineBlock.vue
index 8f6be0e..bfce0d4 100644
--- a/resources/vue/components/courseware/blocks/CoursewareHeadlineBlock.vue
+++ b/resources/vue/components/courseware/blocks/CoursewareHeadlineBlock.vue
@@ -15,16 +15,24 @@
:class="[currentStyle, currentHeight, hasGradient ? currentGradient : '']"
:style="headlineStyle"
>
- <div class="cw-block-headline-iconbox" :class="['border-' + currentIconColor, currentHeight]">
+ <div
+ class="cw-block-headline-iconbox"
+ :class="[currentHeight]"
+ :style="{ '--cw-headline-border-color': currentTextColor }"
+ >
<div
class="icon-layer"
- :class="['icon-' + currentIconColor + '-' + currentIcon, currentHeight]"
+ :class="['icon-name-' + currentIcon, currentHeight]"
+ :style="textStyle"
></div>
</div>
<div
class="cw-block-headline-textbox"
- :class="['border-' + currentIconColor, currentHeight]"
- :style="currentStyle === 'ribbon' ? headlineTextboxStyle.rgba : {}"
+ :class="[currentHeight]"
+ :style="{
+ ...(currentStyle === 'ribbon' ? headlineTextboxStyle.rgba : {}),
+ '--cw-headline-border-color': currentTextColor,
+ }"
>
<div
class="cw-block-headline-title"
@@ -173,39 +181,6 @@
</template>
</studip-select>
</label>
- <label>
- {{ $gettext('Icon-Farbe') }}
- <studip-select
- :options="iconColors"
- label="name"
- :reduce="(iconColor) => iconColor.class"
- :clearable="false"
- v-model="currentIconColor"
- >
- <template #open-indicator="{ selectAttributes }">
- <span v-bind="selectAttributes"
- ><studip-icon shape="arr_1down" :size="10"
- /></span>
- </template>
- <template #no-options>
- {{ $gettext('Es steht keine Auswahl zur Verfügung.') }}
- </template>
- <template #selected-option="option">
- <span
- class="vs__option-color"
- :style="{ 'background-color': option.hex }"
- ></span
- ><span>{{ option.name }}</span>
- </template>
- <template #option="option">
- <span
- class="vs__option-color"
- :style="{ 'background-color': option.hex }"
- ></span
- ><span>{{ option.name }}</span>
- </template>
- </studip-select>
- </label>
</template>
</form>
</courseware-tab>
@@ -360,7 +335,6 @@ export default {
currentTextColor: '',
currentTextBackgroundColor: '',
currentIcon: '',
- currentIconColor: '',
currentBackgroundType: '',
currentBackgroundImageId: '',
currentBackgroundImageType: '',
@@ -409,9 +383,6 @@ export default {
icon() {
return this.block?.attributes?.payload?.icon;
},
- iconColor() {
- return this.block?.attributes?.payload?.icon_color;
- },
backgroundImageId() {
return this.block?.attributes?.payload?.background_image_id;
},
@@ -433,9 +404,6 @@ export default {
colors() {
return this.mixinColors;
},
- iconColors() {
- return this.mixinColors.filter((color) => color.icon && color.class !== 'studip-lightblue');
- },
textStyle() {
let style = {};
style.color = this.currentTextColor;
@@ -508,7 +476,6 @@ export default {
this.currentTextColor = this.textColor;
this.currentTextBackgroundColor = this.textBackgroundColor;
this.currentIcon = this.icon;
- this.currentIconColor = this.iconColor;
this.currentBackgroundType = this.backgroundType;
this.currentBackgroundImageId = this.backgroundImageId;
this.currentBackgroundImageType = this.backgroundImageType ?? 'file-refs';
@@ -579,7 +546,6 @@ export default {
attributes.payload.text_color = this.currentTextColor;
attributes.payload.text_background_color = this.currentTextBackgroundColor;
attributes.payload.icon = this.currentIcon;
- attributes.payload.icon_color = this.currentIconColor;
attributes.payload.background_type = this.currentBackgroundType;
attributes.payload.background_color = '';
attributes.payload.gradient = '';
@@ -603,45 +569,6 @@ export default {
containerId: this.block.relationships.container.data.id,
});
},
- calcComplement(color) {
- const RGB = this.calcRGB(color);
-
- return '#' + this.compToHex(255 - RGB.r) + this.compToHex(255 - RGB.g) + this.compToHex(255 - RGB.b);
- },
- calcIconColor(color) {
- const RGB = this.calcRGB(color);
-
- return (RGB.r + RGB.g + RGB.b) / 3 > 129 ? 'black' : 'white';
- },
- calcRGB(color) {
- color = color.slice(1); // remove #
- let val = parseInt(color, 16);
- let r = val >> 16;
- let g = (val >> 8) & 0x00ff;
- let b = val & 0x0000ff;
-
- if (g > 255) {
- g = 255;
- } else if (g < 0) {
- g = 0;
- }
- if (b > 255) {
- b = 255;
- } else if (b < 0) {
- b = 0;
- }
-
- return { r: r, g: g, b: b };
- },
- compToHex(comp) {
- let hex = comp.toString(16);
- return hex.length === 1 ? '0' + hex : hex;
- },
- hexToRgbA(hex, a) {
- const RGB = this.calcRGB(hex);
-
- return 'rgba(' + RGB.r + ',' + RGB.g + ',' + RGB.b + ',' + a + ')';
- },
onSelectStockImage(stockImage) {
this.updateCurrentBackgroundImage({
id: stockImage.id,
diff --git a/resources/vue/components/courseware/blocks/CoursewareKeyPointBlock.vue b/resources/vue/components/courseware/blocks/CoursewareKeyPointBlock.vue
index 642de56..1c0e9ce 100644
--- a/resources/vue/components/courseware/blocks/CoursewareKeyPointBlock.vue
+++ b/resources/vue/components/courseware/blocks/CoursewareKeyPointBlock.vue
@@ -10,11 +10,11 @@
@closeEdit="initCurrentData"
>
<template #content>
- <div class="cw-keypoint-content" :class="['cw-keypoint-' + currentColor]">
- <div class="cw-keypoint-icon-wrapper">
- <StudipIcon v-if="currentIcon" :size="48" :shape="currentIcon" role="info" class="cw-keypoint-icon" />
+ <div class="cw-keypoint-content">
+ <div class="cw-keypoint-icon-wrapper" :style="{ borderColor: currentHexColor }">
+ <StudipIcon v-if="currentIcon" :size="48" :shape="currentIcon" role="info" class="cw-keypoint-icon" :style="{ color: currentHexColor }"/>
</div>
- <p class="cw-keypoint-sentence">{{ currentText }}</p>
+ <p class="cw-keypoint-sentence" :style="{ backgroundColor: getRgbaFromHex(currentHexColor, 0.2) }">{{ currentText }}</p>
</div>
</template>
<template v-if="canEdit" #edit>
@@ -36,7 +36,7 @@
:options="colors"
label="name"
:clearable="false"
- :reduce="(option) => option.icon"
+ :reduce="(option) => option.class"
v-model="currentColor"
>
<template #open-indicator="{ selectAttributes }">
@@ -160,6 +160,9 @@ export default {
return 'clickable';
}
},
+ currentHexColor() {
+ return this.colors.find((color) => color.class === this.currentColor)?.hex ?? '#000000';
+ },
},
methods: {
...mapActions({
diff --git a/resources/vue/components/courseware/structural-element/CoursewareRootContent.vue b/resources/vue/components/courseware/structural-element/CoursewareRootContent.vue
index bc68338..0f9befc 100644
--- a/resources/vue/components/courseware/structural-element/CoursewareRootContent.vue
+++ b/resources/vue/components/courseware/structural-element/CoursewareRootContent.vue
@@ -223,7 +223,7 @@ export default {
}
h1,
p {
- color: #fff;
+ color: var(--color--font-inverted);
margin-right: 2em;
}
}
diff --git a/resources/vue/components/courseware/structural-element/CoursewareStructuralElement.vue b/resources/vue/components/courseware/structural-element/CoursewareStructuralElement.vue
index 560ecba..f3cc2ea 100644
--- a/resources/vue/components/courseware/structural-element/CoursewareStructuralElement.vue
+++ b/resources/vue/components/courseware/structural-element/CoursewareStructuralElement.vue
@@ -15,7 +15,7 @@
</router-link>
<div
v-else
- class="cw-ribbon-button cw-ribbon-button-prev-disabled"
+ class="cw-ribbon-button cw-ribbon-button-prev disabled"
:title="$gettext('Keine vorherige Seite')"
/>
<router-link v-if="nextElement" :to="'/structural_element/' + nextElement.id">
@@ -23,7 +23,7 @@
</router-link>
<div
v-else
- class="cw-ribbon-button cw-ribbon-button-next-disabled"
+ class="cw-ribbon-button cw-ribbon-button-next disabled"
:title="$gettext('Keine nächste Seite')"
/>
</template>
@@ -52,6 +52,7 @@
v-if="complete"
shape="accept"
role="info"
+ :inline="true"
:title="$gettext('Diese Seite wurde von Ihnen vollständig bearbeitet')"
/>
<span
@@ -98,6 +99,7 @@
:items="menuItems"
class="cw-ribbon-action-menu"
:context="structuralElement.attributes.title"
+ :collapseAt="1"
@editCurrentElement="menuAction('editCurrentElement')"
@addElement="menuAction('addElement')"
@exportElement="menuAction('exportElement')"
diff --git a/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogAddChooser.vue b/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogAddChooser.vue
index 35a8c7e..af295ed 100644
--- a/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogAddChooser.vue
+++ b/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogAddChooser.vue
@@ -80,13 +80,4 @@ export default {
},
},
};
-</script>
-<style scoped lang="scss">
-.square-button-panel {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- width: 100%;
- justify-content: center;
-}
-</style>
+</script> \ No newline at end of file
diff --git a/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogExportChooser.vue b/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogExportChooser.vue
index c10fcb6..181a87a 100644
--- a/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogExportChooser.vue
+++ b/resources/vue/components/courseware/structural-element/CoursewareStructuralElementDialogExportChooser.vue
@@ -107,13 +107,4 @@ export default {
},
},
};
-</script>
-<style scoped lang="scss">
-.square-button-panel {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- width: 100%;
- justify-content: center;
-}
-</style>
+</script> \ No newline at end of file
diff --git a/resources/vue/components/courseware/structural-element/CoursewareToolsContents.vue b/resources/vue/components/courseware/structural-element/CoursewareToolsContents.vue
index 432695e..cd236b7 100644
--- a/resources/vue/components/courseware/structural-element/CoursewareToolsContents.vue
+++ b/resources/vue/components/courseware/structural-element/CoursewareToolsContents.vue
@@ -96,7 +96,7 @@ export default {
background-size: 100% auto;
background-repeat: no-repeat;
background-position: center;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
}
.cw-tools-contents-header-details {
@@ -113,7 +113,7 @@ export default {
}
p {
margin: 0;
- color: var(--black);
+ color: var(--color--font-primary);
}
}
}
@@ -121,7 +121,7 @@ export default {
.root-is-current {
.cw-tools-contents-header-details {
header {
- color: var(--black);
+ color: var(--color--font-primary);
font-weight: 600;
}
}
@@ -129,7 +129,7 @@ export default {
.root-is-hidden {
.cw-tools-contents-header-details {
header {
- color: var(--black);
+ color: var(--color--font-primary);
}
}
}
diff --git a/resources/vue/components/courseware/structural-element/CoursewareToolsUnitsItem.vue b/resources/vue/components/courseware/structural-element/CoursewareToolsUnitsItem.vue
index d577262..f8e7678 100644
--- a/resources/vue/components/courseware/structural-element/CoursewareToolsUnitsItem.vue
+++ b/resources/vue/components/courseware/structural-element/CoursewareToolsUnitsItem.vue
@@ -78,7 +78,7 @@ export default {
background-size: 100% auto;
background-repeat: no-repeat;
background-position: center;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
}
.cw-tools-units-item-header-details {
@@ -99,7 +99,7 @@ export default {
}
p {
margin: 0;
- color: var(--black);
+ color: var(--color--font-primary);
}
}
}
diff --git a/resources/vue/components/courseware/structural-element/CoursewareTreeItemAdder.vue b/resources/vue/components/courseware/structural-element/CoursewareTreeItemAdder.vue
index fc9ca44..1bd4c6f 100644
--- a/resources/vue/components/courseware/structural-element/CoursewareTreeItemAdder.vue
+++ b/resources/vue/components/courseware/structural-element/CoursewareTreeItemAdder.vue
@@ -101,20 +101,3 @@ export default {
},
};
</script>
-
-<style scoped lang="scss">
-.cw-tree-root-list > .cw-tree-item.cw-tree-item-adder > .cw-tree-item-wrapper {
- border-bottom: none;
-}
-.cw-tree-item-adder {
- .add-element {
- border: none;
- cursor: pointer;
- background-color: transparent;
- height: 28px;
- img {
- vertical-align: middle;
- }
- }
-}
-</style>
diff --git a/resources/vue/components/courseware/tasks/CoursewareDashboardTasks.vue b/resources/vue/components/courseware/tasks/CoursewareDashboardTasks.vue
index 09227a9..ce9ae48 100644
--- a/resources/vue/components/courseware/tasks/CoursewareDashboardTasks.vue
+++ b/resources/vue/components/courseware/tasks/CoursewareDashboardTasks.vue
@@ -11,10 +11,4 @@ import ProcessesList from './peer-review/ProcessesList.vue';
export default {
components: { ProcessesList, TasksList },
};
-</script>
-
-<style scoped>
-.courseware-dashboard-tasks > * + * {
- margin-block-start: 2rem;
-}
-</style>
+</script> \ No newline at end of file
diff --git a/resources/vue/components/courseware/tasks/TaskGroup.vue b/resources/vue/components/courseware/tasks/TaskGroup.vue
index a10a884..9b74eb3 100644
--- a/resources/vue/components/courseware/tasks/TaskGroup.vue
+++ b/resources/vue/components/courseware/tasks/TaskGroup.vue
@@ -67,9 +67,3 @@ export default {
},
};
</script>
-
-<style scoped>
-.cw-task-group-peer-review-processes {
- margin-block-start: 3rem;
-}
-</style>
diff --git a/resources/vue/components/courseware/tasks/TaskGroupTaskItem.vue b/resources/vue/components/courseware/tasks/TaskGroupTaskItem.vue
index eed19cc..31e8efb 100644
--- a/resources/vue/components/courseware/tasks/TaskGroupTaskItem.vue
+++ b/resources/vue/components/courseware/tasks/TaskGroupTaskItem.vue
@@ -11,7 +11,7 @@
<span class="sr-only">{{ status.description }}</span>
</td>
<td>
- <span v-if="user">
+ <span v-if="user" class="cw-taskgroup-task-item-solver-info">
<studip-icon shape="person2" role="info" aria-hidden="true" :title="$gettext('Teilnehmende Person')" />
<span class="sr-only">{{ $gettext('Teilnehmende Person') }}</span>
{{ user.attributes['formatted-name'] }}
diff --git a/resources/vue/components/courseware/toolbar/CoursewareContainerAdderItem.vue b/resources/vue/components/courseware/toolbar/CoursewareContainerAdderItem.vue
index 950c42f..d18894b 100644
--- a/resources/vue/components/courseware/toolbar/CoursewareContainerAdderItem.vue
+++ b/resources/vue/components/courseware/toolbar/CoursewareContainerAdderItem.vue
@@ -2,12 +2,14 @@
<div class="cw-containeradder-item-wrapper">
<span class="cw-sortable-handle cw-sortable-handle-containeradder"></span>
<button class="cw-containeradder-item" :class="['cw-containeradder-item-' + type]" @click.prevent="addNewContainer">
- <header class="cw-containeradder-item-title">
- {{ title }}
- </header>
- <p class="cw-containeradder-item-description">
- {{ description }}
- </p>
+ <div class="cw-containeradder-item-content">
+ <header class="cw-containeradder-item-title">
+ {{ title }}
+ </header>
+ <p class="cw-containeradder-item-description">
+ {{ description }}
+ </p>
+ </div>
</button>
</div>
</template>
diff --git a/resources/vue/components/courseware/toolbar/CoursewareToolbarBlocks.vue b/resources/vue/components/courseware/toolbar/CoursewareToolbarBlocks.vue
index ab42e4b..30531aa 100644
--- a/resources/vue/components/courseware/toolbar/CoursewareToolbarBlocks.vue
+++ b/resources/vue/components/courseware/toolbar/CoursewareToolbarBlocks.vue
@@ -23,7 +23,7 @@
</button>
<button
type="submit"
- class="button seach-button"
+ class="button search-button"
:title="$gettext('Suche starten')"
@click="loadSearch"
>
diff --git a/resources/vue/components/courseware/unit/CoursewareShelfDialogAddChooser.vue b/resources/vue/components/courseware/unit/CoursewareShelfDialogAddChooser.vue
index 8e03ffd..b882e28 100644
--- a/resources/vue/components/courseware/unit/CoursewareShelfDialogAddChooser.vue
+++ b/resources/vue/components/courseware/unit/CoursewareShelfDialogAddChooser.vue
@@ -79,13 +79,4 @@ export default {
},
},
};
-</script>
-<style scoped lang="scss">
-.square-button-panel {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- width: 100%;
- justify-content: center;
-}
-</style>
+</script> \ No newline at end of file
diff --git a/resources/vue/components/courseware/widgets/CoursewareExportWidget.vue b/resources/vue/components/courseware/widgets/CoursewareExportWidget.vue
deleted file mode 100644
index b31ee20..0000000
--- a/resources/vue/components/courseware/widgets/CoursewareExportWidget.vue
+++ /dev/null
@@ -1,95 +0,0 @@
-<template>
- <sidebar-widget :title="$gettext('Export')" v-if="structuralElement">
- <template #content>
- <ul class="widget-list widget-links cw-export-widget" v-if="structuralElement">
- <li v-if="showExportArchiv" class="cw-export-widget-export">
- <button @click="exportElement">
- {{ $gettext('Seiten exportieren') }}
- </button>
- </li>
- <li v-if="showExportPdf" class="cw-export-widget-export-pdf">
- <button @click="pdfElement">
- {{ $gettext('PDF-Dokument erstellen') }}
- </button>
- </li>
- <li v-if="showOer" class="cw-export-widget-oer">
- <button @click="oerElement">
- {{ $gettext('Auf OER Campus veröffentlichen') }}
- </button>
- </li>
- <li v-if="!showExportArchiv && !showExportPdf && !showOer">
- {{ $gettext('Keine Exportoptionen verfügbar') }}
- </li>
- </ul>
- </template>
- </sidebar-widget>
-</template>
-
-<script>
-import SidebarWidget from '../../SidebarWidget.vue';
-import CoursewareExport from '@/vue/mixins/courseware/export.js';
-import { mapActions, mapGetters } from 'vuex';
-
-export default {
- name: 'courseware-export-widget',
- props: ['structuralElement', 'canVisit'],
- components: {
- SidebarWidget
- },
- mixins: [CoursewareExport],
- computed: {
- ...mapGetters({
- context: 'context',
- oerCampusEnabled: 'oerCampusEnabled',
- userIsTeacher: 'userIsTeacher',
- }),
- canEdit() {
- if (!this.structuralElement) {
- return false;
- }
- return this.structuralElement.attributes['can-edit'];
- },
- showExportArchiv() {
- if (this.context.type === 'users') {
- return true;
- }
-
- return this.canEdit;
- },
- showExportPdf() {
- if (this.context.type === 'users') {
- return true;
- }
-
- return this.canVisit;
- },
- showOer() {
- if (!this.oerCampusEnabled) {
- return false;
- }
-
- if (this.context.type === 'users') {
- return true;
- }
-
- return this.userIsTeacher && this.canVisit;
- }
- },
- methods: {
- ...mapActions({
- showElementExportDialog: 'showElementExportDialog',
- showElementPdfExportDialog: 'showElementPdfExportDialog',
- showElementOerDialog: 'showElementOerDialog',
- }),
- exportElement() {
- this.showElementExportDialog(true);
- },
- pdfElement() {
- this.showElementPdfExportDialog(true);
- },
- oerElement() {
- this.showElementOerDialog(true);
- }
- },
-};
-</script>
diff --git a/resources/vue/components/courseware/widgets/CoursewareImportWidget.vue b/resources/vue/components/courseware/widgets/CoursewareImportWidget.vue
deleted file mode 100644
index c0bfd5b..0000000
--- a/resources/vue/components/courseware/widgets/CoursewareImportWidget.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<template>
- <sidebar-widget :title="$gettext('Import')">
- <template #content>
- <ul class="widget-list widget-links cw-import-widget">
- <li class="cw-import-widget-archive">
- <button @click="importElements">
- {{ $gettext('Seiten importieren') }}
- </button>
- </li>
- <li class="cw-import-widget-copy">
- <button @click="copyElements">
- {{ $gettext('Seiten kopieren') }}
- </button>
- </li>
- <li v-if="inCourseContext && userIsTeacher" class="cw-action-widget-link">
- <button @click="linkElement">
- {{ $gettext('Seiten verknüpfen') }}
- </button>
- </li>
- </ul>
- </template>
- </sidebar-widget>
-</template>
-
-<script>
-import SidebarWidget from '../../SidebarWidget.vue';
-import { mapActions, mapGetters } from 'vuex';
-
-export default {
- name: 'courseware-import-widget',
- components: {
- SidebarWidget,
- },
- computed: {
- ...mapGetters({
- context: 'context',
- userIsTeacher: 'userIsTeacher',
- }),
- inCourseContext() {
- return this.context.type === 'courses';
- }
- },
- methods: {
- ...mapActions({
- showElementImportDialog: 'showElementImportDialog',
- showElementCopyDialog: 'showElementCopyDialog',
- showElementLinkDialog: 'showElementLinkDialog',
- }),
- importElements() {
- this.showElementImportDialog(true);
- },
- copyElements() {
- this.showElementCopyDialog(true);
- },
- linkElement() {
- this.showElementLinkDialog(true);
- },
- },
-}
-</script> \ No newline at end of file
diff --git a/resources/vue/components/courseware/widgets/CoursewareTasksActionWidget.vue b/resources/vue/components/courseware/widgets/CoursewareTasksActionWidget.vue
index 3ba8865..d4efd99 100644
--- a/resources/vue/components/courseware/widgets/CoursewareTasksActionWidget.vue
+++ b/resources/vue/components/courseware/widgets/CoursewareTasksActionWidget.vue
@@ -3,17 +3,17 @@
<template #content>
<ul class="widget-list widget-links cw-action-widget">
<template v-if="taskGroup">
- <li v-if="isBeforeEndDate" class="cw-action-widget-task-groups-deadline">
+ <li v-if="isBeforeEndDate" class="cw-action-widget-date">
<button @click="modifyDeadline(taskGroup)">
{{ $gettext('Bearbeitungszeit verlängern') }}
</button>
</li>
- <li v-if="isBeforeEndDate" class="cw-action-widget-task-groups-add-solvers">
+ <li v-if="isBeforeEndDate" class="cw-action-widget-add">
<button @click="addSolvers(taskGroup)">
{{ $gettext('Teilnehmende hinzufügen') }}
</button>
</li>
- <li class="cw-action-widget-task-groups-delete">
+ <li class="cw-action-widget-delete">
<button @click="deleteTaskGroup(taskGroup)">
{{ $gettext('Aufgabe löschen') }}
</button>
@@ -24,7 +24,7 @@
{{ $gettext('Aufgabe verteilen') }}
</button>
</li>
- <li v-if="taskGroup && !hasPeerReviewProcesses" class="cw-action-widget-add">
+ <li v-if="taskGroup && !hasPeerReviewProcesses" class="cw-action-widget-play">
<button @click="$emit('add-peer-review-process')">
{{ $gettext('Peer-Review-Verfahren aktivieren') }}
</button>
@@ -60,19 +60,4 @@ export default {
}),
},
};
-</script>
-
-<style scoped>
-.cw-action-widget-task-groups-add-solvers {
- background-image: url('../images/icons/blue/add.svg');
- background-size: 20px;
-}
-.cw-action-widget-task-groups-deadline {
- background-image: url('../images/icons/blue/date.svg');
- background-size: 20px;
-}
-.cw-action-widget-task-groups-delete {
- background-image: url('../images/icons/blue/trash.svg');
- background-size: 20px;
-}
-</style>
+</script> \ No newline at end of file
diff --git a/resources/vue/components/file-chooser/FileChooserBox.vue b/resources/vue/components/file-chooser/FileChooserBox.vue
index ac11cca..a505cf4 100644
--- a/resources/vue/components/file-chooser/FileChooserBox.vue
+++ b/resources/vue/components/file-chooser/FileChooserBox.vue
@@ -187,15 +187,16 @@ export default {
flex-direction: row;
position: sticky;
top: 0;
- background-color: var(--content-color-20);
+ background-color: var(--color--courseware-background-highlight);
padding: 0.5em 1em;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--courseware-border-default);
margin-bottom: 1em;
.file-chooser-breadcrumb {
flex-grow: 1;
}
.toggle-view {
+ color: var(--color--highlight);
width: 20px;
height: 20px;
border: none;
@@ -208,7 +209,7 @@ export default {
flex-direction: column;
justify-content: space-between;
overflow-y: scroll;
- height: calc(100% - 36px);
+ height: calc(100% - 42px);
}
}
.file-chooser-items {
@@ -219,6 +220,7 @@ export default {
.file-chooser-item {
display: flex;
+ align-items: center;
flex-direction: column;
width: 104px;
min-height: 104px;
@@ -228,10 +230,12 @@ export default {
margin: 0 4px 4px 4px;
padding: 4px;
cursor: pointer;
+ color: var(--color--font-primary);
&.selected {
- background-color: var(--activity-color-20);
- border: solid thin var(--base-color);
+ background-color: var(--color--tile-background-active);
+ border: solid thin var(--color--tile-border-focus);
+ color: var(--color--highlight);
font-weight: 700;
}
&.disabled {
diff --git a/resources/vue/components/file-chooser/FileChooserBreadcrumb.vue b/resources/vue/components/file-chooser/FileChooserBreadcrumb.vue
index 1b6e43a..fd2299a 100644
--- a/resources/vue/components/file-chooser/FileChooserBreadcrumb.vue
+++ b/resources/vue/components/file-chooser/FileChooserBreadcrumb.vue
@@ -76,9 +76,9 @@ export default {
margin: 0;
li {
list-style: none;
- a img {
- vertical-align: text-bottom;
- }
+ display: inline-flex;
+ gap: 4px;
+ font-size: var(--icon-size-inline);
span {
padding: 0 4px 0 0;
}
diff --git a/resources/vue/components/file-chooser/FileChooserDialog.vue b/resources/vue/components/file-chooser/FileChooserDialog.vue
index 49bff43..3260adf 100644
--- a/resources/vue/components/file-chooser/FileChooserDialog.vue
+++ b/resources/vue/components/file-chooser/FileChooserDialog.vue
@@ -15,23 +15,31 @@
<div class="file-chooser-content">
<ul class="file-chooser-folder-selector">
<li v-if="courseId && allowCourseFolders" class="file-chooser-tree-item">
- <a
- href="#"
- @click.prevent="setFolder('courses')"
- :class="{ selected: coursesRootFolderSelected }"
- >
- <studip-icon shape="seminar" />
- <span>{{ $gettext('Diese Veranstaltung') }}</span>
- </a>
+ <div class="file-chooser-tree-item-content">
+ <a
+ href="#"
+ @click.prevent="setFolder('courses')"
+ :class="{ selected: coursesRootFolderSelected }"
+ >
+ <studip-icon shape="seminar" />
+ <span>{{ $gettext('Diese Veranstaltung') }}</span>
+ </a>
+ </div>
<ul class="file-chooser-tree file-chooser-tree-first-level">
<file-chooser-tree v-for="child in coursesTree.children" :key="child.id" :folder="child" />
</ul>
</li>
<li v-if="userId && allowUserFolders" class="file-chooser-tree-item">
- <a href="#" @click.prevent="setFolder('users')" :class="{ selected: usersRootFolderSelected }">
- <studip-icon shape="content" />
- <span>{{ $gettext('Arbeitsplatz') }}</span>
- </a>
+ <div class="file-chooser-tree-item-content">
+ <a
+ href="#"
+ @click.prevent="setFolder('users')"
+ :class="{ selected: usersRootFolderSelected }"
+ >
+ <studip-icon shape="content" />
+ <span>{{ $gettext('Arbeitsplatz') }}</span>
+ </a>
+ </div>
<ul class="file-chooser-tree file-chooser-tree-first-level">
<file-chooser-tree v-for="child in usersTree.children" :key="child.id" :folder="child" />
</ul>
@@ -280,7 +288,6 @@ export default {
}
}
-
@media (max-width: 580px) {
.file-chooser-content .file-chooser-folder-selector {
display: none;
@@ -292,5 +299,4 @@ export default {
max-width: 130px;
}
}
-
</style>
diff --git a/resources/vue/components/file-chooser/FileChooserToolbar.vue b/resources/vue/components/file-chooser/FileChooserToolbar.vue
index f86f214..5b81f98 100644
--- a/resources/vue/components/file-chooser/FileChooserToolbar.vue
+++ b/resources/vue/components/file-chooser/FileChooserToolbar.vue
@@ -181,7 +181,7 @@ export default {
display: flex;
flex-direction: row;
flex-wrap: wrap;
- border-top: solid thin var(--content-color-40);
+ border-top: solid thin var(--color--action-menu-divider);
&.with-table {
border: none;
@@ -204,19 +204,16 @@ export default {
input {
flex-grow: 1;
padding: 4px;
- border: solid thin var(--content-color-40);
+ border: solid thin var(--color--input-field-border);
border-radius: 0;
}
button {
- border: solid thin var(--base-color);
+ border: solid thin var(--color--input-field-border);
+ color: var(--color--highlight);
background-color: transparent;
height: 30px;
width: 30px;
cursor: pointer;
-
- img {
- vertical-align: middle;
- }
}
}
}
diff --git a/resources/vue/components/file-chooser/FileChooserTree.vue b/resources/vue/components/file-chooser/FileChooserTree.vue
index b3e2d52..e21ba8e 100644
--- a/resources/vue/components/file-chooser/FileChooserTree.vue
+++ b/resources/vue/components/file-chooser/FileChooserTree.vue
@@ -1,20 +1,22 @@
<template v-if="folderIsReadable">
<li class="file-chooser-tree-item">
- <span class="folder-toggle">
- <a
- v-if="hasSubfolders"
- herf="#"
- @click.prevent="toggleSubfolders"
- :title="unfold ? $gettext('Ordner zuklappen') : $gettext('Ordner aufklappen')"
- >
- <studip-icon :shape="unfold ? 'arr_1down' : 'arr_1right'" />
+ <div class="file-chooser-tree-item-content">
+ <span class="folder-toggle">
+ <a
+ v-if="hasSubfolders"
+ herf="#"
+ @click.prevent="toggleSubfolders"
+ :title="unfold ? $gettext('Ordner zuklappen') : $gettext('Ordner aufklappen')"
+ >
+ <studip-icon :shape="unfold ? 'arr_1down' : 'arr_1right'" />
+ </a>
+ </span>
+ <a href="#" @click.prevent="selectFolder" :class="{ selected: isSelected }">
+ <studip-icon :shape="folderIcon" />
+ <span>{{ folder.attributes.name }}</span>
</a>
- </span>
- <a href="#" @click.prevent="selectFolder" :class="{ selected: isSelected }">
- <studip-icon :shape="folderIcon" />
- <span>{{ folder.attributes.name }}</span>
- </a>
- <ul v-if="unfold" class="file-chooser-tree">
+ </div>
+ <ul v-if="unfold" class="file-chooser-tree file-chooser-tree-item-subfolders">
<li v-for="child in folder.children" :key="child.id" class="file-chooser-tree-item">
<file-chooser-tree :folder="child" />
</li>
@@ -68,31 +70,40 @@ export default {
<style lang="scss">
.file-chooser-tree {
- padding-left: 18px;
+ padding-left: 22px;
&.file-chooser-tree-first-level {
padding-left: 0;
}
}
.file-chooser-tree-item {
list-style: none;
- padding: 2px 0 0 0;
- .folder-toggle {
- width: 16px;
- }
- a.selected {
- font-weight: 700;
- }
- img {
- vertical-align: middle;
- }
- span {
- width: calc(100% - 46px);
- display: inline-block;
- overflow: hidden;
- text-overflow: ellipsis;
- height: 16px;
- white-space: nowrap;
- vertical-align: sub;
+ padding: 2px 0;
+
+ .file-chooser-tree-item-content {
+ display: flex;
+ .folder-toggle {
+ width: 22px;
+ min-width: 22px;
+ }
+ > a {
+ display: inline-flex;
+ gap: 4px;
+ width: calc(100% - 26px);
+ &.selected {
+ font-weight: 700;
+ }
+ }
+ svg {
+ vertical-align: middle;
+ }
+ span {
+ display: inline-block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 20px;
+ white-space: nowrap;
+ vertical-align: sub;
+ }
}
}
</style>
diff --git a/resources/vue/components/my-courses/ColorPicker.vue b/resources/vue/components/my-courses/ColorPicker.vue
index d2354c9..74c379e 100644
--- a/resources/vue/components/my-courses/ColorPicker.vue
+++ b/resources/vue/components/my-courses/ColorPicker.vue
@@ -93,9 +93,12 @@ export default {
}
.color-selected {
- @include mixins.background-icon(accept, info, 32px);
- background-position: center;
- background-repeat: no-repeat;
+ @include mixins.icon(after, accept, $size: 32px);
+ &::after {
+ display: block;
+ margin: auto;
+ height: 100%;
+ }
}
}
</style>
diff --git a/resources/vue/components/responsive/ResponsiveContentBar.vue b/resources/vue/components/responsive/ResponsiveContentBar.vue
index b9a5d3a..7ca11aa 100644
--- a/resources/vue/components/responsive/ResponsiveContentBar.vue
+++ b/resources/vue/components/responsive/ResponsiveContentBar.vue
@@ -179,11 +179,7 @@ export default {
event.preventDefault();
this.toggleSidebar();
})
- const sidebarIcon = document.createElement('img');
- sidebarIcon.src = STUDIP.ASSETS_URL + '/images/icons/blue/sidebar3.svg';
- sidebarIcon.height = 24;
- sidebarIcon.width = 24;
- button.appendChild(sidebarIcon);
+ button.classList.add('btn-icon btn-icon--sidebar-toggle');
return button;
}
diff --git a/resources/vue/components/theme/ThemeAddCopyDialog.vue b/resources/vue/components/theme/ThemeAddCopyDialog.vue
new file mode 100644
index 0000000..3990229
--- /dev/null
+++ b/resources/vue/components/theme/ThemeAddCopyDialog.vue
@@ -0,0 +1,73 @@
+<template>
+ <StudipDialog
+ v-if="displayThemeAddCopyDialog"
+ :title="$gettext('Theme duplizieren')"
+ :closeText="$gettext('Schließen')"
+ closeClass="cancel"
+ :confirmText="$gettext('Duplizieren')"
+ confirmClass="accept"
+ height="240"
+ width="400"
+ @close="closeDialog"
+ @confirm="copyTheme"
+ >
+ <template #dialogContent>
+ <form class="default">
+ <label>
+ {{ $gettext('Theme') }}
+ <StudipSelect
+ v-model="theme"
+ :options="props.themes"
+ :label="$gettext('Theme auswählen')"
+ :clearable="false"
+ >
+ <template #open-indicator="{ selectAttributes }">
+ <span v-bind="selectAttributes"><studip-icon shape="arr_1down" :size="10" /></span>
+ </template>
+ <template #no-options>
+ {{ $gettext('Es steht keine Auswahl zur Verfügung.') }}
+ </template>
+ <template #selected-option="option">
+ <span>{{ option.attributes.name }}</span>
+ </template>
+ <template #option="option">
+ <span>{{ option.attributes.name }}</span>
+ </template>
+ </StudipSelect>
+ </label>
+ </form>
+ </template>
+ </StudipDialog>
+</template>
+<script setup>
+import {computed, getCurrentInstance, ref} from 'vue';
+import StudipDialog from '../StudipDialog.vue';
+import StudipSelect from '../StudipSelect.vue';
+import { useStore } from 'vuex';
+
+const { proxy } = getCurrentInstance();
+
+const store = useStore();
+const props = defineProps({
+ themes: {
+ type: Array,
+ required: true,
+ },
+});
+const theme = ref('');
+
+const displayThemeAddCopyDialog = computed(() => store.getters['theme-settings-module/showThemeAddCopyDialog']);
+const showThemeAddCopyDialog = (show) => {
+ store.dispatch('theme-settings-module/setShowThemeAddCopyDialog', show);
+};
+const closeDialog = () => {
+ showThemeAddCopyDialog(false);
+};
+
+const copyTheme = async () => {
+ const newTheme = theme.value;
+ newTheme.attributes.name = `${newTheme.attributes.name} (${proxy.$gettext('Kopie')})`;
+ await store.dispatch('theme-settings-module/createThemeFromData', { theme: newTheme });
+ closeDialog();
+};
+</script>
diff --git a/resources/vue/components/theme/ThemeAddDialog.vue b/resources/vue/components/theme/ThemeAddDialog.vue
new file mode 100644
index 0000000..9836009
--- /dev/null
+++ b/resources/vue/components/theme/ThemeAddDialog.vue
@@ -0,0 +1,60 @@
+<template>
+ <StudipDialog
+ v-if="displayThemeAddDialog"
+ :title="$gettext('Theme hinzufügen')"
+ :closeText="$gettext('Schließen')"
+ closeClass="cancel"
+ height="320"
+ width="680"
+ @close="showThemeAddDialog(false)"
+ >
+ <template v-slot:dialogContent>
+ <div class="square-button-panel">
+ <StudipSquareButton
+ icon="add"
+ :title="$gettext('Neu erstellen')"
+ @click="showThemeAddNewDialog(true)"
+ />
+ <StudipSquareButton
+ icon="import"
+ :title="$gettext('Aus Datei importieren')"
+ @click="showThemeAddImportDialog(true)"
+ />
+ <StudipSquareButton
+ icon="copy"
+ :title="$gettext('Duplizieren')"
+ @click="showThemeAddCopyDialog(true)"
+ />
+ </div>
+ </template>
+ </StudipDialog>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import StudipDialog from '../StudipDialog.vue';
+import StudipSquareButton from '../StudipSquareButton.vue';
+import { useStore } from 'vuex';
+
+const emit = defineEmits(['add']);
+
+const store = useStore();
+
+const displayThemeAddDialog = computed(() => store.getters['theme-settings-module/showThemeAddDialog']);
+
+const showThemeAddDialog = (show) => {
+ store.dispatch('theme-settings-module/setShowThemeAddDialog', show);
+};
+const showThemeAddNewDialog = () => {
+ store.dispatch('theme-settings-module/setShowThemeAddDialog', false);
+ emit('add');
+};
+const showThemeAddImportDialog = () => {
+ store.dispatch('theme-settings-module/setShowThemeAddDialog', false);
+ store.dispatch('theme-settings-module/setShowThemeAddImportDialog', true);
+};
+const showThemeAddCopyDialog = () => {
+ store.dispatch('theme-settings-module/setShowThemeAddDialog', false);
+ store.dispatch('theme-settings-module/setShowThemeAddCopyDialog', true);
+};
+</script>
diff --git a/resources/vue/components/theme/ThemeAddImportDialog.vue b/resources/vue/components/theme/ThemeAddImportDialog.vue
new file mode 100644
index 0000000..c975612
--- /dev/null
+++ b/resources/vue/components/theme/ThemeAddImportDialog.vue
@@ -0,0 +1,125 @@
+<template>
+ <StudipDialog
+ v-if="displayThemeAddImportDialog"
+ :title="$gettext('Theme importieren')"
+ :closeText="$gettext('Schließen')"
+ :confirmText="$gettext('Importieren')"
+ closeClass="cancel"
+ :confirmDisabled="!hasErrors"
+ confirmClass="upload"
+ height="500"
+ width="400"
+ @close="closeDialog"
+ @confirm="createThemeFromFile"
+ >
+ <template v-slot:dialogContent>
+ <StudipMessageBox v-if="fileError" :type="'error'" :hideClose="true">
+ {{ fileError }}
+ </StudipMessageBox>
+ <div class="theme-upload-actions">
+ <input type="file" ref="fileInput" @change="handleFileUpload" accept=".json" class="visually-hidden" />
+ <div class="file-dropzone-wrapper" @click="triggerFileInput">
+ <div class="file-dropzone" :class="{ 'has-file': fileSelected }">
+ <StudipIcon :shape="fileName ? 'file' : 'upload'" :size="48" />
+ <span>{{
+ fileName ? fileName : $gettext('Theme-Datei auswählen oder via Drag and Drop hinzufügen')
+ }}</span>
+ </div>
+ </div>
+ </div>
+ </template>
+ </StudipDialog>
+</template>
+
+<script setup>
+import { computed, getCurrentInstance, ref } from 'vue';
+import StudipDialog from '../StudipDialog.vue';
+import StudipMessageBox from '../StudipMessageBox.vue';
+import { useStore } from 'vuex';
+
+const { proxy } = getCurrentInstance()
+const store = useStore();
+const displayThemeAddImportDialog = computed(() => store.getters['theme-settings-module/showThemeAddImportDialog']);
+const hasErrors = computed(() => !fileError.value && fileSelected.value && jsonData.value);
+
+const showThemeAddImportDialog = (show) => {
+ store.dispatch('theme-settings-module/setShowThemeAddImportDialog', show);
+};
+const fileInput = ref(null);
+const fileSelected = ref(false);
+const fileName = ref('');
+const jsonData = ref(null);
+const fileError = ref(null);
+
+const triggerFileInput = () => {
+ fileInput.value?.click();
+};
+
+const isValidThemeData = (data) => {
+ if (typeof data !== 'object' || data === null) return false;
+ if (typeof data.name !== 'string' || data.name.trim() === '') return false;
+ if (data.description && typeof data.description !== 'string') return false;
+ if (data.type && !['light', 'dark', 'high-contrast'].includes(data.type)) return false;
+ if (typeof data.values !== 'object' || data.values === null || Array.isArray(data.values)) return false;
+ return true;
+};
+const handleFileUpload = (event) => {
+ fileSelected.value = false;
+ jsonData.value = null;
+ fileError.value = null;
+ fileName.value = '';
+
+ const file = event.target.files[0];
+ if (file && file.type === 'application/json') {
+ fileName.value = file.name;
+ const reader = new FileReader();
+ reader.onload = () => {
+ try {
+ const parsed = JSON.parse(reader.result);
+ if (isValidThemeData(parsed)) {
+ jsonData.value = parsed;
+ fileSelected.value = true;
+ } else {
+ fileError.value = proxy.$gettext('Die JSON-Datei enthält keine gültigen Themendaten.');
+ }
+ } catch {
+ fileError.value = proxy.$gettext('Ungültiges JSON-Format.');
+ }
+ };
+ reader.readAsText(file);
+ } else {
+ fileError.value = proxy.$gettext('Bitte laden Sie eine gültige .json-Datei hoch.');
+ }
+};
+const createThemeFromFile = async () => {
+ if (jsonData.value) {
+ const newTheme = {
+ attributes: {
+ name: jsonData.value.name,
+ description: jsonData.value.description || '',
+ type: jsonData.value.type || 'light',
+ values: jsonData.value.values,
+ },
+ };
+
+ await store.dispatch('theme-settings-module/createThemeFromData', { theme: newTheme });
+ fileSelected.value = false;
+ jsonData.value = null;
+ fileName.value = '';
+ showThemeAddImportDialog(false);
+ }
+};
+
+const closeDialog = () => {
+ removeFile();
+ showThemeAddImportDialog(false);
+};
+
+const removeFile = () => {
+ fileInput.value.value = '';
+ fileSelected.value = false;
+ fileName.value = '';
+ jsonData.value = null;
+ fileError.value = null;
+};
+</script>
diff --git a/resources/vue/components/theme/ThemeDeleteDialog.vue b/resources/vue/components/theme/ThemeDeleteDialog.vue
new file mode 100644
index 0000000..b27b844
--- /dev/null
+++ b/resources/vue/components/theme/ThemeDeleteDialog.vue
@@ -0,0 +1,14 @@
+<template>
+ <StudipDialog
+ title="$gettext('Theme löschen')"
+ :closeText="$gettext('Schließen')"
+ closeClass="cancel"
+ >
+
+
+ </StudipDialog>
+</template>
+
+<script setup>
+defineEmits(['close', 'confirm']);
+</script>
diff --git a/resources/vue/components/theme/ThemeEditor.vue b/resources/vue/components/theme/ThemeEditor.vue
new file mode 100644
index 0000000..b3b4257
--- /dev/null
+++ b/resources/vue/components/theme/ThemeEditor.vue
@@ -0,0 +1,308 @@
+<template>
+ <section class="theme-editor">
+ <ContentBar isContentBar icon="colorpicker">
+ <template #breadcrumb-list>
+ {{ editableName }}
+ </template>
+ <template v-if="hasChanges && !isDisabled" #buttons-right>
+ <button class="button accept" @click="storeChanges">
+ {{ $gettext('Speichern') }}
+ </button>
+ <button class="button cancel" @click="resetColors">
+ {{ $gettext('Zurücksetzen') }}
+ </button>
+ </template>
+ <template #info-text>
+ {{ editableDescription }}
+ </template>
+ <template #menu>
+ <StudipActionMenu
+ :items="menuItems"
+ context="Theme Editor"
+ :collapseAt="1"
+ @deleteTheme="displayDeleteDialog"
+ @exportTheme="exportTheme"
+ />
+ </template>
+ </ContentBar>
+ <div class="theme-editor-header">
+ <form class="default collapsable">
+ <fieldset class="collapsed">
+ <legend>{{ $gettext('Metadaten') }}</legend>
+
+ <label>
+ {{ $gettext('Name') }}
+ <input type="text" v-model="editableName" :disabled="isDisabled" />
+ </label>
+
+ <label>
+ {{ $gettext('Beschreibung') }}
+ <input type="text" v-model="editableDescription" :disabled="isDisabled" />
+ </label>
+ </fieldset>
+ </form>
+ </div>
+
+ <div class="color-group" v-for="(group, groupName) in editableColors" :key="groupName">
+ <h3 class="group-title">{{ getReadableGroupName(groupName) }}</h3>
+ <div class="color-grid">
+ <div v-for="(hex, name) in group" :key="name" class="color-entry">
+ <div class="color-entry-color" :style="{ backgroundColor: editableColors[groupName][name] }"></div>
+ <div class="color-entry-content">
+ <div class="color-entry-text">
+ <p class="color-entry-name">{{ name }}</p>
+ <p class="color-entry-hex">{{ editableColors[groupName][name] }}</p>
+ </div>
+ <div class="color-entry-buttons">
+ <ColorPicker v-model="editableColors[groupName][name]" :disabled="isDisabled" />
+ <button
+ class="button btn-icon--only"
+ @click="deleteColor(groupName, name)"
+ :disabled="isDisabled"
+ >
+ <StudipIcon shape="trash" />
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <form class="default" v-if="Object.keys(editableColors).length > 0 && !isDisabled" @submit.prevent>
+ <fieldset class="color-entry new-color-entry collapsable collapsed" >
+ <legend>{{ $gettext('Benutzerdefinierte Farbe') }}</legend>
+ <label>{{ $gettext('Farbgruppe') }}
+ <input type="text" v-model="newCustomKey" />
+ </label>
+ <label>{{ $gettext('Farbwert') }}
+ <ColorPicker v-model="newCustomValue" :with-color="true"/>
+ </label>
+ <button
+ class="button add"
+ @click.prevent="addCustomColor"
+ :disabled="!newCustomKey || !newCustomValue || keyExists"
+ >
+ {{ $gettext('Hinzufügen') }}
+ </button>
+ <small v-if="keyExists" style="color: red">{{ $gettext('Dieser Key existiert bereits.') }}</small>
+ </fieldset>
+ </form>
+ </section>
+ <StudipDialog
+ v-if="showDeleteDialog"
+ :title="$gettext('Theme löschen')"
+ :question="
+ $gettext(
+ 'Möchten Sie das Theme %{ ThemeTitle } wirklich löschen?',
+ { ThemeTitle: props.theme.attributes.name },
+ true
+ )
+ "
+ height="200"
+ @confirm="executeDelete"
+ @close="showDeleteDialog = false"
+ />
+ <StudipModalLeave :has-unsaved-changes="hasChanges" :on-save="storeChanges" />
+</template>
+
+<script setup>
+import { computed, getCurrentInstance, ref, watch } from 'vue';
+import { useStore } from 'vuex';
+import ColorPicker from '../colorPicker/ColorPicker.vue';
+import StudipIcon from '../StudipIcon.vue';
+import ContentBar from '../ContentBar.vue';
+import StudipActionMenu from '../StudipActionMenu.vue';
+import StudipDialog from '../StudipDialog.vue';
+import StudipModalLeave from '../StudipModalLeave.vue';
+
+const props = defineProps({
+ theme: {
+ type: Object,
+ required: true,
+ },
+});
+const emit = defineEmits(['back']);
+const store = useStore();
+const { proxy } = getCurrentInstance();
+
+const editableColors = ref({});
+const originalColors = ref({});
+const editableName = ref('');
+const originalName = ref('');
+const editingName = ref(false);
+
+const editableType = ref('');
+const originalType = ref('');
+
+const editableDescription = ref('');
+const originalDescription = ref('');
+const editingDescription = ref(false);
+
+const showDeleteDialog = ref(false);
+
+const menuItems = [
+ {
+ id: 1,
+ label: proxy.$gettext('Exportieren'),
+ icon: 'export',
+ emit: 'exportTheme',
+ },
+ {
+ id: 2,
+ label: proxy.$gettext('Löschen'),
+ icon: 'trash',
+ emit: 'deleteTheme',
+ },
+];
+
+const isDisabled = computed(() => props.theme.attributes.origin === 'system');
+
+const hasChanges = computed(() => {
+ if (isDisabled.value) return false;
+
+ return (
+ JSON.stringify(editableColors.value) !== originalColors.value ||
+ editableName.value !== originalName.value ||
+ editableType.value !== originalType.value ||
+ editableDescription.value !== originalDescription.value
+ );
+});
+
+const newCustomKey = ref('');
+const newCustomValue = ref('#000000');
+const keyExists = computed(() => {
+ const key = newCustomKey.value.trim();
+ if (!key) return false;
+
+ return Object.values(editableColors.value).some((group) => key in group);
+});
+
+const addCustomColor = () => {
+ const key = newCustomKey.value.trim();
+ const value = newCustomValue.value;
+
+ if (!key || !value || keyExists.value) return;
+
+ const targetGroup =
+ Object.entries(props.theme.meta.colorKeyCategories || {}).find(([keys]) => key in keys)?.[0] ||
+ 'custom';
+
+ if (!editableColors.value[targetGroup]) {
+ editableColors.value[targetGroup] = {};
+ }
+
+ editableColors.value[targetGroup][key] = value;
+
+ newCustomKey.value = '';
+ newCustomValue.value = '#000000';
+};
+
+const deleteColor = (groupName, key) => {
+ if (isDisabled.value) return;
+
+ if (editableColors.value[groupName]) {
+ delete editableColors.value[groupName][key];
+
+ if (Object.keys(editableColors.value[groupName]).length === 0) {
+ delete editableColors.value[groupName];
+ }
+ }
+};
+
+const resetColors = () => {
+ const themeColors = props.theme.attributes.values || {};
+ const defaultColorKeys = props.theme.meta.colorKeyCategories || {};
+ editableColors.value = {};
+
+ Object.keys(defaultColorKeys).forEach((groupName) => {
+ editableColors.value[groupName] = Object.keys(defaultColorKeys[groupName]).reduce((acc, key) => {
+ acc[key] = themeColors[key] || defaultColorKeys[groupName][key];
+ return acc;
+ }, {});
+ });
+
+ Object.keys(themeColors).forEach((key) => {
+ if (!Object.values(editableColors.value).some((group) => key in group)) {
+ editableColors.value['custom'] = editableColors.value['custom'] || {};
+ editableColors.value['custom'][key] = themeColors[key];
+ }
+ });
+
+ originalColors.value = JSON.stringify(editableColors.value);
+ editableName.value = props.theme.attributes.name;
+ originalName.value = props.theme.attributes.name;
+ editableType.value = props.theme.attributes.type;
+ originalType.value = props.theme.attributes.type;
+ editableDescription.value = props.theme.attributes.description || '';
+ originalDescription.value = props.theme.attributes.description || '';
+ editingName.value = false;
+ editingDescription.value = false;
+};
+
+const storeChanges = async () => {
+ const updatedColors = Object.values(editableColors.value).reduce((acc, group) => {
+ Object.assign(acc, group);
+ return acc;
+ }, {});
+
+ const updatedTheme = {
+ ...props.theme,
+ attributes: {
+ ...props.theme.attributes,
+ values: updatedColors,
+ name: editableName.value,
+ // type: editableType.value,
+ type: 'light', // Temporarily set to 'light' until dark mode is implemented
+ description: editableDescription.value,
+ },
+ };
+
+ await store.dispatch('theme-settings-module/updateTheme', { theme: updatedTheme });
+ resetColors();
+};
+
+const displayDeleteDialog = () => {
+ showDeleteDialog.value = true;
+};
+const executeDelete = () => {
+ if (isDisabled.value) return;
+ const id = props.theme.id;
+ store.dispatch('theme-settings-module/deleteTheme', { id }).then(() => {
+ emit('back');
+ });
+};
+
+const exportTheme = () => {
+ const themeData = {
+ name: props.theme.attributes.name,
+ description: props.theme.attributes.description || '',
+ author: props.theme.attributes.author || '',
+ version: props.theme.attributes.version || '1.0',
+ type: props.theme.attributes.type || 'light',
+ values: props.theme.attributes.values || {},
+ studip_min_version: props.theme.attributes.studip_min_version || '6.1',
+ studip_max_version: props.theme.attributes.studip_max_version || '7.0',
+ };
+
+ const blob = new Blob([JSON.stringify(themeData, null, 2)], { type: 'application/json' });
+ const link = document.createElement('a');
+ link.href = URL.createObjectURL(blob);
+ link.download = `${props.theme.attributes.name || 'theme'}.json`;
+ link.click();
+};
+
+const getReadableGroupName = (groupName) => {
+ const groupNames = {
+ brand: proxy.$gettext('Basisfarbe'),
+ general: proxy.$gettext('Allgemein'),
+ text: proxy.$gettext('Text'),
+ navigation: proxy.$gettext('Navigation'),
+ sidebar: proxy.$gettext('Seitenleiste'),
+ content: proxy.$gettext('Inhalt'),
+ custom: proxy.$gettext('Benutzerdefiniert'),
+ };
+ return groupNames[groupName] || groupName.charAt(0).toUpperCase() + groupName.slice(1);
+};
+
+watch(() => props.theme, resetColors, { immediate: true });
+</script>
diff --git a/resources/vue/components/theme/ThemeExport.vue b/resources/vue/components/theme/ThemeExport.vue
new file mode 100644
index 0000000..18d29e8
--- /dev/null
+++ b/resources/vue/components/theme/ThemeExport.vue
@@ -0,0 +1,44 @@
+<template>
+ <div class="theme-export">
+ <button class="button" @click="exportTheme" :disabled="!theme">
+ {{ $gettext('Exportieren') }}
+ </button>
+ </div>
+ </template>
+
+ <script setup>
+
+ const props = defineProps({
+ theme: {
+ type: Object,
+ required: true,
+ },
+ });
+
+ const exportTheme = () => {
+ const themeData = {
+ name: props.theme.attributes.name,
+ description: props.theme.attributes.description || '',
+ author: props.theme.attributes.author || '',
+ version: props.theme.attributes.version || '1.0',
+ type: props.theme.attributes.type || 'light',
+ values: props.theme.attributes.values || {},
+ studip_min_version: props.theme.attributes.studip_min_version || '6.1',
+ studip_max_version: props.theme.attributes.studip_max_version || '7.0',
+ };
+
+ const blob = new Blob([JSON.stringify(themeData, null, 2)], { type: 'application/json' });
+ const link = document.createElement('a');
+ link.href = URL.createObjectURL(blob);
+ link.download = `${props.theme.attributes.name || 'theme'}.json`;
+ link.click();
+ };
+ </script>
+
+ <style scoped>
+ .theme-export button {
+ padding: 0.5rem 1rem;
+ margin-top: 2rem;
+ }
+ </style>
+ \ No newline at end of file
diff --git a/resources/vue/components/theme/ThemeList.vue b/resources/vue/components/theme/ThemeList.vue
new file mode 100644
index 0000000..7fe58ca
--- /dev/null
+++ b/resources/vue/components/theme/ThemeList.vue
@@ -0,0 +1,91 @@
+<template>
+ <div class="theme-list">
+ <h2>{{ $gettext('Farbeinstellungen') }}</h2>
+ <div class="theme-categories">
+ <div class="theme-category">
+ <ul class="theme-list">
+ <li
+ v-for="theme in filteredThemes('light')"
+ :key="theme.id"
+ :class="{ active: theme.attributes.active }"
+ >
+ <div class="theme-info">
+ <div class="theme-meta">
+ <strong class="theme-name">{{ theme.attributes.name }}</strong>
+ <p class="theme-description">{{ theme.attributes.description }}</p>
+ </div>
+ <div class="theme-colors">
+ <div
+ v-for="color in colorKeys"
+ :key="color"
+ class="theme-color"
+ :title="theme.attributes.values?.[color]"
+ :style="{ backgroundColor: theme.attributes.values?.[color] || 'transparent' }"
+ />
+ </div>
+ </div>
+ <div class="theme-actions">
+ <button class="button" @click="$emit('select', theme)">
+ {{ $gettext('Bearbeiten') }}
+ </button>
+ <button
+ v-if="!theme.attributes.active"
+ class="button"
+ @click="$emit('activate', theme)"
+ >
+ {{ $gettext('Aktivieren') }}
+ </button>
+ </div>
+ </li>
+ <li class="theme-add">
+ <button @click="showThemeAddDialog(true)">
+ <StudipIcon shape="add" :size="24" />
+ {{ $gettext('Neues Theme hinzufügen') }}
+ </button>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <ThemeAddDialog @add="$emit('add')"/>
+ <ThemeAddImportDialog />
+ <ThemeAddCopyDialog :themes="filteredThemes('light')" />
+ </div>
+</template>
+
+<script setup>
+import StudipIcon from '../StudipIcon.vue';
+import ThemeAddDialog from './ThemeAddDialog.vue';
+import ThemeAddImportDialog from './ThemeAddImportDialog.vue';
+import ThemeAddCopyDialog from './ThemeAddCopyDialog.vue';
+import { useStore } from 'vuex';
+
+const props = defineProps({
+ themes: {
+ type: Array,
+ required: true,
+ },
+});
+
+defineEmits(['add', 'select', 'activate']);
+
+const store = useStore();
+
+const colorKeys = [
+ '--color--brand-primary',
+ '--color--main-navigation-item',
+ '--color--sidebar-item',
+ '--color--highlight',
+ '--color--content-link',
+];
+
+const filteredThemes = (type) => {
+ return props.themes
+ .filter((theme) => theme.attributes.type === type)
+ .sort((a, b) => Number(b.attributes.active) - Number(a.attributes.active));
+};
+
+const showThemeAddDialog = (show) => {
+ store.dispatch('theme-settings-module/setShowThemeAddDialog', show);
+};
+
+</script>
diff --git a/resources/vue/mixins/courseware/colors.js b/resources/vue/mixins/courseware/colors.js
index 870ae7c..dffb981 100644
--- a/resources/vue/mixins/courseware/colors.js
+++ b/resources/vue/mixins/courseware/colors.js
@@ -144,6 +144,22 @@ const colorMixin = {
return colors;
}
},
+ methods: {
+ getRgbaFromHex(hex, alpha = 1) {
+ hex = hex.replace(/^#/, '');
+
+ if (hex.length === 3) {
+ hex = hex.split('').map(x => x + x).join('');
+ }
+
+ const r = parseInt(hex.slice(0, 2), 16);
+ const g = parseInt(hex.slice(2, 4), 16);
+ const b = parseInt(hex.slice(4, 6), 16);
+
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
+ }
+
+ }
};
export default colorMixin; \ No newline at end of file
diff --git a/resources/vue/store/theme-settings.module.js b/resources/vue/store/theme-settings.module.js
new file mode 100644
index 0000000..a0ae074
--- /dev/null
+++ b/resources/vue/store/theme-settings.module.js
@@ -0,0 +1,124 @@
+const getDefaultState = () => {
+ return {
+ httpClient: null,
+ userId: null,
+
+ showThemeAddDialog: false,
+ showThemeAddImportDialog: false,
+ showThemeAddCopyDialog: false,
+ };
+};
+
+const initialState = getDefaultState();
+
+const getters = {
+
+ httpClient(state) {
+ return state.httpClient;
+ },
+ userId(state) {
+ return state.userId;
+ },
+ showThemeAddDialog(state) {
+ return state.showThemeAddDialog;
+ },
+ showThemeAddImportDialog(state) {
+ return state.showThemeAddImportDialog;
+ },
+ showThemeAddCopyDialog(state) {
+ return state.showThemeAddCopyDialog;
+ },
+};
+
+export const state = { ...initialState };
+
+
+export const actions = {
+ // setters
+ setHttpClient({ commit }, httpClient) {
+ commit('setHttpClient', httpClient);
+ },
+ setUserId({ commit }, userId) {
+ commit('setUserId', userId);
+ },
+
+ setShowThemeAddDialog({ commit }, show) {
+ commit('setShowThemeAddDialog', show);
+ },
+ setShowThemeAddImportDialog({ commit }, show) {
+ commit('setShowThemeAddImportDialog', show);
+ },
+ setShowThemeAddCopyDialog({ commit }, show) {
+ commit('setShowThemeAddCopyDialog', show);
+ },
+
+ // actions
+ async updateTheme({ dispatch }, { theme }) {
+ await dispatch('studip-themes/update', theme, { root: true });
+
+ return dispatch(
+ 'studip-themes/loadById',
+ { id: theme.id },
+ { root: true }
+ );
+ },
+
+ async activateTheme({ dispatch }, { theme }) {
+ const activeTheme = {
+ id: theme.id,
+ attributes: {
+ active: true,
+ }
+ };
+ await dispatch('studip-themes/update', activeTheme, { root: true });
+
+ return true;
+ },
+
+ async addTheme({ dispatch, rootGetters }) {
+ await dispatch('studip-themes/create', {}, { root: true });
+ const created = rootGetters['studip-themes/lastCreated'];
+
+ await dispatch(
+ 'studip-themes/loadById',
+ { id: created.id },
+ { root: true }
+ );
+
+ return created;
+ },
+
+ createThemeFromData( { dispatch }, { theme }) {
+ dispatch('studip-themes/create', theme, { root: true });
+ },
+
+ deleteTheme({ dispatch }, data) {
+ return dispatch('studip-themes/delete', data, { root: true });
+ },
+}
+export const mutations = {
+ setHttpClient(state, httpClient) {
+ state.httpClient = httpClient;
+ },
+ setUserId(state, data) {
+ state.userId = data;
+ },
+
+ setShowThemeAddDialog(state, show) {
+ state.showThemeAddDialog = show;
+ },
+ setShowThemeAddImportDialog(state, show) {
+ state.showThemeAddImportDialog = show;
+ },
+ setShowThemeAddCopyDialog(state, show) {
+ state.showThemeAddCopyDialog = show;
+ },
+};
+
+export default {
+ namespaced: true,
+ state,
+ actions,
+ mutations,
+ getters,
+};
diff --git a/templates/admin/topLinks.php b/templates/admin/topLinks.php
index 1fc7970..a97ef75 100644
--- a/templates/admin/topLinks.php
+++ b/templates/admin/topLinks.php
@@ -17,23 +17,23 @@
<div style="width: 70%; margin: 10px; margin-left: auto; margin-right: auto;text-align: center;" id="admin_top_links">
<? if (isset($last_one)) : ?>
<div style="float: left;">
- <a href="<?= URLHelper::getLink("?#admin_top_links", ['cid' => $adminList[$last_one]['Seminar_id']]) ?>" title="<?= htmlReady($adminList[$last_one]['Name']) ?>">
- <?= Icon::create('arr_1left')->asImg(['class' => 'text-bottom']) ?>
+ <a href="<?= URLHelper::getLink('?#admin_top_links', ['cid' => $adminList[$last_one]['Seminar_id']]) ?>" title="<?= htmlReady($adminList[$last_one]['Name']) ?>">
+ <?= Icon::create('arr_1left')->asSvg(['class' => 'text-bottom']) ?>
<?= _("zurück") ?>
</a>
</div>
<? endif ?>
<? if (isset($next_one)) : ?>
<div style="float: right;">
- <a href="<?= URLHelper::getLink("?#admin_top_links", ['cid' => $adminList[$next_one]['Seminar_id']]) ?>" title="<?= htmlReady($adminList[$next_one]['Name']) ?>">
+ <a href="<?= URLHelper::getLink('?#admin_top_links', ['cid' => $adminList[$next_one]['Seminar_id']]) ?>" title="<?= htmlReady($adminList[$next_one]['Name']) ?>">
<?= _("vor") ?>
- <?= Icon::create('arr_1right')->asImg(['class' => 'text-bottom']) ?>
+ <?= Icon::create('arr_1right')->asSvg(['class' => 'text-bottom']) ?>
</a>
</div>
<? endif ?>
<div>
- <a href="<?= URLHelper::getLink("adminarea_start.php", ['list' => "TRUE"]) ?>">
- <?= Icon::create('arr_1up')->asImg(['class' => 'text-bottom']) ?>
+ <a href="<?= URLHelper::getLink('adminarea_start.php', ['list' => 'TRUE']) ?>">
+ <?= Icon::create('arr_1up')->asSvg(['class' => 'text-bottom']) ?>
<?= _("Liste") ?>
</a>
</div>
diff --git a/templates/blubber/coursegroup_context.php b/templates/blubber/coursegroup_context.php
index c258ca5..78c4627 100644
--- a/templates/blubber/coursegroup_context.php
+++ b/templates/blubber/coursegroup_context.php
@@ -35,8 +35,8 @@
<? if ($thread->statusgruppe->hasFolder()) : ?>
<? $folder = $thread->statusgruppe->getFolder() ?>
<div>
- <a href="<?= URLHelper::getLink("dispatch.php/course/files/index/".$folder->getId(), ['cid' => $course->getId()]) ?>">
- <?= $folder->getIcon("clickable")->asImg(25, ['class' => "text-bottom"]) ?>
+ <a href="<?= URLHelper::getLink('dispatch.php/course/files/index/'.$folder->getId(), ['cid' => $course->getId()]) ?>">
+ <?= $folder->getIcon('clickable')->asSvg(25, ['class' => 'text-bottom']) ?>
<?= htmlReady($folder->name) ?>
</a>
</div>
diff --git a/templates/blubber/disable-notifications.php b/templates/blubber/disable-notifications.php
index d80fa7a..f7900dd 100644
--- a/templates/blubber/disable-notifications.php
+++ b/templates/blubber/disable-notifications.php
@@ -3,11 +3,11 @@
<a href="#"
onClick="STUDIP.Blubber.followunfollow('<?= htmlReady($thread->id) ?>'); return false;"
class="followunfollow<?= $unfollowed ? " unfollowed" : "" ?>"
- title="<?= _("Benachrichtigungen für diese Konversation abstellen.") ?>"
+ title="<?= _('Benachrichtigungen für diese Konversation abstellen.') ?>"
data-thread_id="<?= htmlReady($thread->id) ?>">
- <?= Icon::create('decline')->asImg(['class' => 'follow text-bottom']) ?>
- <?= Icon::create('notification2')->asImg(['class' => 'unfollow text-bottom']) ?>
- <?= _("Benachrichtigungen aktiviert") ?>
+ <?= Icon::create('decline')->asSvg(['class' => 'follow text-bottom']) ?>
+ <?= Icon::create('notification2')->asSvg(['class' => 'unfollow text-bottom']) ?>
+ <?= _('Benachrichtigungen aktiviert') ?>
</a>
</div>
<? endif ?>
diff --git a/templates/blubber/global_context.php b/templates/blubber/global_context.php
index 0045592..e41e0f0 100644
--- a/templates/blubber/global_context.php
+++ b/templates/blubber/global_context.php
@@ -10,8 +10,8 @@
aria-pressed="<?= $unfollowed ? 'false' : 'true' ?>"
role="button"
data-thread_id="global">
- <?= Icon::create('decline')->asImg(['class' => 'follow text-bottom']) ?>
- <?= Icon::create('notification2')->asImg(['class' => 'unfollow text-bottom']) ?>
- <?= _("Benachrichtigungen aktiviert") ?>
+ <?= Icon::create('decline')->asSvg(['class' => 'follow text-bottom']) ?>
+ <?= Icon::create('notification2')->asSvg(['class' => 'unfollow text-bottom']) ?>
+ <?= _('Benachrichtigungen aktiviert') ?>
</a>
</div>
diff --git a/templates/blubber/private_context.php b/templates/blubber/private_context.php
index 164a20a..a943ba3 100644
--- a/templates/blubber/private_context.php
+++ b/templates/blubber/private_context.php
@@ -1,7 +1,7 @@
<div class="blubber_private_info indented">
<div class="icon">
- <?= Icon::create('group3', Icon::ROLE_INFO)->asImg(50, ['title' => _('Dies ist ein privater Blubber.')]) ?>
+ <?= Icon::create('group3', Icon::ROLE_INFO)->asSvg(50, ['title' => _('Dies ist ein privater Blubber.')]) ?>
</div>
<ul class="clean members">
@@ -13,20 +13,20 @@
<? $user = User::find($mention['user_id']) ?>
<? if ($user) : ?>
<? if ($user->getId() !== $GLOBALS['user']->id && count($mentions) > 2) : ?>
- <a class="float_right" href="<?= URLHelper::getLink("dispatch.php/blubber/write_to/" . $user->getId()) ?>" data-dialog title="<?= _("Anblubbern") ?>">
- <?= Icon::create('blubber')->asImg(['class' => 'text-bottom']) ?>
+ <a class="float_right" href="<?= URLHelper::getLink('dispatch.php/blubber/write_to/' . $user->getId()) ?>" data-dialog title="<?= _('Anblubbern') ?>">
+ <?= Icon::create('blubber')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
<? if ($user->getId() === $GLOBALS['user']->id) : ?>
<a class="float_right"
href="<?= URLHelper::getLink("dispatch.php/blubber/leave_private/".$thread->getId()) ?>"
data-dialog="size=auto"
- title="<?= _("Gruppe verlassen") ?>"
- data-confirm="<?= _("Private Konversation wirklich verlassen?") ?>">
- <?= Icon::create('door-leave')->asImg(['class' => 'text-bottom']) ?>
+ title="<?= _('Gruppe verlassen') ?>"
+ data-confirm="<?= _('Private Konversation wirklich verlassen?') ?>">
+ <?= Icon::create('door-leave')->asSvg(['class' => 'text-bottom']) ?>
</a>
<? endif ?>
- <a href="<?= URLHelper::getLink("dispatch.php/profile", ['username' => $user['username']]) ?>">
+ <a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => $user['username']]) ?>">
<? endif ?>
<?= Avatar::getAvatar($mention['user_id'])->getImageTag(Avatar::SMALL) ?>
@@ -38,8 +38,8 @@
</li>
<? endforeach ?>
<li>
- <a href="<?= URLHelper::getLink("dispatch.php/blubber/add_member_to_private/".$thread->getId()) ?>" data-dialog="width=600;height=300">
- <?= Icon::create('add')->asImg(25, ['class' => 'text-bottom']) ?>
+ <a href="<?= URLHelper::getLink('dispatch.php/blubber/add_member_to_private/'.$thread->getId()) ?>" data-dialog="width=600;height=300">
+ <?= Icon::create('add')->asSvg(25, ['class' => 'text-bottom']) ?>
</a>
</li>
</ul>
diff --git a/templates/blubber/public_context.php b/templates/blubber/public_context.php
index 7d77c25..ea0f643 100644
--- a/templates/blubber/public_context.php
+++ b/templates/blubber/public_context.php
@@ -3,12 +3,12 @@
<? if ($thread['user_id'] === $GLOBALS['user']->id || $GLOBALS['perm']->have_perm("root")) : ?>
<div class="center blubber-edit-icons">
- <a href="<?= URLHelper::getLink("dispatch.php/blubber/compose/".$thread->getId()) ?>"
+ <a href="<?= URLHelper::getLink('dispatch.php/blubber/compose/'.$thread->getId()) ?>"
data-dialog
title="<?= _('Blubber bearbeiten') ?>">
- <?= Icon::create('edit')->asImg(30) ?>
+ <?= Icon::create('edit')->asSvg(30) ?>
</a>
- <form action="<?= URLHelper::getLink("dispatch.php/blubber/delete/".$thread->getId()) ?>"
+ <form action="<?= URLHelper::getLink('dispatch.php/blubber/delete/'.$thread->getId()) ?>"
method="post"
data-confirm="<?= _('Wirklich löschen?') ?>">
<?= CSRFProtection::tokenTag() ?>
diff --git a/templates/contact/header-groups.php b/templates/contact/header-groups.php
index ae7d262..48776be 100644
--- a/templates/contact/header-groups.php
+++ b/templates/contact/header-groups.php
@@ -32,7 +32,7 @@
</a>
<? if ($filter == $group_id): ?>
<a href="<?= URLHelper::getLink('dispatch.php/messages/write?', compact('group_id')) ?>">
- <?= Icon::create('mail')->asImg(['title' => _('Nachricht an alle Personen dieser Gruppe schicken')]) ?>
+ <?= Icon::create('mail')->asSvg(['title' => _('Nachricht an alle Personen dieser Gruppe schicken')]) ?>
</a>
<? endif; ?>
</td>
diff --git a/templates/contentbar/contentbar.php b/templates/contentbar/contentbar.php
index a4632ca..34dab2a 100644
--- a/templates/contentbar/contentbar.php
+++ b/templates/contentbar/contentbar.php
@@ -14,10 +14,10 @@
<div class="contentbar-wrapper-left">
<nav class="contentbar-breadcrumb">
<? if ($toc->isActive()): ?>
- <?= $icon->asImg(24, ['class' => 'text-bottom contentbar-icon']) ?>
+ <?= $icon->asSvg(24, ['class' => 'text-bottom contentbar-icon']) ?>
<? else: ?>
<a href="<?= $toc->getUrl() ?>" title="<?= htmlReady($toc->getTitle()) ?>" class="contentbar-icon">
- <?= $icon->asImg(24, ['class' => 'text-bottom']) ?>
+ <?= $icon->asSvg(24, ['class' => 'text-bottom']) ?>
</a>
<? endif ?>
<?= $breadcrumbs->render() ?>
diff --git a/templates/forms/form.php b/templates/forms/form.php
index 93dd491..9937aa1 100644
--- a/templates/forms/form.php
+++ b/templates/forms/form.php
@@ -55,7 +55,7 @@ $form_id = md5(uniqid());
v-if="STUDIPFORM_REQUIRED.length > 0 || STUDIPFORM_VALIDATIONNOTES.length > 0">
<header>
<h1>
- <?= Icon::create('info-circle', Icon::ROLE_INFO)->asImg(['class' => 'text-bottom validation_notes_icon']) ?>
+ <?= Icon::create('info-circle', Icon::ROLE_INFO)->asSvg(['class' => 'text-bottom validation_notes_icon']) ?>
<?= _('Hinweise zum Ausfüllen des Formulars') ?>
</h1>
</header>
diff --git a/templates/header-navigation-item.php b/templates/header-navigation-item.php
index 9fc875d..511b803 100644
--- a/templates/header-navigation-item.php
+++ b/templates/header-navigation-item.php
@@ -17,7 +17,7 @@ $attr_str = arrayToHtmlAttributes($attributes);
<li id="nav_<?= $path ?>"<? if ($nav->isActive()) : ?> class="active"<? endif ?>>
<a href="<?= URLHelper::getLink($nav->getURL(), $link_params) ?>" <?= $attr_str ?>>
- <?= $nav->getImage()->asImg(['class' => 'headericon original', 'title' => null]) ?>
+ <?= $nav->getImage()->asSvg(32, ['class' => 'headericon original', 'title' => null]) ?>
<div class="navtitle"><?= htmlReady($nav->getTitle()) ?></div>
</a>
</li>
diff --git a/templates/header.php b/templates/header.php
index 49c560a..75b349c 100644
--- a/templates/header.php
+++ b/templates/header.php
@@ -140,7 +140,7 @@ if ($navigation) {
aria-expanded="false"
>
<span class="count" aria-hidden="true"><?= count($notifications) ?></span>
- <?= Icon::create('notification2', Icon::ROLE_INFO) ?>
+ <?= Icon::create('notification2', Icon::ROLE_INFO)->asSvg() ?>
</button>
<input type="checkbox" id="notification_checkbox">
<div class="list below" id="notification_list">
@@ -179,11 +179,11 @@ if ($navigation) {
<input type="hidden" name="user_config_submitted" value="1">
<div id="contrast">
<? if (!empty($_SESSION['contrast'])): ?>
- <?= Icon::create('accessibility', Icon::ROLE_INFO_ALT)->asImg(24) ?>
+ <?= Icon::create('accessibility', Icon::ROLE_INFO_ALT)->asSvg(24) ?>
<button class="as-link" name="unset_contrast"><?= _('Normalen Kontrast aktivieren') ?></button>
<?= tooltipIcon(_('Aktiviert standardmäßige, nicht barrierefreie Kontraste.'), false, false, true); ?>
<? else: ?>
- <?= Icon::create('accessibility', Icon::ROLE_INFO_ALT)->asImg(24) ?>
+ <?= Icon::create('accessibility', Icon::ROLE_INFO_ALT)->asSvg(24) ?>
<button class="as-link" name="set_contrast"><?= _('Hohen Kontrast aktivieren') ?></button>
<?= tooltipIcon(_('Aktiviert einen hohen Kontrast gemäß WCAG 2.1. Diese Einstellung wird nach dem Login übernommen.
Sie können sie in Ihren persönlichen Einstellungen ändern.'), false, false, true); ?>
@@ -197,13 +197,13 @@ if ($navigation) {
<li id="responsive-toggle-fullscreen">
<button class="styleless" id="fullscreen-off"
title="<?= _('Kompakte Navigation ausschalten') ?>">
- <?= Icon::create('screen-standard', Icon::ROLE_INFO_ALT)->asImg(24) ?>
+ <?= Icon::create('screen-standard', Icon::ROLE_INFO_ALT)->asSvg(24) ?>
</button>
</li>
<li id="responsive-toggle-focusmode">
<button class="styleless consuming_mode_trigger" id="focusmode-on"
title="<?= _('Vollbild aktivieren') ?>">
- <?= Icon::create('screen-full', Icon::ROLE_INFO_ALT)->asImg(24) ?>
+ <?= Icon::create('screen-full', Icon::ROLE_INFO_ALT)->asSvg(24) ?>
</button>
</li>
</ul>
@@ -226,7 +226,7 @@ if ($navigation) {
<input type="checkbox" id="header-sink">
<label for="header-sink">
<a class="canvasready" href="#">
- <?= Icon::create('action', 'navigation')->asImg(28, [
+ <?= Icon::create('action', 'navigation')->asSvg(28, [
'class' => 'headericon original',
'title' => '',
'alt' => '',
diff --git a/templates/helpbar/helpbar.php b/templates/helpbar/helpbar.php
index 6f8efbb..79d4bdf 100644
--- a/templates/helpbar/helpbar.php
+++ b/templates/helpbar/helpbar.php
@@ -9,7 +9,7 @@
<a id="helpbar_icon" href="#" class="helpbar-toggler" data-toggles=".helpbar" role="button"
title="<?= _('Hilfelasche anzeigen/verstecken') ?>" aria-controls="helpbar-content"
aria-expanded="<?= $open ? 'true' : 'false' ?>">
- <?= Icon::create('question-circle')->asImg(24, ['alt' => '']) ?>
+ <?= Icon::create('question-circle')->asSvg(24, ['alt' => '']) ?>
</a>
<div class="helpbar" id="helpbar-content" <? if (!$open) echo 'style="display: none"'; ?>>
@@ -18,28 +18,28 @@
<a href="#" class="helpbar-toggler" data-toggles=".helpbar" aria-hidden="true" role="button"
title="<?= _('Hilfelasche verstecken') ?>" aria-controls="helpbar-content"
aria-expanded="<?= $open ? 'true' : 'false' ?>">
- <?= Icon::create('decline-circle', Icon::ROLE_INFO_ALT)->asImg(24, ['alt' => '']) ?>
+ <?= Icon::create('decline-circle', Icon::ROLE_INFO_ALT)->asSvg(24, ['alt' => '']) ?>
</a>
</h2>
<ul class="helpbar-widgets">
<? foreach ($widgets as $index => $widget): ?>
<li>
<? if ($widget->icon): ?>
- <?= is_string($widget->icon) ? Assets::img($widget->icon, ['class' => 'helpbar-widget-icon']) : $widget->icon->asImg(['class' => 'helpbar-widget-icon', 'alt' => '']) ?>
+ <?= is_string($widget->icon) ? Assets::img($widget->icon, ['class' => 'helpbar-widget-icon']) : $widget->icon->asSvg(['class' => 'helpbar-widget-icon', 'alt' => '']) ?>
<? endif; ?>
<?= $widget->render(['base_class' => 'helpbar'])?>
<div class="helpbar-widget-admin-icons">
<? if ($widget->edit_link): ?>
<a href="<?=$widget->edit_link?>" data-dialog="size=auto;reload-on-close">
- <?= Icon::create('edit', 'info_alt')->asImg(['title' => _('Hilfe-Text bearbeiten'), 'alt' => '']) ?></a>
+ <?= Icon::create('edit', 'info_alt')->asSvg(['title' => _('Hilfe-Text bearbeiten'), 'alt' => '']) ?></a>
<? endif; ?>
<? if ($widget->delete_link): ?>
<a href="<?=$widget->delete_link?>" data-dialog="size=auto;reload-on-close">
- <?= Icon::create('trash', 'info_alt')->asImg(['title' => _('Hilfe-Text löschen'), 'alt' => '']) ?></a>
+ <?= Icon::create('trash', 'info_alt')->asSvg(['title' => _('Hilfe-Text löschen'), 'alt' => '']) ?></a>
<? endif; ?>
<? if ($widget->add_link): ?>
<a href="<?=$widget->add_link?>" data-dialog="size=auto;reload-on-close">
- <?= Icon::create('add', 'info_alt')->asImg(['title' => _('Neuer Hilfe-Text'), 'alt' => '']) ?></a>
+ <?= Icon::create('add', 'info_alt')->asSvg(['title' => _('Neuer Hilfe-Text'), 'alt' => '']) ?></a>
<? endif; ?>
</div>
</li>
diff --git a/templates/layouts/base.php b/templates/layouts/base.php
index 8ae32ce..be6b0be 100644
--- a/templates/layouts/base.php
+++ b/templates/layouts/base.php
@@ -97,7 +97,7 @@ $lang_attr = str_replace('_', '-', $_SESSION['_language']);
<h1 class="sr-only"><?= htmlReady(PageLayout::getTitle()) ?></h1>
<? if (PageLayout::isFullscreenModeAllowed()): ?>
<button hidden class="fullscreen-toggle unfullscreen" aria-label="<?= _('Vollbildmodus verlassen') ?>" title="<?= _('Vollbildmodus verlassen') ?>">
- <?= Icon::create('zoom-out2')->asImg(24) ?>
+ <?= Icon::create('zoom-out2')->asSvg(24) ?>
</button>
<? endif; ?>
<?= implode(PageLayout::getMessages(QuestionBox::class)) ?>
@@ -113,7 +113,7 @@ $lang_attr = str_replace('_', '-', $_SESSION['_language']);
<!-- End main content -->
<a id="scroll-to-top" class="hide" tabindex="0" title="<?= _('Zurück zum Seitenanfang') ?>">
- <?= Icon::create('arr_1up', 'info_alt')->asImg(24, ['class' => '']) ?>
+ <?= Icon::create('arr_1up', 'info_alt')->asSvg(24, ['class' => '']) ?>
</a>
<?= $this->render_partial('footer', ['link_params' => $header_template->link_params ?? null]); ?>
diff --git a/templates/mail/notification_html.php b/templates/mail/notification_html.php
index 81a38f3..2325ca0 100644
--- a/templates/mail/notification_html.php
+++ b/templates/mail/notification_html.php
@@ -154,7 +154,7 @@
<a href="<?= URLHelper::getLink($module['url'], ['sso' => $sso]) ?>"><?= htmlReady($module['text']) ?></a>
</td>
<td>
- <a href="<?= URLHelper::getLink($module['url'], ['sso' => $sso]) ?>"><?= $module['icon']->asImg(['title' => $module['text']]) ?></a>
+ <a href="<?= URLHelper::getLink($module['url'], ['sso' => $sso]) ?>"><?= $module['icon']->asSvg(['title' => $module['text']]) ?></a>
</td>
</tr>
<? endforeach ?>
diff --git a/templates/multipersonsearch/link.php b/templates/multipersonsearch/link.php
index daed91a..446c30d 100644
--- a/templates/multipersonsearch/link.php
+++ b/templates/multipersonsearch/link.php
@@ -1,7 +1,7 @@
<a href="<?= URLHelper::getLink('dispatch.php/multipersonsearch/no_js_form/?name=' . $name); ?>" class="multi_person_search_link" data-dialog="width=720;height=490;id=mp-search" data-dialogname="<?= $name; ?>" title="<?= htmlReady($title) ?>" data-js-form="<?= URLHelper::getLink('dispatch.php/multipersonsearch/js_form/' . $name); ?>">
<?
if (!empty($linkIconPath)) {
- print $linkIconPath->asImg(['class' => 'action-menu-item-icon']);
+ print $linkIconPath->asSvg(20, ['class' => 'action-menu-item-icon']);
}
if (!empty($linkIconPath) && !empty($linkText)) {
print " ";
diff --git a/templates/online/user.php b/templates/online/user.php
index 9517447..2bba643 100644
--- a/templates/online/user.php
+++ b/templates/online/user.php
@@ -7,7 +7,7 @@
<? if (!$is_buddy) : ?>
<a href="<?= URLHelper::getLink('online.php', ['cmd' => 'add_user',
'add_uname' => $tmp_online_uname]) ?>">
- <?= Icon::create('arr_2left', Icon::ROLE_SORT)->asImg([
+ <?= Icon::create('arr_2left', Icon::ROLE_SORT)->asSvg([
'title' => _('zu den Buddies hinzufügen'),
'style' => 'padding-right: 0.33em;',
'class' => 'middle',
@@ -29,7 +29,7 @@
<?= htmlReady($fullname) ?>
</a>
<? foreach (StudipKing::is_king($tmp_user_id, TRUE) as $type => $text) : ?>
- <?= Icon::create('crown', Icon::ROLE_SORT)->asImg(['title' => $text, 'class' => 'text-bottom']) ?>
+ <?= Icon::create('crown', Icon::ROLE_SORT)->asSvg(['title' => $text, 'class' => 'text-bottom']) ?>
<? endforeach ?>
</td>
@@ -38,25 +38,25 @@
</td>
<td width="3%" align="center">
- <? if (class_exists("Blubber")) : ?>
+ <? if (class_exists('Blubber')) : ?>
<a href="<?= URLHelper::getLink('dispatch.php/course/streams/global', ['mention' => $tmp_online_uname]) ?>">
- <?= Icon::create('blubber')->asImg(['title' => _("Blubber diesen Nutzer an"), 'class' => 'text-bottom']) ?>
+ <?= Icon::create('blubber')->asSvg(['title' => _('Blubber diesen Nutzer an'), 'class' => 'text-bottom']) ?>
</a>
<? endif ?>
</td>
<td width="3%" align="center">
<a href="<?= URLHelper::getLink('dispatch.php/messages/write', ['rec_uname' => $tmp_online_uname]) ?>">
- <?= Icon::create('mail')->asImg(['title' => _('Nachricht an Benutzer verschicken'), 'class' => 'text-bottom']) ?>
+ <?= Icon::create('mail')->asSvg(['title' => _('Nachricht an Benutzer verschicken'), 'class' => 'text-bottom']) ?>
</a>
</td>
<td width="3%" align="center">
<? if ($is_buddy) : ?>
- <a href="<?= URLHelper::getLink("online.php",
- ["cmd" => "delete_user",
- "delete_uname" => $tmp_online_uname]) ?>">
- <?= Icon::create('trash')->asImg(['title' => _('aus der Buddy-Liste entfernen'), 'class' => 'text-bottom']) ?>
+ <a href="<?= URLHelper::getLink('online.php',
+ ['cmd' => 'delete_user',
+ 'delete_uname' => $tmp_online_uname]) ?>">
+ <?= Icon::create('trash')->asSvg(['title' => _('aus der Buddy-Liste entfernen'), 'class' => 'text-bottom']) ?>
</a>
<? else : ?>
&nbsp;
diff --git a/templates/personal_notifications/notification.php b/templates/personal_notifications/notification.php
index ad93758..b45fc58 100644
--- a/templates/personal_notifications/notification.php
+++ b/templates/personal_notifications/notification.php
@@ -3,7 +3,7 @@
<a class="content" href="<?= URLHelper::getLink('dispatch.php/jsupdater/mark_notification_read/' . $notification['personal_notification_id']) ?>"<?= $notification['dialog'] ? ' data-dialog' : '' ?>>
<? if ($notification['avatar']): ?>
<? if (filter_var($notification['avatar'], FILTER_VALIDATE_URL)): ?>
- <div class="avatar" style="background-image: url(<?= $notification['avatar'] ?>);"></div>
+ <div class="avatar" style="background-color: currentColor; mask: url(<?= $notification['avatar'] ?>) no-repeat center / contain;;"></div>
<? else: ?>
<div class="html-emoji">
<?= $notification['avatar'] ?>
@@ -14,7 +14,7 @@
<?= htmlReady($notification['text']) ?>
</a>
<button class="options mark_as_read">
- <?= Icon::create('decline')->asImg(14, ['title' => _('Als gelesen markieren')]) ?>
+ <?= Icon::create('decline')->asSvg(16, ['title' => _('Als gelesen markieren')]) ?>
</button>
</div>
<? if ($notification->more_unseen > 0): ?>
diff --git a/templates/quicksearch/inputfield.php b/templates/quicksearch/inputfield.php
index 6f2cb3f..9419dcd 100644
--- a/templates/quicksearch/inputfield.php
+++ b/templates/quicksearch/inputfield.php
@@ -19,7 +19,7 @@
placeholder="<?= $beschriftung && !$defaultID ? htmlReady($beschriftung) : '' ?>">
<? if ($withButton): ?>
<? if ($box_align !== 'left'): ?>
- <input type="submit" value="<?= _('Suche starten') ?>" name="<?= htmlReady($search_button_name) ?>">
+ <?= Icon::create('search')->asInput(['type' => 'submit', 'value' => _('Suche starten'), 'name' => htmlReady($search_button_name)]) ?>
<? endif; ?>
</div>
<? endif ?>
diff --git a/templates/shared/action-menu-single.php b/templates/shared/action-menu-single.php
index dbe38c1..9fdd5d3 100644
--- a/templates/shared/action-menu-single.php
+++ b/templates/shared/action-menu-single.php
@@ -15,7 +15,7 @@
<? if ($action['disabled']): ?>
<label class="undecorated action-menu-item-disabled" aria-disabled="true" <?= arrayToHtmlAttributes($action['attributes'] + ['title' => $action['label']]) ?>>
<? if ($action['icon']): ?>
- <?= $action['icon']->asImg(['class' => 'action-menu-item-icon']) ?>
+ <?= $action['icon']->asSvg(['class' => 'action-menu-item-icon']) ?>
<? else: ?>
<?= htmlReady($action['label']) ?>
<? endif ?>
@@ -23,7 +23,7 @@
<? elseif ($action['type'] === 'link'): ?>
<a href="<?= htmlReady($action['link']) ?>" <?= arrayToHtmlAttributes($action['attributes'] + ['title' => $action['label']]) ?>>
<? if ($action['icon']): ?>
- <?= $action['icon']->asImg(['class' => 'action-menu-item-icon']) ?>
+ <?= $action['icon']->asSvg(['class' => 'action-menu-item-icon']) ?>
<? else: ?>
<?= htmlReady($action['label']) ?>
<? endif ?>
diff --git a/templates/shared/action-menu.php b/templates/shared/action-menu.php
index 14b99b5..43714aa 100644
--- a/templates/shared/action-menu.php
+++ b/templates/shared/action-menu.php
@@ -37,7 +37,7 @@
<? if ($action['disabled']): ?>
<label class="undecorated" aria-disabled="true" <?= arrayToHtmlAttributes($action['attributes']) ?>>
<? if ($action['icon']): ?>
- <?= $action['icon']->asImg(false, ['class' => 'action-menu-item-icon']) ?>
+ <?= $action['icon']->asSvg(false, ['class' => 'action-menu-item-icon']) ?>
<? else: ?>
<span class="action-menu-no-icon"></span>
<? endif ?>
@@ -47,7 +47,7 @@
<? elseif ($action['type'] === 'link'): ?>
<a href="<?= htmlReady($action['link']) ?>" <?= arrayToHtmlAttributes($action['attributes']) ?>>
<? if ($action['icon']): ?>
- <?= $action['icon']->asImg(false, ['class' => 'action-menu-item-icon']) ?>
+ <?= $action['icon']->asSvg(false, ['class' => 'action-menu-item-icon']) ?>
<? else: ?>
<span class="action-menu-no-icon"></span>
<? endif ?>
diff --git a/templates/shared/content_box.php b/templates/shared/content_box.php
index c31f467..2c5b0f0 100644
--- a/templates/shared/content_box.php
+++ b/templates/shared/content_box.php
@@ -11,7 +11,7 @@
<? if (isset($admin_url)): ?>
<nav>
<a href="<?= URLHelper::getLink($admin_url) ?>" title="<?= htmlReady($admin_title) ?>">
- <?= Icon::create('admin')->asImg(tooltip2(htmlReady($admin_title))) ?>
+ <?= Icon::create('admin')->asSvg(tooltip2(htmlReady($admin_title))) ?>
</a>
</nav>
<? endif; ?>
diff --git a/templates/shared/index_box.php b/templates/shared/index_box.php
index 3430056..98ef9c5 100644
--- a/templates/shared/index_box.php
+++ b/templates/shared/index_box.php
@@ -20,8 +20,8 @@
<td class="table_header_bold" style="text-align: right;">
<? if (isset($admin_url)): ?>
<a href="<?= URLHelper::getLink($admin_url) ?>" title="<?= htmlReady($admin_title ?? _('Administration')) ?>">
- <?= Icon::create('admin', Icon::ROLE_INFO_ALT)->asImg([
- 'alt' => $admin_title ?? ('Administration'),
+ <?= Icon::create('admin', Icon::ROLE_INFO_ALT)->asSvg([
+ 'alt' => $admin_title ?? _('Administration'),
]) ?>
</a>
<? endif ?>
diff --git a/templates/sidebar/list-widget.php b/templates/sidebar/list-widget.php
index 5aed188..49279e5 100644
--- a/templates/sidebar/list-widget.php
+++ b/templates/sidebar/list-widget.php
@@ -7,9 +7,12 @@
<? $icon = $icon->copyWithRole(Icon::ROLE_INACTIVE) ?>
<? endif ?>
<li id="<?= htmlReady($index) ?>"
- <?= isset($icon) ? 'style="' . $icon->asCSS() .'"' : '' ?>
<?= !empty($element->active) ? 'class="active"' : '' ?>>
- <?= $element->render() ?>
+ <? if (isset($icon)): ?>
+ <?= $element->renderWithIcon($icon) ?>
+ <? else: ?>
+ <?= $element->render() ?>
+ <? endif ?>
</li>
<? endforeach; ?>
</ul>
diff --git a/templates/sidebar/resource-tree-widget.php b/templates/sidebar/resource-tree-widget.php
index 890971b..e20ee41 100644
--- a/templates/sidebar/resource-tree-widget.php
+++ b/templates/sidebar/resource-tree-widget.php
@@ -21,7 +21,7 @@
<? if ($resource_path && !in_array($resource->id, $resource_path)): ?>
<a href="<?= $link ?>">
<? endif; ?>
- <?= Icon::create('arr_1right')->asImg([
+ <?= Icon::create('arr_1right')->asSvg([
'class' => in_array($resource->id, $resource_path) || (!$resource_path && $resource->level < $max_open_depth)
? 'rotated'
: '',
@@ -42,7 +42,7 @@
<?= $selected
? 'class="selected-resource"'
: '' ?>>
- <?= $resource->getIcon($selected ? Icon::ROLE_INFO_ALT : Icon::ROLE_CLICKABLE)->asImg([
+ <?= $resource->getIcon($selected ? Icon::ROLE_INFO_ALT : Icon::ROLE_CLICKABLE)->asSvg([
'class' => 'text-bottom'
]) ?>
<?= htmlReady($resource->name) ?>
diff --git a/templates/sidebar/resources_individual_booking_plan_sidebar.php b/templates/sidebar/resources_individual_booking_plan_sidebar.php
index 8ba630d..50c4438 100644
--- a/templates/sidebar/resources_individual_booking_plan_sidebar.php
+++ b/templates/sidebar/resources_individual_booking_plan_sidebar.php
@@ -11,7 +11,7 @@
<input type="color" value="#000000" class="big-colour-input">
</div>
<? endfor ?>
- <?= Icon::create('print')->asImg(Icon::SIZE_LARGE, [
+ <?= Icon::create('print')->asSvg(Icon::SIZE_LARGE, [
'class' => 'text-bottom print-action',
'title' => _('Individuelle Druckansicht drucken'),
'onclick' => 'javascript:window.print();'
diff --git a/templates/sidebar/room-clipboard-item.php b/templates/sidebar/room-clipboard-item.php
index 45633a0..40b5146 100644
--- a/templates/sidebar/room-clipboard-item.php
+++ b/templates/sidebar/room-clipboard-item.php
@@ -33,13 +33,13 @@ if (!$item) {
<td class="item-name"><?= htmlReady($item['name'] ?? '') ?></td>
<td class="actions">
<a href="<?= Room::getLinkForAction('show', (!empty($item) ? $item['range_id'] : 'RANGE_ID')) ?>" data-dialog>
- <?= Icon::create('info-circle')->asImg([
+ <?= Icon::create('info-circle')->asSvg([
'title' => _('Rauminformationen'),
'class' => 'text-bottom'
])?>
</a>
<a href="<?= Room::getLinkForAction('semester_plan', (!empty($item) ? $item['range_id'] : 'RANGE_ID')) ?>" target="_blank">
- <?= Icon::create('timetable')->asImg([
+ <?= Icon::create('timetable')->asSvg([
'title' => _('Semesterbelegung'),
'class' => 'text-bottom'
])?>
diff --git a/templates/sidebar/room-search-criteria-templates.php b/templates/sidebar/room-search-criteria-templates.php
index d084fa4..09e980b 100644
--- a/templates/sidebar/room-search-criteria-templates.php
+++ b/templates/sidebar/room-search-criteria-templates.php
@@ -16,7 +16,7 @@
</label>
</li>
<li class="template invisible" data-template-type="range">
- <?= Icon::create('trash')->asImg(
+ <?= Icon::create('trash')->asSvg(
[
'class' => 'text-bottom remove-icon',
'aria-label' => _('Kriterium entfernen'),
@@ -38,7 +38,7 @@
</label>
</li>
<li class="template invisible" data-template-type="num">
- <?= Icon::create('trash')->asImg(
+ <?= Icon::create('trash')->asSvg(
[
'class' => 'text-bottom remove-icon',
'aria-label' => _('Kriterium entfernen'),
@@ -51,7 +51,7 @@
</label>
</li>
<li class="template invisible" data-template-type="select">
- <?= Icon::create('trash')->asImg(['class' => 'text-bottom remove-icon']) ?>
+ <?= Icon::create('trash')->asSvg(['class' => 'text-bottom remove-icon']) ?>
<label class="undecorated">
<span></span>
<select class="room-search-widget_criteria-list_input">
@@ -60,7 +60,7 @@
</li>
<li class="template invisible"
data-template-type="other">
- <?= Icon::create('trash')->asImg(
+ <?= Icon::create('trash')->asSvg(
[
'class' => 'text-bottom remove-icon',
'aria-label' => _('Kriterium entfernen'),
diff --git a/templates/sidebar/room-search-tree-widget.php b/templates/sidebar/room-search-tree-widget.php
index 008b1bc..13bd204 100644
--- a/templates/sidebar/room-search-tree-widget.php
+++ b/templates/sidebar/room-search-tree-widget.php
@@ -8,7 +8,7 @@
<li <?= ((!$resource_path && $resource->level > $max_open_depth) || $hide) ? 'style="display: none;"' : ''; ?> >
<? if (count($resource->children)): ?>
- <?= Icon::create('arr_1right')->asImg(
+ <?= Icon::create('arr_1right')->asSvg(
[
'class' => implode(
' ',
@@ -38,7 +38,7 @@
<? endif ?>
<span id="<?= $search_object; ?>" style="cursor: pointer;">
- <?= $resource->getIcon()->asImg(
+ <?= $resource->getIcon()->asSvg(
[
'class' => 'text-bottom'
]
diff --git a/templates/start/contents.php b/templates/start/contents.php
index bb5697f..c0bbcc6 100644
--- a/templates/start/contents.php
+++ b/templates/start/contents.php
@@ -6,7 +6,7 @@
<a href="<?= URLHelper::getLink($navigation->getURL()) ?>" class="content-item-link">
<div class="content-item-img-wrapper">
<? if ($navigation->getImage()): ?>
- <?= $navigation->getImage()->asImg(32, $navigation->getLinkAttributes()) ?>
+ <?= $navigation->getImage()->asSvg(32, $navigation->getLinkAttributes()) ?>
<? endif ?>
</div>
<div class="content-item-text">
diff --git a/templates/tabs.php b/templates/tabs.php
index 24597cb..fa7ca27 100644
--- a/templates/tabs.php
+++ b/templates/tabs.php
@@ -23,14 +23,14 @@ foreach (Navigation::getItem("/")->getSubNavigation() as $path => $nav) {
?>
<a href="<?= URLHelper::getLink($nav->getURL()) ?>" <?= arrayToHtmlAttributes($attr) ?>>
<? if ($image = $nav->getImage()) : ?>
- <?= $image->asImg(['class' => "tab-icon", 'title' => $nav->getTitle() ? $nav->getTitle() : $nav->getDescription()]) ?>
+ <?= $image->asSvg(['class' => "tab-icon", 'title' => $nav->getTitle() ? $nav->getTitle() : $nav->getDescription()]) ?>
<? endif ?>
<span title="<?= $nav->getDescription() ? htmlReady($nav->getDescription()) : htmlReady($nav->getTitle())?>" class="tab-title"><?= htmlReady($nav->getTitle()) ?></span>
</a>
<? else: ?>
<span class="quiet tab-title">
<? if ($image = $nav->getImage()) : ?>
- <?= $image->asImg(['class' => "tab-icon", 'title' => $nav->getTitle()]) ?>
+ <?= $image->asSvg(['class' => "tab-icon", 'title' => $nav->getTitle()]) ?>
<? endif ?>
<?= htmlReady($nav->getTitle()) ?>
</span>
@@ -47,7 +47,7 @@ foreach (Navigation::getItem("/")->getSubNavigation() as $path => $nav) {
<div id="non-responsive-toggle-fullscreen">
<button class="styleless" id="fullscreen-on"
title="<?= _('Kompakte Navigation aktivieren') ?>">
- <?= Icon::create('screen-compact')->asImg(24) ?>
+ <?= Icon::create('screen-compact')->asSvg(24) ?>
</button>
</div>
<? endif ?>
diff --git a/templates/toc/_toc-item-list.php b/templates/toc/_toc-item-list.php
index 3e2ee0d..82cad85 100644
--- a/templates/toc/_toc-item-list.php
+++ b/templates/toc/_toc-item-list.php
@@ -4,7 +4,7 @@
<a class="navigate" href="<?= htmlReady($item->getURL()) ?>">
<? endif ?>
<? if ($item->getIcon()) : ?>
- <?= $item->getIcon()->copyWithRole(Icon::ROLE_INFO)->asImg(24) ?>
+ <?= $item->getIcon()->copyWithRole(Icon::ROLE_INFO)->asSvg(24) ?>
<? endif ?>
<?= htmlReady($item->getTitle()) ?>
<? if (!$item->isActive()) : ?>
diff --git a/templates/toc/generic-toc-list.php b/templates/toc/generic-toc-list.php
index 475ceaa..0894e5f 100644
--- a/templates/toc/generic-toc-list.php
+++ b/templates/toc/generic-toc-list.php
@@ -3,7 +3,7 @@
<header id="toc_header">
<h1 id="toc_h1"><?= sprintf(_('Inhalt (%u Elemente)'), htmlReady($root->countAllChildren())) ?></h1>
<label for="cb-toc" class="check-box enter-accessible" title="<?= _('Schließen')?>" tabindex="0">
- <?= Icon::create('decline')->asImg(24) ?>
+ <?= Icon::create('decline')->asSvg(24) ?>
</label>
</header>
<section>
diff --git a/templates/userfilter/display.php b/templates/userfilter/display.php
index 189f6cd..2aba04f 100644
--- a/templates/userfilter/display.php
+++ b/templates/userfilter/display.php
@@ -17,7 +17,7 @@ if ($filter->show_user_count) {
$fieldText .= ' (' . sprintf(ngettext('Eine Person', '%s Personen', $user_count), $user_count);
if ($user_count === 0) {
$fieldText .= '&nbsp;' . Icon::create('exclaim-circle', Icon::ROLE_ATTENTION)
- ->asImg(['title' => _('Niemand erfüllt diese Bedingung.')]);
+ ->asSvg(['title' => _('Niemand erfüllt diese Bedingung.')]);
}
$fieldText .= ')';
}
diff --git a/tests/unit/lib/classes/IconClassTest.php b/tests/unit/lib/classes/IconClassTest.php
index 01a3a1b..bc7ad7f 100644
--- a/tests/unit/lib/classes/IconClassTest.php
+++ b/tests/unit/lib/classes/IconClassTest.php
@@ -23,156 +23,47 @@ class IconClassTest extends \Codeception\Test\Unit
Assets::set_assets_url($this->memo_assets_url);
}
- public function testIconCreateAsImg()
- {
- $this->assertEquals(
- '<img src="images/icons/blue/vote.svg" alt="" class="studip-icon icon-role-clickable icon-shape-vote">',
- Icon::create('vote')->asImg()
- );
- }
-
- public function testIconCreateAsImgWithAddition()
- {
- $this->assertEquals(
- '<img src="images/icons/blue/vote.svg" alt="" class="studip-icon icon-role-clickable icon-shape-vote">',
- Icon::create('vote')->asImg()
- );
- }
-
- public function testIconCreateAsImgWithSize()
- {
- $this->assertEquals(
- '<img style="width:100px;height:100px" src="images/icons/blue/vote.svg" alt="" class="studip-icon icon-role-clickable icon-shape-vote">',
- Icon::create('vote')->asImg(100)
- );
- }
-
- public function testIconCreateAsImgWithTitle()
- {
- $this->assertEquals(
- '<img title="Mit Anhang" style="width:24px;height:24px" src="images/icons/blue/vote.svg" class="studip-icon icon-role-clickable icon-shape-vote">',
- Icon::create('vote')->asImg(24, ['title' => 'Mit Anhang'])
- );
- }
-
- public function testIconCreateAsImgWithHspace()
- {
- $this->assertEquals(
- '<img hspace="3" src="images/icons/blue/arr_2left.svg" alt="" class="studip-icon icon-role-clickable icon-shape-arr_2left">',
- Icon::create('arr_2left')->asImg(['hspace' => 3])
- );
- }
-
- public function testIconCreateAsImgWithClass()
- {
- $this->assertEquals(
- '<img class="text-bottom studip-icon icon-role-info icon-shape-staple" style="width:24px;height:24px" src="images/icons/black/staple.svg" alt="">',
- Icon::create('staple', Icon::ROLE_INFO)->asImg(24, ['class' => 'text-bottom'])
- );
- }
-
- public function testIconCreateAsImgWithClassAndTitle()
- {
- $this->assertEquals(
- '<img class="text-bottom studip-icon icon-role-new icon-shape-upload" title="Datei hochladen" style="width:24px;height:24px" src="images/icons/red/upload.svg">',
- Icon::create('upload', Icon::ROLE_NEW, ['title' => 'Datei hochladen'])
- ->asImg(24, ['class' => 'text-bottom'])
- );
- }
-
- public function testIconCreateAsInput()
- {
- $this->assertEquals(
- '<input type="image" class="text-bottom studip-icon icon-role-clickable icon-shape-upload" style="width:24px;height:24px" src="images/icons/blue/upload.svg" alt="">',
- Icon::create('upload')->asInput(24, ['class' => 'text-bottom'])
- );
- }
-
- public function testIconIsImmutable()
- {
- $icon = Icon::create('upload', attributes: ['title' => 'a title']);
- $copy = $icon->copyWithRole(Icon::ROLE_CLICKABLE);
-
- $this->assertNotSame($icon, $copy);
- }
-
- public function testIconCopyWithRole()
- {
- $icon = Icon::create('upload', attributes: ['title' => 'a title']);
- $copy = $icon->copyWithRole(Icon::ROLE_INFO);
-
- $this->assertEquals($icon->getShape(), $copy->getShape());
- $this->assertNotEquals($icon->getRole(), $copy->getRole());
- $this->assertEquals($icon->getAttributes(), $copy->getAttributes());
- }
-
- public function testIconCopyWithShape()
- {
- $icon = Icon::create('upload', attributes: ['title' => 'a title']);
- $copy = $icon->copyWithShape('staple');
-
- $this->assertNotEquals($icon->getShape(), $copy->getShape());
- $this->assertEquals($icon->getRole(), $copy->getRole());
- $this->assertEquals($icon->getAttributes(), $copy->getAttributes());
- }
-
- public function testIconCopyWithAttributes()
- {
- $icon = Icon::create('upload', Icon::ROLE_CLICKABLE, ['title' => 'a title']);
- $copy = $icon->copyWithAttributes(['title' => 'another title']);
-
- $this->assertEquals($icon->getShape(), $copy->getShape());
- $this->assertEquals($icon->getRole(), $copy->getRole());
- $this->assertNotEquals($icon->getAttributes(), $copy->getAttributes());
- }
-
- public function testStaticIcon()
- {
- $icon = Icon::create('https://i.imgur.com/kpTtTh.gif');
- $this->assertEquals($icon->asImagePath(), 'https://i.imgur.com/kpTtTh.gif');
- }
-
- public function testIconCreateAsCSSWithSize()
- {
- $this->assertEquals(
- 'background-image:url(images/icons/blue/vote.svg);background-size:17px 17px;',
- Icon::create('vote')->asCSS(17)
- );
- }
-
- public function testIconCreateAsImagePath()
- {
- $this->assertEquals(
- 'images/icons/blue/vote.svg',
- Icon::create('vote')->asImagePath()
- );
- }
-
- public function testIconCreateAsImgWithoutSize()
- {
- $this->assertEquals(
- '<img src="images/icons/blue/vote.svg" alt="" class="studip-icon icon-role-clickable icon-shape-vote">',
- Icon::create('vote')->asImg(false)
- );
- }
-
- public function testIconCreateAsInputWithoutSize()
- {
- $this->assertEquals(
- '<input type="image" src="images/icons/blue/upload.svg" alt="" class="studip-icon icon-role-clickable icon-shape-upload">',
- Icon::create('upload')->asInput(false)
- );
- }
-
- public function testIconCreateRemovedExtras()
- {
- $this->assertEquals(
- '<img src="images/icons/blue/vote.svg" alt="" class="studip-icon icon-role-clickable icon-shape-vote">',
- Icon::create('add/vote')->asImg(false)
- );
- $this->assertEquals(
- '<img src="images/icons/blue/vote.svg" alt="" class="studip-icon icon-role-clickable icon-shape-vote">',
- Icon::create('vote+add')->asImg(false)
- );
- }
+ public function testIconIsImmutable()
+ {
+ $icon = Icon::create('upload', attributes: ['title' => 'a title']);
+ $copy = $icon->copyWithRole(Icon::ROLE_CLICKABLE);
+
+ $this->assertNotSame($icon, $copy);
+ }
+
+ public function testIconCopyWithRole()
+ {
+ $icon = Icon::create('upload', attributes: ['title' => 'a title']);
+ $copy = $icon->copyWithRole(Icon::ROLE_INFO);
+
+ $this->assertEquals($icon->getShape(), $copy->getShape());
+ $this->assertNotEquals($icon->getRole(), $copy->getRole());
+ $this->assertEquals($icon->getAttributes(), $copy->getAttributes());
+ }
+
+ public function testIconCopyWithShape()
+ {
+ $icon = Icon::create('upload', attributes: ['title' => 'a title']);
+ $copy = $icon->copyWithShape('staple');
+
+ $this->assertNotEquals($icon->getShape(), $copy->getShape());
+ $this->assertEquals($icon->getRole(), $copy->getRole());
+ $this->assertEquals($icon->getAttributes(), $copy->getAttributes());
+ }
+
+ public function testIconCopyWithAttributes()
+ {
+ $icon = Icon::create('upload', Icon::ROLE_CLICKABLE, ['title' => 'a title']);
+ $copy = $icon->copyWithAttributes(['title' => 'another title']);
+
+ $this->assertEquals($icon->getShape(), $copy->getShape());
+ $this->assertEquals($icon->getRole(), $copy->getRole());
+ $this->assertNotEquals($icon->getAttributes(), $copy->getAttributes());
+ }
+
+ public function testStaticIcon()
+ {
+ $icon = Icon::create('https://i.imgur.com/kpTtTh.gif');
+ $this->assertEquals($icon->asImagePath(), 'https://i.imgur.com/kpTtTh.gif');
+ }
}