From 6b4f56d80aff3dc62872389b7ba591df0c9fa7e8 Mon Sep 17 00:00:00 2001 From: salman2013 Date: Wed, 18 Mar 2026 00:05:50 +0500 Subject: [PATCH] chore: extract and shift discussion block files --- package-lock.json | 1521 ++---- setup.py | 2 + xblocks_contrib/discussion/apps.py | 53 + .../discussion/assets/jasmine.common.conf.js | 12 + .../discussion/assets/karma.conf.js | 112 + .../discussion/assets/package.json | 33 + .../static/css/inline-discussion-rtl.css | 4572 +++++++++++++++++ .../assets/static/css/inline-discussion.css | 4572 +++++++++++++++++ .../assets/static/js/common/content.js | 428 ++ .../assets/static/js/common/discussion.js | 228 + .../static/js/common/mathjax_include.js | 56 + .../models/discussion_course_settings.js | 32 + .../js/common/models/discussion_user.js | 50 + .../assets/static/js/common/utils.js | 589 +++ .../common/views/discussion_content_view.js | 528 ++ .../js/common/views/discussion_inline_view.js | 256 + .../views/discussion_thread_edit_view.js | 121 + .../views/discussion_thread_list_view.js | 621 +++ .../views/discussion_thread_profile_view.js | 68 + .../views/discussion_thread_show_view.js | 83 + .../js/common/views/discussion_thread_view.js | 478 ++ .../views/discussion_topic_menu_view.js | 113 + .../static/js/common/views/new_post_view.js | 281 + .../views/response_comment_edit_view.js | 68 + .../views/response_comment_show_view.js | 90 + .../js/common/views/response_comment_view.js | 163 + .../common/views/thread_response_edit_view.js | 68 + .../common/views/thread_response_show_view.js | 70 + .../js/common/views/thread_response_view.js | 358 ++ .../discussion/assets/static/js/customwmd.js | 266 + .../assets/static/js/discussion_main.js | 40 + .../assets/static/js/mathjax_accessible.js | 37 + .../static/js/mathjax_delay_renderer.js | 109 + .../static/js/vendor/Markdown.Converter.js | 1304 +++++ .../static/js/vendor/Markdown.Editor.js | 2191 ++++++++ .../static/js/vendor/Markdown.Sanitizer.js | 102 + .../assets/static/js/vendor/URI.min.js | 47 + .../static/js/vendor/jquery.ajaxfileupload.js | 206 + .../static/js/vendor/jquery.leanModal.js | 61 + .../assets/static/js/vendor/jquery.timeago.js | 146 + .../static/js/vendor/jquery.timeago.locale.js | 18 + .../static/js/vendor/jquery.truncate.js | 107 + .../assets/static/js/vendor/split.js | 120 + .../assets/static/spec/content_spec.js | 158 + .../static/spec/fixtures/templates.underscore | 889 ++++ .../spec_helpers/discussion_spec_helper.js | 216 + .../assets/static/spec/spec_helpers/i18n.js | 10 + .../assets/static/spec/utils_spec.js | 94 + .../spec/view/discussion_content_view_spec.js | 58 + .../spec/view/discussion_inline_view_spec.js | 257 + .../view/discussion_thread_edit_view_spec.js | 184 + .../view/discussion_thread_list_view_spec.js | 754 +++ .../discussion_thread_profile_view_spec.js | 151 + .../view/discussion_thread_show_view_spec.js | 199 + .../spec/view/discussion_thread_view_spec.js | 367 ++ .../view/discussion_topic_menu_view_spec.js | 110 + .../spec/view/discussion_view_spec_helper.js | 147 + .../static/spec/view/new_post_view_spec.js | 347 ++ .../view/response_comment_show_view_spec.js | 121 + .../spec/view/response_comment_view_spec.js | 204 + .../view/thread_response_show_view_spec.js | 267 + .../spec/view/thread_response_view_spec.js | 149 + .../assets/webpack.common.config.js | 84 + .../discussion/assets/webpack.dev.config.js | 19 + .../discussion/assets/webpack.prod.config.js | 12 + xblocks_contrib/discussion/discussion.py | 341 +- .../discussion/static/css/discussion.css | 9 - .../discussion/static/js/src/discussion.js | 38 - .../templates/_discussion_inline_studio.html | 16 + .../discussion/templates/discussion.html | 7 - .../_discussion_inline.html | 49 + .../_thread_list_template.html | 55 + .../_underscore_templates.html | 19 + .../discussion_templates/templates.underscore | 889 ++++ .../discussion/tests/test_discussion.py | 209 +- 75 files changed, 25640 insertions(+), 1169 deletions(-) create mode 100644 xblocks_contrib/discussion/apps.py create mode 100644 xblocks_contrib/discussion/assets/jasmine.common.conf.js create mode 100644 xblocks_contrib/discussion/assets/karma.conf.js create mode 100644 xblocks_contrib/discussion/assets/package.json create mode 100644 xblocks_contrib/discussion/assets/static/css/inline-discussion-rtl.css create mode 100644 xblocks_contrib/discussion/assets/static/css/inline-discussion.css create mode 100644 xblocks_contrib/discussion/assets/static/js/common/content.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/discussion.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/mathjax_include.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/models/discussion_course_settings.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/models/discussion_user.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/utils.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_content_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_inline_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_edit_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_list_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_profile_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_show_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/discussion_topic_menu_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/new_post_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/response_comment_edit_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/response_comment_show_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/response_comment_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/thread_response_edit_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/thread_response_show_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/common/views/thread_response_view.js create mode 100644 xblocks_contrib/discussion/assets/static/js/customwmd.js create mode 100644 xblocks_contrib/discussion/assets/static/js/discussion_main.js create mode 100644 xblocks_contrib/discussion/assets/static/js/mathjax_accessible.js create mode 100644 xblocks_contrib/discussion/assets/static/js/mathjax_delay_renderer.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/Markdown.Converter.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/Markdown.Editor.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/Markdown.Sanitizer.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/URI.min.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/jquery.ajaxfileupload.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/jquery.leanModal.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/jquery.timeago.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/jquery.timeago.locale.js create mode 100755 xblocks_contrib/discussion/assets/static/js/vendor/jquery.truncate.js create mode 100644 xblocks_contrib/discussion/assets/static/js/vendor/split.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/content_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/fixtures/templates.underscore create mode 100644 xblocks_contrib/discussion/assets/static/spec/spec_helpers/discussion_spec_helper.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/spec_helpers/i18n.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/utils_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_content_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_inline_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_thread_edit_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_thread_list_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_thread_profile_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_thread_show_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_thread_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_topic_menu_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/discussion_view_spec_helper.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/new_post_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/response_comment_show_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/response_comment_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/thread_response_show_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/static/spec/view/thread_response_view_spec.js create mode 100644 xblocks_contrib/discussion/assets/webpack.common.config.js create mode 100644 xblocks_contrib/discussion/assets/webpack.dev.config.js create mode 100644 xblocks_contrib/discussion/assets/webpack.prod.config.js delete mode 100644 xblocks_contrib/discussion/static/css/discussion.css delete mode 100644 xblocks_contrib/discussion/static/js/src/discussion.js create mode 100644 xblocks_contrib/discussion/templates/_discussion_inline_studio.html delete mode 100644 xblocks_contrib/discussion/templates/discussion.html create mode 100644 xblocks_contrib/discussion/templates/discussion_templates/_discussion_inline.html create mode 100644 xblocks_contrib/discussion/templates/discussion_templates/_thread_list_template.html create mode 100644 xblocks_contrib/discussion/templates/discussion_templates/_underscore_templates.html create mode 100644 xblocks_contrib/discussion/templates/discussion_templates/templates.underscore diff --git a/package-lock.json b/package-lock.json index 2016c050..544844e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -27,7 +26,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -36,7 +34,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -62,11 +59,31 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/@babel/generator": { "version": "7.29.1", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "license": "MIT", "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", @@ -82,7 +99,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", @@ -98,7 +114,6 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -107,7 +122,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "license": "MIT", "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" @@ -120,7 +134,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", @@ -137,7 +150,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -146,7 +158,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -155,7 +166,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -164,7 +174,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", - "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" @@ -177,7 +186,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", - "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" }, @@ -192,7 +200,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -206,7 +213,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -220,11 +226,31 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" @@ -245,7 +271,6 @@ "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" } @@ -255,7 +280,6 @@ "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" } @@ -264,7 +288,6 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" @@ -274,7 +297,6 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -284,7 +306,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -293,7 +314,6 @@ "version": "0.3.11", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -302,14 +322,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -320,7 +338,6 @@ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", "hasInstallScript": true, - "license": "MIT", "optional": true, "dependencies": { "detect-libc": "^2.0.3", @@ -358,7 +375,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "android" @@ -378,7 +394,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -398,7 +413,6 @@ "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -418,7 +432,6 @@ "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -438,7 +451,6 @@ "cpu": [ "arm" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -458,7 +470,6 @@ "cpu": [ "arm" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -478,7 +489,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -498,7 +508,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -518,7 +527,6 @@ "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -538,7 +546,6 @@ "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -558,7 +565,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -578,7 +584,6 @@ "cpu": [ "ia32" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -598,7 +603,6 @@ "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -615,7 +619,6 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -625,7 +628,6 @@ "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==", - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -634,8 +636,7 @@ "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" }, "node_modules/@types/glob": { "version": "7.2.0", @@ -650,8 +651,7 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/minimatch": { "version": "6.0.0", @@ -664,10 +664,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.3.tgz", - "integrity": "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==", - "license": "MIT", + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", "dependencies": { "undici-types": "~7.18.0" } @@ -676,7 +675,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -685,26 +683,22 @@ "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==", - "license": "MIT" + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==" }, "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==", - "license": "MIT" + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==" }, "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==", - "license": "MIT" + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==" }, "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==", - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -714,14 +708,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==" }, "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==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -733,7 +725,6 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -742,7 +733,6 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -750,14 +740,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==" }, "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==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -773,7 +761,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -786,7 +773,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -798,7 +784,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -812,7 +797,6 @@ "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==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -823,7 +807,6 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -837,7 +820,6 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -851,7 +833,6 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -868,21 +849,18 @@ "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==", - "license": "BSD-3-Clause" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "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==", - "license": "Apache-2.0" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/accepts": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", "integrity": "sha512-AOPopplFOUlmUugwiZUCDpOwmqvSgdCyE8iJVLWI4NcB7qfMKQN34dn5xYtlUU03XGG5egRWW4NW5gIxpa5hEA==", "dev": true, - "license": "MIT", "dependencies": { "mime-types": "~2.1.11", "negotiator": "0.6.1" @@ -895,7 +873,6 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -907,7 +884,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "license": "MIT", "engines": { "node": ">=10.13.0" }, @@ -919,14 +895,12 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/ajv": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -942,7 +916,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -959,7 +932,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -971,7 +943,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "license": "MIT", "dependencies": { "ansi-wrap": "^0.1.0" }, @@ -983,7 +954,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", - "license": "MIT", "dependencies": { "ansi-wrap": "0.1.0" }, @@ -995,7 +965,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1010,7 +979,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1020,7 +988,6 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, - "license": "ISC", "dependencies": { "micromatch": "^2.1.5", "normalize-path": "^2.0.0" @@ -1031,7 +998,6 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "license": "MIT", "dependencies": { "remove-trailing-separator": "^1.0.1" }, @@ -1039,12 +1005,20 @@ "node": ">=0.10.0" } }, + "node_modules/append-prepend-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-prepend-loader/-/append-prepend-loader-1.0.0.tgz", + "integrity": "sha512-TpqFKoWUJZgo69yFD+EZ+NBhEVAVT6LK5vgMbBEyHd65a33v/ECNq7H8THzL4eobBZaaJ21bVg5ruJeYxTSsYw==", + "dev": true, + "peerDependencies": { + "webpack": "*" + } + }, "node_modules/arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", "dev": true, - "license": "MIT", "dependencies": { "arr-flatten": "^1.0.1" }, @@ -1057,7 +1031,6 @@ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1066,7 +1039,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1076,7 +1048,6 @@ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1107,7 +1078,6 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1118,11 +1088,14 @@ "integrity": "sha512-6ZjfQaBSy6CuIH0+B0NrxMfDE5VIOCP/5gOqSpEIsaAZx9/giszzrXg6PZ7G51U/n88UmlAgYLNQ9wAnII7PJA==", "dev": true }, + "node_modules/assets": { + "resolved": "xblocks_contrib/discussion/assets", + "link": true + }, "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1137,15 +1110,13 @@ "type": "individual", "url": "https://paulmillr.com/funding/" } - ], - "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" }, @@ -1157,7 +1128,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -1172,7 +1142,6 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", - "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -1186,19 +1155,27 @@ } }, "node_modules/backbone": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.6.0.tgz", - "integrity": "sha512-13PUjmsgw/49EowNcQvfG4gmczz1ximTMhUktj0Jfrjth0MVaTxehpU+qYYX4MxnuIuhmvBLC6/ayxuAGnOhbA==", - "license": "MIT", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.6.1.tgz", + "integrity": "sha512-YQzWxOrIgL6BoFnZjThVN99smKYhyEXXFyJJ2lsF1wJLyo4t+QjmkLrH8/fN22FZ4ykF70Xq7PgTugJVR4zS9Q==", "dependencies": { "underscore": ">=1.8.3" } }, + "node_modules/backbone-associations": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/backbone-associations/-/backbone-associations-0.6.2.tgz", + "integrity": "sha512-mE9eNMy+fLbFa8Gf9WNdo3+uwjUIuNoXmGT5NNlZ7Dyu0KP3Y0FHq5OFVxJx+owlbd+olWzUFL3TdhfihcqlSA==", + "dev": true, + "dependencies": { + "backbone": ">=1.0.0", + "underscore": ">=1.4.4" + } + }, "node_modules/backbone.paginator": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/backbone.paginator/-/backbone.paginator-2.0.8.tgz", "integrity": "sha512-8XS2CTbjnwMbJ/3Traa1te2RPecOGbZ9tc52T89pzo6NXlVEJDFnC++dp7CQLBUZpgk3g0veX8mUbEF4wbD2NQ==", - "license": "MIT", "dependencies": { "backbone": "1.1.2 || 1.2.3 || ^1.3.2", "underscore": "^1.8.0" @@ -1208,22 +1185,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", - "dev": true, - "license": "MIT" + "dev": true }, "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, - "license": "MIT" + "dev": true }, "node_modules/base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, - "license": "MIT", "dependencies": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -1242,7 +1216,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -1264,7 +1237,6 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", "integrity": "sha512-rz8L+d/xByiB/vLVftPkyY215fqNrmasrcJsYkVcm4TgJNz+YXKrFaFAWibSaHkiKoSgMDCb+lipOIRQNGYesw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -1273,7 +1245,6 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", - "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" }, @@ -1303,7 +1274,6 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "license": "MIT", "engines": { "node": "*" } @@ -1313,7 +1283,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1323,7 +1292,6 @@ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "file-uri-to-path": "1.0.0" @@ -1339,15 +1307,13 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/body-parser": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", @@ -1367,23 +1333,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "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": { - "ms": "2.0.0" - } - }, - "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/bootstrap": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", @@ -1410,7 +1359,6 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1446,7 +1394,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -1466,7 +1413,6 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dev": true, - "license": "MIT", "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -1476,28 +1422,24 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "dev": true, - "license": "MIT" + "dev": true }, "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==", - "license": "MIT" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "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": { "node": ">= 0.8" } @@ -1507,7 +1449,6 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, - "license": "MIT", "dependencies": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -1527,7 +1468,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -1545,7 +1485,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -1558,7 +1497,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -1580,9 +1518,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001775", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001775.tgz", - "integrity": "sha512-s3Qv7Lht9zbVKE9XoTyRG6wVDCKdtOFIjBGg3+Yhn6JaytuNKPIjBMTMIY1AnOH3seL5mvF+x33oGAyK3hVt3A==", + "version": "1.0.30001770", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", "funding": [ { "type": "opencollective", @@ -1596,14 +1534,12 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1612,12 +1548,22 @@ "node": ">=8" } }, + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", "dev": true, - "license": "MIT", "dependencies": { "anymatch": "^1.3.0", "async-each": "^1.0.0", @@ -1637,7 +1583,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^2.0.0" } @@ -1647,7 +1592,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1657,7 +1601,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^1.0.0" }, @@ -1669,7 +1612,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "license": "MIT", "engines": { "node": ">=6.0" } @@ -1679,7 +1621,6 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, - "license": "MIT", "dependencies": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -1695,7 +1636,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -1708,7 +1648,6 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" @@ -1736,7 +1675,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -1746,21 +1684,11 @@ "node": ">=6" } }, - "node_modules/clone-deep/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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, - "license": "MIT", "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -1773,7 +1701,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1784,14 +1711,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", "bin": { "color-support": "bin.js" } @@ -1800,15 +1725,13 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.1.90" } @@ -1816,14 +1739,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "license": "ISC" + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, "node_modules/component-bind": { "version": "1.0.0", @@ -1835,8 +1756,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/component-inherit": { "version": "0.0.3", @@ -1848,15 +1768,13 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" + "dev": true }, "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": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -1867,29 +1785,11 @@ "node": ">= 0.10.0" } }, - "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": { - "ms": "2.0.0" - } - }, - "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/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": { "node": ">= 0.6" } @@ -1897,15 +1797,13 @@ "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==", - "license": "MIT" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1915,7 +1813,6 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1925,7 +1822,6 @@ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", "dev": true, - "license": "MIT", "dependencies": { "glob-parent": "^6.0.1", "normalize-path": "^3.0.0", @@ -1950,22 +1846,19 @@ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", "dev": true, - "hasInstallScript": true, - "license": "MIT" + "hasInstallScript": true }, "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, - "license": "MIT" + "dev": true }, "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": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1975,44 +1868,19 @@ "node": ">= 8" } }, - "node_modules/cross-spawn/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" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "ms": "2.0.0" } }, "node_modules/decode-uri-component": { @@ -2020,7 +1888,6 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } @@ -2029,7 +1896,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2047,7 +1913,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -2079,7 +1944,6 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2089,7 +1953,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -2099,7 +1962,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", "optional": true, "engines": { "node": ">=8" @@ -2109,15 +1971,13 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, - "license": "MIT", "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -2138,7 +1998,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -2152,7 +2011,6 @@ "version": "1.8.7", "resolved": "https://registry.npmjs.org/edx-ui-toolkit/-/edx-ui-toolkit-1.8.7.tgz", "integrity": "sha512-2GF463dcfKu9u0wFY1u5fX6CUs5V3VQjcTQKt1tLzFzGoK1oGg/lRp0SYsbdcIAzCT8yQAFyrpvAQh1oGuTkiA==", - "license": "Apache-2.0", "dependencies": { "backbone": "1.6.0", "backbone.paginator": "2.0.8", @@ -2169,47 +2027,39 @@ "urijs": "1.19.11" } }, + "node_modules/edx-ui-toolkit/node_modules/backbone": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.6.0.tgz", + "integrity": "sha512-13PUjmsgw/49EowNcQvfG4gmczz1ximTMhUktj0Jfrjth0MVaTxehpU+qYYX4MxnuIuhmvBLC6/ayxuAGnOhbA==", + "dependencies": { + "underscore": ">=1.8.3" + } + }, "node_modules/edx-ui-toolkit/node_modules/jquery": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "license": "MIT" - }, - "node_modules/edx-ui-toolkit/node_modules/requirejs": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.1.22.tgz", - "integrity": "sha512-AhZqN7UrWV8R2d1LfGfznskMJNF0Vb6yStwrCn52UbktJg6y5V1I7RoGRyJtACe86d50PyQn0Iw0jYDKMvc4iA==", - "bin": { - "r.js": "bin/r.js" - }, - "engines": { - "node": ">=0.4.0" - } + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, "node_modules/edx-ui-toolkit/node_modules/underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha512-5WsVTFcH1ut/kkhAaHf4PVgI8c7++GiVcpCGxPouI6ZVjsqPnSDf8h/8HtVqc0t4fzRXwnMK70EcZeAs3PIddg==", - "license": "MIT" + "integrity": "sha512-5WsVTFcH1ut/kkhAaHf4PVgI8c7++GiVcpCGxPouI6ZVjsqPnSDf8h/8HtVqc0t4fzRXwnMK70EcZeAs3PIddg==" }, "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" + "dev": true }, "node_modules/electron-to-chromium": { "version": "1.5.302", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", - "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", - "license": "ISC" + "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "license": "MIT", "engines": { "node": ">= 4" } @@ -2219,7 +2069,6 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2229,7 +2078,6 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.5.tgz", "integrity": "sha512-j1DWIcktw4hRwrv6nWx++5nFH2X64x16MAG2P0Lmi5Dvdfi3I+Jhc7JKJIdAmDJa+5aZ/imHV7dWRPy2Cqjh3A==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "1.3.3", "base64id": "1.0.0", @@ -2244,7 +2092,6 @@ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.6.tgz", "integrity": "sha512-6+rInQu8xU7c0fIF6RC4SRKuHVWPt8Xq0bZYS4lMrTwmhRineOlEMsU3X0zS5mHIvCgJsmpOKEX7DhihGk7j0g==", "dev": true, - "license": "MIT", "dependencies": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", @@ -2265,7 +2112,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", "dev": true, - "license": "MIT", "dependencies": { "ms": "0.7.2" } @@ -2274,15 +2120,13 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/engine.io-parser": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", "integrity": "sha512-3UyTJo+5Jbmr7rd3MosTAApK7BOIo4sjx8dJYSHa3Em5R3A9Y2s9GWu4JFJe6Px0VieJC0hKUA5NBytC+O7k2A==", "dev": true, - "license": "MIT", "dependencies": { "after": "0.8.2", "arraybuffer.slice": "0.0.6", @@ -2297,7 +2141,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", "dev": true, - "license": "MIT", "dependencies": { "ms": "0.7.2" } @@ -2306,14 +2149,12 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/enhanced-resolve": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", - "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", - "license": "MIT", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" @@ -2327,7 +2168,6 @@ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -2343,7 +2183,6 @@ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -2355,7 +2194,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2364,7 +2202,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2372,14 +2209,12 @@ "node_modules/es-module-lexer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "license": "MIT" + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==" }, "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==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -2391,7 +2226,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -2400,14 +2234,12 @@ "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" + "dev": true }, "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==", - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2420,7 +2252,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -2432,7 +2263,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -2441,7 +2271,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -2455,14 +2284,12 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -2472,7 +2299,6 @@ "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", "integrity": "sha512-zOOsEnAhvIxxd0esCNbYG2xerGf46niZ1egS43eV7Fu4t7VIScgPXMcMabCLaPrqkzwvwo6zZipDiX3t0ILF2w==", "dev": true, - "license": "MIT", "dependencies": { "array-slice": "^0.2.3", "array-unique": "^0.2.1", @@ -2487,7 +2313,6 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", "dev": true, - "license": "MIT", "dependencies": { "is-posix-bracket": "^0.1.0" }, @@ -2517,18 +2342,24 @@ "source-map": "0.5.x" } }, + "node_modules/exports-loader/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "license": "MIT", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -2541,7 +2372,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -2554,7 +2384,6 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^1.0.0" }, @@ -2567,7 +2396,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2576,7 +2404,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "license": "MIT", "dependencies": { "ansi-gray": "^0.1.1", "color-support": "^1.1.3", @@ -2590,8 +2417,7 @@ "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" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-uri": { "version": "3.1.0", @@ -2606,15 +2432,13 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ], - "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" } @@ -2624,7 +2448,6 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.0.0" }, @@ -2642,7 +2465,6 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/filename-regex": { @@ -2650,7 +2472,6 @@ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2660,7 +2481,6 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^2.1.0", "isobject": "^2.0.0", @@ -2677,7 +2497,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -2689,15 +2508,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fill-range/node_modules/isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, - "license": "MIT", "dependencies": { "isarray": "1.0.0" }, @@ -2705,12 +2522,23 @@ "node": ">=0.10.0" } }, + "node_modules/fill-range/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fill-range/node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } @@ -2720,7 +2548,6 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -2734,29 +2561,11 @@ "node": ">= 0.8" } }, - "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": { - "ms": "2.0.0" - } - }, - "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": { "ee-first": "1.1.1" }, @@ -2768,7 +2577,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -2780,11 +2588,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-up": { + "node_modules/find-cache-dir/node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -2796,11 +2603,87 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -2816,7 +2699,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -2830,7 +2712,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", "dependencies": { "is-callable": "^1.2.7" }, @@ -2846,7 +2727,6 @@ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2856,7 +2736,6 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", "dev": true, - "license": "MIT", "dependencies": { "for-in": "^1.0.1" }, @@ -2878,7 +2757,6 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, - "license": "MIT", "dependencies": { "map-cache": "^0.2.2" }, @@ -2890,8 +2768,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/fsevents": { "version": "1.2.13", @@ -2900,7 +2777,6 @@ "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2917,7 +2793,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2926,7 +2801,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2935,7 +2809,6 @@ "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==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -2944,7 +2817,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -2968,7 +2840,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -2987,7 +2858,6 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2998,7 +2868,6 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3019,7 +2888,6 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", "dev": true, - "license": "MIT", "dependencies": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" @@ -3033,7 +2901,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^2.0.0" } @@ -3043,7 +2910,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3053,7 +2919,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^1.0.0" }, @@ -3066,7 +2931,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3077,8 +2941,7 @@ "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==", - "license": "BSD-2-Clause" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/globby": { "version": "6.1.0", @@ -3109,7 +2972,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3120,14 +2982,12 @@ "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==", - "license": "ISC" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/gulp-shell": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.8.0.tgz", "integrity": "sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==", - "license": "MIT", "dependencies": { "chalk": "^3.0.0", "fancy-log": "^1.3.3", @@ -3145,7 +3005,6 @@ "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", "integrity": "sha512-k1Umb4/jrBWZbtL+QKSji8qWeoZ7ZTkXdnDXt1wxwBKAFM0//u96wDj43mBIqCIas8rDQMYyrBEvcS8hdGd4Sg==", "dev": true, - "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -3154,14 +3013,12 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==", - "dev": true, - "license": "MIT" + "dev": true }, "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==", - "license": "MIT", "engines": { "node": ">=8" } @@ -3170,7 +3027,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -3182,7 +3038,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3194,7 +3049,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -3210,7 +3064,6 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, - "license": "MIT", "dependencies": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -3225,7 +3078,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -3239,7 +3091,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -3252,7 +3103,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -3265,7 +3115,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, - "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -3277,7 +3126,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -3294,15 +3142,13 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, - "license": "MIT", "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", @@ -3323,7 +3169,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3333,7 +3178,6 @@ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, - "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -3348,7 +3192,6 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -3366,15 +3209,13 @@ "node_modules/immutable": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", - "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", - "license": "MIT" + "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==" }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -3389,90 +3230,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/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" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/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/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" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/imports-loader": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.8.0.tgz", "integrity": "sha512-kXWL7Scp8KQ4552ZcdVTeaQCZSLW+e6nJfp3cwUMB673T7Hr98Xjx5JK+ql7ADlJUvj1JS5O01RLbKoutN5QDQ==", - "license": "MIT", "dependencies": { "loader-utils": "^1.0.2", "source-map": "^0.6.1" @@ -3481,15 +3242,6 @@ "node": ">= 4" } }, - "node_modules/imports-loader/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -3502,7 +3254,6 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3511,15 +3262,13 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "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": { "node": ">=10.13.0" } @@ -3529,7 +3278,6 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -3541,7 +3289,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -3558,7 +3305,6 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^1.0.0" }, @@ -3570,14 +3316,12 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3590,7 +3334,6 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -3606,7 +3349,6 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -3619,7 +3361,6 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dev": true, - "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" @@ -3633,7 +3374,6 @@ "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" }, @@ -3649,7 +3389,6 @@ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3659,7 +3398,6 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", "dev": true, - "license": "MIT", "dependencies": { "is-primitive": "^2.0.0" }, @@ -3672,7 +3410,6 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3682,7 +3419,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "devOptional": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3691,7 +3427,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", @@ -3711,7 +3446,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "devOptional": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -3765,7 +3499,6 @@ "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==", - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -3778,7 +3511,6 @@ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3788,7 +3520,6 @@ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3797,7 +3528,6 @@ "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==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -3815,7 +3545,6 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, @@ -3831,7 +3560,6 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3841,7 +3569,6 @@ "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" }, @@ -3853,15 +3580,13 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/isbinaryfile": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", "dev": true, - "license": "MIT", "dependencies": { "buffer-alloc": "^1.2.0" }, @@ -3873,14 +3598,12 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3890,7 +3613,6 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -3900,7 +3622,6 @@ "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", @@ -3917,7 +3638,6 @@ "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", @@ -3927,12 +3647,23 @@ "node": ">=10" } }, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=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", @@ -3942,22 +3673,34 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps/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==", + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "license": "BSD-3-Clause", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/istanbul-reports": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -3970,13 +3713,12 @@ "version": "2.6.4", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz", "integrity": "sha512-HUYBYi/hlSnCIr8QH9xuDBJUAzSHS0El3HxTomovIQcNxtbNhoOtKwpEZaB/jq3sfW/qyhqwW/VDUtoB2RZ4Tg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/jasmine-jquery": { "version": "2.1.1", "resolved": "git+https://git@github.com/velesin/jasmine-jquery.git#ebad463d592d3fea00c69f26ea18a930e09c7b58", - "integrity": "sha512-sWMb40chzlUOKrHZCGpZoUrVnGm6khfL/fAMKO8vLtUR8yOmWIVVN7MRmep3/DSFhy1Hilon6qAH+UbLZgGG0w==", + "integrity": "sha512-P9aZDwDEAVgAbdHG/ViapRzAUJ6zBSq/4I1lJFluIbrld6Sv6LI+HT2J4dgWqtfaCgIyDnHBHSHiJ/anter7wQ==", "dev": true, "license": "MIT" }, @@ -3984,7 +3726,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -3994,27 +3735,11 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/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==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jquery": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", "integrity": "sha512-lBHj60ezci2u1v2FqnZIraShGgEXq35qCzMv4lITyHGppTnA13rwR0MgwyNJh9TnDs3aXUvd1xjAotfraMHX/Q==", - "deprecated": "This version is deprecated. Please upgrade to the latest version or find support at https://www.herodevs.com/support/jquery-nes.", - "license": "MIT" + "deprecated": "This version is deprecated. Please upgrade to the latest version or find support at https://www.herodevs.com/support/jquery-nes." }, "node_modules/jquery-ui": { "version": "1.14.2", @@ -4028,14 +3753,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -4046,14 +3769,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "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==", - "license": "MIT" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json3": { "version": "3.3.2", @@ -4066,7 +3787,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -4132,7 +3852,6 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-0.13.22.tgz", "integrity": "sha512-A9/7e/IzHUkTcfjnTy5Wzo2P5wPuf7+QZh1JzNdTpYA0AN/vSrxfFjPKtKC3jRYJFZMJ7S1I9L2LItaJS1XMSg==", "dev": true, - "license": "MIT", "dependencies": { "batch": "^0.5.3", "bluebird": "^2.9.27", @@ -4191,7 +3910,6 @@ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, - "license": "MIT", "dependencies": { "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-instrument": "^5.1.0", @@ -4209,18 +3927,31 @@ "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.3.tgz", "integrity": "sha512-LMM2bseebLbYjODBOVt7TCPP9OI2vZIXCavIXhkO9m+10Uj5l7u/SKoeRmYx8FYHTVGZSpk6peX+3BMHC1WwNw==", "dev": true, - "license": "MIT", "dependencies": { "is-wsl": "^2.2.0", "which": "^3.0.0" } }, + "node_modules/karma-firefox-launcher/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/karma-jasmine": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-0.3.8.tgz", "integrity": "sha512-EDNIM4f9FV17XXoF+Rzfw+6uPajd7tOAfEFwe7PIyNVQrM3l1V5OJj2167JDY9KmLDIK/MQZX7tKkK1jVYlfmw==", "dev": true, - "license": "MIT", "peerDependencies": { "jasmine-core": "*" } @@ -4266,12 +3997,17 @@ "karma": ">=0.9" } }, + "node_modules/karma-regex-preprocessor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/karma-regex-preprocessor/-/karma-regex-preprocessor-1.0.1.tgz", + "integrity": "sha512-A+CTjK8VQZ1qZFnDMsuB7//2qWorOVuE2fnnZ2iDhv0H5Ug5Lv0I2FmolPV9KaTgJK1ipXHnSxVrG282fnoe7g==", + "dev": true + }, "node_modules/karma-requirejs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/karma-requirejs/-/karma-requirejs-1.1.0.tgz", "integrity": "sha512-MHTOYKdwwJBkvYid0TaYvBzOnFH3TDtzo6ie5E4o9SaUSXXsfMRLa/whUz6efVIgTxj1xnKYasNn/XwEgJeB/Q==", "dev": true, - "license": "MIT", "peerDependencies": { "karma": ">=0.9", "requirejs": "^2.1.0" @@ -4281,6 +4017,7 @@ "version": "0.0.4-openedx.0", "resolved": "git+ssh://git@github.com/openedx/karma-selenium-webdriver-launcher.git#79cfdc5037eb8585dd3e584875e4343febb6d61f", "dev": true, + "license": "MIT", "dependencies": { "q": "~0.9.6" }, @@ -4294,7 +4031,6 @@ "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz", "integrity": "sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.10" } @@ -4304,7 +4040,6 @@ "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.20.tgz", "integrity": "sha512-pl+KmLNwnu802F/q9cZx5n20FuxA0ebwM3uMuy4Qh+GGfviy4EFK8I5Bl2cWogSRBUC2Fhg5oOsUFVlv/j5tuA==", "dev": true, - "license": "MIT", "dependencies": { "colors": "~0.6.0" }, @@ -4377,15 +4112,19 @@ "lodash": "^4.17.15" } }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/karma/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", "engines": { "node": ">=0.10.0" } @@ -4404,7 +4143,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "license": "MIT", "engines": { "node": ">=6.11.5" }, @@ -4417,7 +4155,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4431,7 +4168,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -4443,45 +4179,38 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "license": "MIT", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "p-locate": "^6.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "license": "MIT" + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" }, "node_modules/lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "deprecated": "This package is deprecated. Use https://socket.dev/npm/package/eta instead.", - "license": "MIT", "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" @@ -4491,7 +4220,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "license": "MIT", "dependencies": { "lodash._reinterpolate": "^3.0.0" } @@ -4502,7 +4230,6 @@ "integrity": "sha512-Cd+klbx7lkiaamEId9/0odHxv/PFHDz2E12kEfd6/CzIOZD084DzysASR/Dot4i1dYPBQKC3r2XIER+dfbLOmw==", "deprecated": "0.x is no longer supported. Please upgrade to 6.x or higher.", "dev": true, - "license": "Apache-2.0", "dependencies": { "readable-stream": "~1.0.2", "semver": "~4.3.3" @@ -4516,7 +4243,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } @@ -4524,14 +4250,12 @@ "node_modules/lolex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", - "integrity": "sha512-YYp8cqz7/8eruZ15L1mzcPkvLYxipfdsWIDESvNdNmQP9o7TsDitRhNuV2xb7aFu2ofZngao1jiVrVZ842x4BQ==", - "license": "BSD-3-Clause" + "integrity": "sha512-YYp8cqz7/8eruZ15L1mzcPkvLYxipfdsWIDESvNdNmQP9o7TsDitRhNuV2xb7aFu2ofZngao1jiVrVZ842x4BQ==" }, "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==", - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -4541,7 +4265,6 @@ "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" }, @@ -4557,7 +4280,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4570,7 +4292,6 @@ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4580,7 +4301,6 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, - "license": "MIT", "dependencies": { "object-visit": "^1.0.0" }, @@ -4592,7 +4312,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4601,15 +4320,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true, - "license": "MIT" + "dev": true }, "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": { "node": ">= 0.6" } @@ -4617,15 +4334,13 @@ "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==", - "license": "MIT" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", "dev": true, - "license": "MIT", "dependencies": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", @@ -4650,7 +4365,6 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", "dev": true, - "license": "MIT", "dependencies": { "expand-range": "^1.8.1", "preserve": "^0.2.0", @@ -4665,7 +4379,6 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^2.1.0" }, @@ -4678,7 +4391,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4688,7 +4400,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^1.0.0" }, @@ -4696,12 +4407,23 @@ "node": ">=0.10.0" } }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/micromatch/node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "license": "MIT", "dependencies": { "remove-trailing-separator": "^1.0.1" }, @@ -4714,7 +4436,6 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -4726,7 +4447,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4735,7 +4455,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -4747,7 +4466,6 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz", "integrity": "sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==", - "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -4764,11 +4482,10 @@ } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "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" }, @@ -4780,15 +4497,13 @@ "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, - "license": "MIT", "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -4802,7 +4517,6 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -4814,7 +4528,6 @@ "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "license": "MIT", "engines": { "node": "*" } @@ -4823,7 +4536,6 @@ "version": "0.5.46", "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz", "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==", - "license": "MIT", "dependencies": { "moment": "^2.29.4" }, @@ -4832,17 +4544,16 @@ } }, "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/nan": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz", "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/nanomatch": { @@ -4850,7 +4561,6 @@ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, - "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -4873,7 +4583,6 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4883,17 +4592,6 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/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" } @@ -4903,7 +4601,6 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha512-qTxkr1RoLw5Pz+1+PTJ/66hWuyi2LEOeOuIDJDlx6JF8x75bmD5C7qXTg2UlX5W9rLfkqKP+r8q6Vy6NWdWrbw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4911,28 +4608,24 @@ "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==", - "license": "MIT" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "license": "MIT", "optional": true }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "license": "MIT" + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" }, "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" } @@ -4942,7 +4635,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", "integrity": "sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4958,7 +4650,6 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, - "license": "MIT", "dependencies": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -4973,7 +4664,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -4986,7 +4676,6 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" @@ -4995,12 +4684,23 @@ "node": ">= 0.4" } }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "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": { "node": ">= 0.4" }, @@ -5013,7 +4713,6 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.0" }, @@ -5026,7 +4725,6 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", "dev": true, - "license": "MIT", "dependencies": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" @@ -5040,7 +4738,6 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -5053,7 +4750,6 @@ "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": { "ee-first": "1.1.1" }, @@ -5066,7 +4762,6 @@ "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" } @@ -5076,7 +4771,6 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", "dev": true, - "license": "MIT/X11", "dependencies": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" @@ -5096,39 +4790,35 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "license": "MIT", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "yocto-queue": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "license": "MIT", + "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, "dependencies": { - "p-limit": "^4.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/p-map": { @@ -5145,7 +4835,6 @@ "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" } @@ -5162,7 +4851,6 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", "dev": true, - "license": "MIT", "dependencies": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", @@ -5178,7 +4866,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5188,7 +4875,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^1.0.0" }, @@ -5200,7 +4886,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -5210,7 +4895,6 @@ "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", "integrity": "sha512-v38ZjVbinlZ2r1Rz06WUZEnGoSRcEGX+roMsiWjHeAe23s2qlQUyfmsPQZvh7d8l0E8AZzTIO/RkUr00LfkSiA==", "dev": true, - "license": "MIT", "dependencies": { "better-assert": "~1.0.0" } @@ -5220,7 +4904,6 @@ "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha512-B3Nrjw2aL7aI4TDujOzfA4NsEc4u1lVcIRE0xesutH8kjeWF70uk+W5cBlIQx04zUH9NTBvuN36Y9xLRPK6Jjw==", "dev": true, - "license": "MIT", "dependencies": { "better-assert": "~1.0.0" } @@ -5230,7 +4913,6 @@ "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha512-ijhdxJu6l5Ru12jF0JvzXVPvsC+VibqeaExlNoMhWN6VQ79PGjkmc7oA4W1lp00sFkNyj0fx6ivPLdV51/UMog==", "dev": true, - "license": "MIT", "dependencies": { "better-assert": "~1.0.0" } @@ -5240,7 +4922,6 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5250,18 +4931,17 @@ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "license": "MIT", + "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, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -5269,7 +4949,6 @@ "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" } @@ -5285,7 +4964,6 @@ "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" } @@ -5294,21 +4972,18 @@ "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, - "license": "MIT" + "dev": 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" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "devOptional": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -5347,25 +5022,21 @@ } }, "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "license": "MIT", + "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, "dependencies": { - "find-up": "^6.3.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "license": "MIT", "dependencies": { "ansi-colors": "^1.0.1", "arr-diff": "^4.0.0", @@ -5380,7 +5051,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5401,7 +5071,6 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5410,7 +5079,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -5420,7 +5088,6 @@ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5433,22 +5100,19 @@ "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, - "license": "MIT" + "dev": true }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/q": { "version": "0.9.7", @@ -5466,7 +5130,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" }, @@ -5482,7 +5145,6 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^4.0.0", "kind-of": "^6.0.0", @@ -5497,17 +5159,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/randomatic/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" } @@ -5516,7 +5167,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -5526,7 +5176,6 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", @@ -5542,7 +5191,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -5555,7 +5203,6 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -5570,7 +5217,6 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5580,7 +5226,6 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5590,7 +5235,6 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "license": "MIT", "dependencies": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -5612,7 +5256,6 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -5620,22 +5263,11 @@ "node": ">=0.10.0" } }, - "node_modules/readdirp/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": { - "ms": "2.0.0" - } - }, "node_modules/readdirp/node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -5654,7 +5286,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -5667,7 +5298,6 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -5680,7 +5310,6 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" @@ -5694,7 +5323,6 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, - "license": "MIT", "dependencies": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -5714,7 +5342,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -5727,7 +5354,6 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -5740,7 +5366,6 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, - "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -5756,7 +5381,6 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -5769,7 +5393,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -5782,7 +5405,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -5794,25 +5416,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/readdirp/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" - } + "dev": true }, "node_modules/readdirp/node_modules/micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -5832,19 +5442,11 @@ "node": ">=0.10.0" } }, - "node_modules/readdirp/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/readdirp/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", @@ -5860,7 +5462,6 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } @@ -5869,15 +5470,13 @@ "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, - "license": "MIT" + "dev": true }, "node_modules/readdirp/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" } @@ -5887,7 +5486,6 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, - "license": "MIT", "dependencies": { "resolve": "^1.20.0" }, @@ -5900,7 +5498,6 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, - "license": "MIT", "dependencies": { "is-equal-shallow": "^0.1.3" }, @@ -5913,7 +5510,6 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, - "license": "MIT", "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -5926,15 +5522,13 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/repeat-element": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5952,18 +5546,15 @@ "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==", - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/requirejs": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.8.tgz", - "integrity": "sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw==", - "license": "MIT", + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.1.22.tgz", + "integrity": "sha512-AhZqN7UrWV8R2d1LfGfznskMJNF0Vb6yStwrCn52UbktJg6y5V1I7RoGRyJtACe86d50PyQn0Iw0jYDKMvc4iA==", "bin": { - "r_js": "bin/r.js", "r.js": "bin/r.js" }, "engines": { @@ -5973,22 +5564,19 @@ "node_modules/requirejs-text": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/requirejs-text/-/requirejs-text-2.0.16.tgz", - "integrity": "sha512-XrzjeTb1pwzIWmkz8qnUiM20gENgiwB+66IciNuziwlaPAJsYQsQPSYyQ1kD4tGKGZxTisIfDbOHk02DpI/76Q==", - "license": "MIT" + "integrity": "sha512-XrzjeTb1pwzIWmkz8qnUiM20gENgiwB+66IciNuziwlaPAJsYQsQPSYyQ1kD4tGKGZxTisIfDbOHk02DpI/76Q==" }, "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, - "license": "MIT" + "dev": true }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", @@ -6009,7 +5597,6 @@ "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" }, @@ -6022,7 +5609,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -6032,15 +5618,13 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12" } @@ -6051,7 +5635,6 @@ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -6076,15 +5659,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, - "license": "MIT", "dependencies": { "ret": "~0.1.10" } @@ -6093,7 +5674,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -6110,8 +5690,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/samsam": { "version": "1.1.2", @@ -6123,7 +5702,6 @@ "version": "1.97.3", "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", - "license": "MIT", "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -6143,7 +5721,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -6158,7 +5735,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", "engines": { "node": ">= 14.18.0" }, @@ -6171,7 +5747,6 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -6248,7 +5823,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -6257,7 +5831,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -6266,7 +5839,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -6284,7 +5856,6 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, - "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -6300,7 +5871,6 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -6319,14 +5889,12 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" + "dev": true }, "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==", - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -6334,21 +5902,11 @@ "node": ">=8" } }, - "node_modules/shallow-clone/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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "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" }, @@ -6361,7 +5919,6 @@ "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" } @@ -6371,7 +5928,6 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -6391,7 +5947,6 @@ "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": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -6408,7 +5963,6 @@ "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": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -6427,7 +5981,6 @@ "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": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -6447,7 +6000,6 @@ "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", "integrity": "sha512-M9rtyQxKfcTTdB64rpPSRaTzOvunb+HHPv/3PxvNPrEDnFSny95Pi6/3VoD471ody0ay0IHyzT3BErfcLXj6NA==", "deprecated": "16.1.1", - "license": "BSD-3-Clause", "dependencies": { "formatio": "1.1.1", "lolex": "1.3.2", @@ -6463,7 +6015,6 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, - "license": "MIT", "dependencies": { "base": "^0.11.1", "debug": "^2.2.0", @@ -6483,7 +6034,6 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, - "license": "MIT", "dependencies": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -6498,7 +6048,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -6511,7 +6060,6 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^3.2.0" }, @@ -6519,14 +6067,16 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "2.0.0" + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon/node_modules/define-property": { @@ -6534,7 +6084,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -6547,7 +6096,6 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -6560,7 +6108,6 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" @@ -6569,19 +6116,20 @@ "node": ">= 0.4" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=0.10.0" + } }, "node_modules/socket.io": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", "integrity": "sha512-rKMY/U7gBmbHjwrljcPHy+uEXZ5973WvO2DrooL643w1R24SZVzsmhvNmJFjYVhAL4y7wrZJJS/znUfp0VWfKw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.3.3", "engine.io": "~1.8.4", @@ -6597,7 +6145,6 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", "integrity": "sha512-zmYvlFJay9skt4yk1MffE9p93HKvQtyy0BLZ5dRM73bOXFJXNZWq8qZVdY456sLaxdK6fHGiZ7glxzqvzwGzkw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.3.3", "socket.io-parser": "2.3.1" @@ -6608,7 +6155,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", "dev": true, - "license": "MIT", "dependencies": { "ms": "0.7.2" } @@ -6617,15 +6163,13 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/socket.io-client": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", "integrity": "sha512-vW9xr9XyTJejFS//7GNZmLTLkUSAcvOSxRXXhrojV+7wboTFB8CuvK1UBCW3NiB2kqyi0h9cTeyD7dXjdUd9jQ==", "dev": true, - "license": "MIT", "dependencies": { "backo2": "1.0.2", "component-bind": "1.0.0", @@ -6645,7 +6189,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", "dev": true, - "license": "MIT", "dependencies": { "ms": "0.7.2" } @@ -6654,15 +6197,13 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/socket.io-parser": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", "integrity": "sha512-j6l4g/+yWQjmy1yByzg1DPFL4vxQw+NwCJatIxni/AE1wfm17FBtIKSWU4Ay+onrJwDxmC4eK4QS/04ZsqYwZQ==", "dev": true, - "license": "MIT", "dependencies": { "component-emitter": "1.1.2", "debug": "2.2.0", @@ -6681,7 +6222,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", "dev": true, - "license": "MIT", "dependencies": { "ms": "0.7.1" } @@ -6697,7 +6237,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", "dev": true, - "license": "MIT", "dependencies": { "ms": "0.7.2" } @@ -6706,8 +6245,7 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/source-list-map": { "version": "2.0.1", @@ -6716,10 +6254,9 @@ "dev": true }, "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } @@ -6728,7 +6265,6 @@ "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" } @@ -6739,7 +6275,6 @@ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, - "license": "MIT", "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -6752,35 +6287,23 @@ "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==", - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "node_modules/source-map-support/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-url": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, - "license": "MIT", "dependencies": { "extend-shallow": "^3.0.0" }, @@ -6793,7 +6316,6 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, - "license": "MIT", "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -6807,7 +6329,6 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, - "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -6820,7 +6341,6 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" @@ -6834,7 +6354,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6843,15 +6362,13 @@ "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/string-replace-loader": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/string-replace-loader/-/string-replace-loader-3.3.0.tgz", "integrity": "sha512-AZ3y7ktSHhd/Ebipczkp6vdfp01d2kQVwFujCGAgmogTB8t4dRhbsRGDKnyZAYqBbIA9QW7+D/IsACVJOOpcBg==", "dev": true, - "license": "MIT", "dependencies": { "schema-utils": "^4" }, @@ -6863,15 +6380,17 @@ } }, "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==", - "license": "MIT", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -6879,7 +6398,6 @@ "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" }, @@ -6891,7 +6409,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", - "license": "MIT", "engines": { "node": ">=6" }, @@ -6904,7 +6421,6 @@ "version": "5.46.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", - "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -6922,7 +6438,6 @@ "version": "5.3.16", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -6956,7 +6471,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "2 || 3" @@ -6966,7 +6480,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6980,7 +6493,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -6989,7 +6501,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6999,7 +6510,6 @@ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, - "license": "MIT", "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" @@ -7016,7 +6526,6 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -7035,7 +6544,6 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -7043,12 +6551,23 @@ "node": ">=0.10.0" } }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, - "license": "MIT", "dependencies": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -7064,7 +6583,6 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -7078,7 +6596,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -7086,12 +6603,23 @@ "node": ">=0.10.0" } }, + "node_modules/to-regex-range/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/to-regex-range/node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } @@ -7101,7 +6629,6 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6" } @@ -7109,15 +6636,13 @@ "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "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": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -7130,20 +6655,17 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/underscore": { "version": "1.13.8", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", - "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", - "license": "MIT" + "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==" }, "node_modules/undici-types": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "license": "MIT" + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==" }, "node_modules/unidragger": { "version": "3.0.1", @@ -7158,7 +6680,6 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, - "license": "MIT", "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -7174,7 +6695,6 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7184,7 +6704,6 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, - "license": "MIT", "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -7198,7 +6717,6 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, - "license": "MIT", "dependencies": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -7213,7 +6731,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, - "license": "MIT", "dependencies": { "isarray": "1.0.0" }, @@ -7226,7 +6743,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7235,8 +6751,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/update-browserslist-db": { "version": "1.2.3", @@ -7256,7 +6771,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -7271,23 +6785,20 @@ "node_modules/urijs": { "version": "1.19.11", "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", - "license": "MIT" + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" }, "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7297,7 +6808,6 @@ "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, - "license": "MIT", "dependencies": { "lru-cache": "4.1.x", "tmp": "0.0.x" @@ -7308,7 +6818,6 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, - "license": "ISC", "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -7318,14 +6827,12 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -7337,15 +6844,13 @@ "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==", - "license": "MIT" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "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": { "node": ">= 0.4.0" } @@ -7359,7 +6864,6 @@ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7368,7 +6872,6 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -7378,10 +6881,9 @@ } }, "node_modules/webpack": { - "version": "5.105.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.3.tgz", - "integrity": "sha512-LLBBA4oLmT7sZdHiYE/PeVuifOxYyE2uL/V+9VQP7YSYdJU7bSf7H8bZRRxW8kEPMkmVjnrXmoR3oejIdX0xbg==", - "license": "MIT", + "version": "5.105.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", + "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -7389,7 +6891,7 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", + "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", @@ -7407,7 +6909,7 @@ "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.16", "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" + "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" @@ -7430,7 +6932,6 @@ "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": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -7476,7 +6977,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, - "license": "MIT", "engines": { "node": ">=14" } @@ -7497,15 +6997,6 @@ "webpack": "^5.75.0" } }, - "node_modules/webpack-manifest-plugin/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, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", @@ -7524,7 +7015,6 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -7538,32 +7028,29 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", - "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "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" }, "bin": { - "node-which": "bin/which.js" + "node-which": "bin/node-which" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 8" } }, "node_modules/which-typed-array": { "version": "1.1.20", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -7583,15 +7070,13 @@ "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "license": "MIT" + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" }, "node_modules/wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -7600,15 +7085,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/ws": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", "dev": true, - "license": "MIT", "dependencies": { "options": ">=0.0.5", "ultron": "1.0.x" @@ -7618,8 +7101,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", "integrity": "sha512-qfR6ovmRRMxNHgUNYI9LRdVofApe/eYrv4ggNOvvCP+pPdEo9Ym93QN4jUceGD6PignBbp2zAzgoE7GibAdq2A==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/xmlbuilder": { "version": "12.0.0", @@ -7642,21 +7124,18 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/yocto-queue": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "license": "MIT", "engines": { "node": ">=12.20" }, @@ -7664,8 +7143,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "xblocks_contrib/discussion/assets": { + "devDependencies": { + "append-prepend-loader": "^1.0.0", + "backbone": "^1", + "backbone-associations": "^0.6", + "backbone.paginator": "^2", + "copy-webpack-plugin": "13.0.1", + "draggabilly": "^3.0.0", + "edx-ui-toolkit": "^1", + "imports-loader": "^0.8", + "jasmine-core": "2.6.4", + "jasmine-jquery": "git+https://git@github.com/velesin/jasmine-jquery.git#ebad463d592d3fea00c69f26ea18a930e09c7b58", + "jquery": "^2", + "karma": "^0.13", + "karma-chrome-launcher": "^3", + "karma-coverage": "^2", + "karma-firefox-launcher": "^2", + "karma-jasmine": "^0.3", + "karma-regex-preprocessor": "^1.0.1", + "karma-sourcemap-loader": "^0.4.0", + "karma-spec-reporter": "0.0.20", + "underscore": "^1", + "webpack": "^5", + "webpack-cli": "^5" + } + }, "xblocks_contrib/problem/assets": { - "name": "problem-xblock", "dependencies": { "babel-loader": "^9", "edx-ui-toolkit": "^1", @@ -7691,7 +7195,6 @@ } }, "xblocks_contrib/video/assets": { - "name": "video-xblock", "version": "1.0.0", "dependencies": { "draggabilly": "^3", diff --git a/setup.py b/setup.py index f158c33d..fb297404 100644 --- a/setup.py +++ b/setup.py @@ -174,9 +174,11 @@ def is_requirement(line): # so edx-platform natively discovers the templates/ directory. "lms.djangoapp": [ "xblocks_contrib_problem_capa = xblocks_contrib.problem.capa.apps:CapaAppConfig", + "xblocks_contrib_discussion = xblocks_contrib.discussion.apps:DiscussionAppConfig", ], "cms.djangoapp": [ "xblocks_contrib_problem_capa = xblocks_contrib.problem.capa.apps:CapaAppConfig", + "xblocks_contrib_discussion = xblocks_contrib.discussion.apps:DiscussionAppConfig", ], }, ) diff --git a/xblocks_contrib/discussion/apps.py b/xblocks_contrib/discussion/apps.py new file mode 100644 index 00000000..3a317cb2 --- /dev/null +++ b/xblocks_contrib/discussion/apps.py @@ -0,0 +1,53 @@ +""" +Django App configuration for the xblocks-contrib Discussion XBlock. +""" + +from django.apps import AppConfig + + +class DiscussionAppConfig(AppConfig): + """ + Configuration for the Discussion XBlock Django application. + + Why are we registering this as a Django App? + -------------------------------------------- + By default, Django's template engine (specifically the `app_directories` loader) + only discovers `templates/` folders that belong to an app listed in `INSTALLED_APPS`. + + Since XBlocks are inherently isolated components, they are not typically added + to the LMS/CMS global `INSTALLED_APPS`. As a result, any standard Django templates + (.html files) inside this block would be invisible to the core Open edX platform + when it attempts to route or render them natively. + + Instead of forcing repository consumers to manually modify `lms/envs/common.py` + or use deployment-specific Tutor plugins to append to `TEMPLATES['DIRS']`, we + leverage the Open edX Django App Plugin Framework (`plugin_app`). This hook + dynamically injects this module into `INSTALLED_APPS` at runtime. + + This automatically exposes our `templates/` directory to the platform natively + without manual intervention. + + References: + + - Open edX Plugin App Framework: + https://docs.openedx.org/projects/edx-django-utils/en/latest/plugins/how_tos/how_to_create_a_plugin_app.html + + - Django App Directories Loader: + https://docs.djangoproject.com/en/stable/ref/templates/api/#django.template.loaders.app_directories.Loader + + """ + + name = "xblocks_contrib.discussion" + label = "xblocks_contrib_discussion" + verbose_name = "XBlocks Contrib - Discussion Templates" + + plugin_app = { + "settings_config": { + "lms.djangoapp": { + "default": "", + }, + "cms.djangoapp": { + "default": "", + }, + }, + } diff --git a/xblocks_contrib/discussion/assets/jasmine.common.conf.js b/xblocks_contrib/discussion/assets/jasmine.common.conf.js new file mode 100644 index 00000000..398f544b --- /dev/null +++ b/xblocks_contrib/discussion/assets/jasmine.common.conf.js @@ -0,0 +1,12 @@ +/* eslint-env node */ + +'use strict'; + +// By default, fixtures are loaded from spec/javascripts/fixtures but in karma everything gets served from /base +jasmine.getFixtures().fixturesPath = '/base/static/spec/fixtures/'; + +// https://github.com/edx/js-test-tool/blob/master/js_test_tool/templates/jasmine_test_runner.html#L10 +// Stub out modal dialog alerts, which will prevent +// us from accessing the test results in the DOM +window.confirm = function() { return true; }; +window.alert = function() { }; diff --git a/xblocks_contrib/discussion/assets/karma.conf.js b/xblocks_contrib/discussion/assets/karma.conf.js new file mode 100644 index 00000000..af0577b3 --- /dev/null +++ b/xblocks_contrib/discussion/assets/karma.conf.js @@ -0,0 +1,112 @@ +/* eslint-env node */ +'use strict'; + +const path = require('path'); + +const discussionRoot = __dirname; +const uiToolkitRoot = path.dirname(require.resolve('edx-ui-toolkit/package.json')); + +module.exports = function (config) { + config.set({ + basePath: discussionRoot, + + frameworks: ['jasmine'], + + files: [ + { pattern: require.resolve('jquery/dist/jquery.js'), included: true }, + { pattern: require.resolve('jasmine-jquery/lib/jasmine-jquery.js'), included: true }, + { pattern: require.resolve('underscore/underscore.js'), included: true }, + { pattern: require.resolve('backbone/backbone.js'), included: true }, + { pattern: path.join(uiToolkitRoot, 'src/js/utils/global-loader.js'), included: true }, + { pattern: path.join(uiToolkitRoot, 'src/js/utils/string-utils.js'), included: true }, + { pattern: path.join(uiToolkitRoot, 'src/js/utils/html-utils.js'), included: true }, + { pattern: 'static/spec/spec_helpers/i18n.js', included: true }, + { pattern: 'jasmine.common.conf.js', included: true }, + { pattern: require.resolve('draggabilly/dist/draggabilly.pkgd.js'), included: true }, + { pattern: 'static/js/vendor/URI.min.js', included: true }, + { pattern: 'static/js/vendor/jquery.leanModal.js', included: true }, + { pattern: 'static/js/vendor/Markdown.Converter.js', included: true }, + { pattern: 'static/js/vendor/Markdown.Sanitizer.js', included: true }, + { pattern: 'static/js/vendor/Markdown.Editor.js', included: true }, + { pattern: 'static/js/vendor/jquery.ajaxfileupload.js', included: true }, + { pattern: 'static/js/vendor/jquery.timeago.js', included: true }, + { pattern: 'static/js/vendor/jquery.truncate.js', included: true }, + { pattern: 'static/js/vendor/split.js', included: true }, + { pattern: 'static/js/mathjax_accessible.js', included: true }, + { pattern: 'static/js/mathjax_delay_renderer.js', included: true }, + { pattern: 'static/js/common/utils.js', included: true }, + { pattern: 'static/js/common/models/*.js', included: true }, + { pattern: 'static/js/common/content.js', included: true }, + { pattern: 'static/js/common/discussion.js', included: true }, + { pattern: 'static/js/common/mathjax_include.js', included: true }, + { pattern: 'static/js/customwmd.js', included: true }, + { pattern: 'static/js/common/views/*.js', included: true }, + { pattern: 'static/spec/spec_helpers/discussion_spec_helper.js', included: true }, + { pattern: 'static/spec/view/discussion_view_spec_helper.js', included: true }, + { pattern: 'static/spec/fixtures/**/*', included: false, served: true }, + { pattern: 'static/spec/**/*_spec.js', included: true } + ], + + exclude: [ + '**/public/**' + ], + + preprocessors: { + 'static/js/**/*.js': ['sourcemap'], + 'static/spec/view/discussion_thread_view_spec.js': ['regex', 'sourcemap'], + 'static/spec/**/*.js': ['sourcemap'] + }, + + regexPreprocessor: { + rules: [ + { + fileName: 'discussion_thread_view_spec.js', + replacement: [ + { replace: /return function\(\) \{\s*/g, with: '' }, + { replace: / \};\s*\n \}\);\s*\n describe\('thread responses'/g, with: ' });\n describe(\'thread responses\'' } + ] + } + ] + }, + + plugins: [ + 'karma-regex-preprocessor', + 'karma-jasmine', + 'karma-chrome-launcher', + 'karma-firefox-launcher', + 'karma-sourcemap-loader', + 'karma-coverage', + require('karma-spec-reporter') + ], + + reporters: ['spec', 'coverage'], + + coverageReporter: { + dir: 'coverage/', + reporters: [ + { type: 'html', subdir: 'report-html' }, + { type: 'lcov', subdir: 'report-lcov' } + ] + }, + + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: false, + browsers: ['FirefoxNoUpdates'], + + customLaunchers: { + FirefoxNoUpdates: { + base: 'Firefox', + prefs: { + 'app.update.auto': false, + 'app.update.enabled': false + } + } + }, + + singleRun: true, + concurrency: Infinity, + client: { captureConsole: true } + }); +}; diff --git a/xblocks_contrib/discussion/assets/package.json b/xblocks_contrib/discussion/assets/package.json new file mode 100644 index 00000000..4a9a8d80 --- /dev/null +++ b/xblocks_contrib/discussion/assets/package.json @@ -0,0 +1,33 @@ +{ + "private": true, + "scripts": { + "build": "webpack --config webpack.prod.config.js", + "build-dev": "webpack --config webpack.dev.config.js", + "test": "karma start karma.conf.js", + "test-ci": "xvfb-run --auto-servernum karma start karma.conf.js" + }, + "devDependencies": { + "backbone": "^1", + "backbone-associations": "^0.6", + "backbone.paginator": "^2", + "append-prepend-loader": "^1.0.0", + "copy-webpack-plugin": "13.0.1", + "imports-loader": "^0.8", + "webpack": "^5", + "webpack-cli": "^5", + "draggabilly": "^3.0.0", + "edx-ui-toolkit": "^1", + "jasmine-core": "2.6.4", + "jasmine-jquery": "git+https://git@github.com/velesin/jasmine-jquery.git#ebad463d592d3fea00c69f26ea18a930e09c7b58", + "jquery": "^2", + "karma": "^0.13", + "karma-chrome-launcher": "^3", + "karma-coverage": "^2", + "karma-firefox-launcher": "^2", + "karma-jasmine": "^0.3", + "karma-regex-preprocessor": "^1.0.1", + "karma-sourcemap-loader": "^0.4.0", + "karma-spec-reporter": "0.0.20", + "underscore": "^1" + } +} diff --git a/xblocks_contrib/discussion/assets/static/css/inline-discussion-rtl.css b/xblocks_contrib/discussion/assets/static/css/inline-discussion-rtl.css new file mode 100644 index 00000000..713be612 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/css/inline-discussion-rtl.css @@ -0,0 +1,4572 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +.align-baseline { + vertical-align: baseline !important; } + +.align-top { + vertical-align: top !important; } + +.align-middle { + vertical-align: middle !important; } + +.align-bottom { + vertical-align: bottom !important; } + +.align-text-bottom { + vertical-align: text-bottom !important; } + +.align-text-top { + vertical-align: text-top !important; } + +.bg-primary { + background-color: #0075b4 !important; } + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #005481 !important; } + +.bg-secondary { + background-color: #313131 !important; } + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #181818 !important; } + +.bg-success { + background-color: #008100 !important; } + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #004e00 !important; } + +.bg-info { + background-color: #17a2b8 !important; } + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; } + +.bg-warning { + background-color: #e2c01f !important; } + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #b69b18 !important; } + +.bg-danger { + background-color: #b20610 !important; } + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #81040c !important; } + +.bg-light { + background-color: #e7e7e7 !important; } + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #cecece !important; } + +.bg-dark { + background-color: #313131 !important; } + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #181818 !important; } + +.bg-inverse { + background-color: #fff !important; } + +a.bg-inverse:hover, a.bg-inverse:focus, +button.bg-inverse:hover, +button.bg-inverse:focus { + background-color: #e6e6e6 !important; } + +.bg-disabled { + background-color: #767676 !important; } + +a.bg-disabled:hover, a.bg-disabled:focus, +button.bg-disabled:hover, +button.bg-disabled:focus { + background-color: #5d5d5d !important; } + +.bg-purchase { + background-color: #008100 !important; } + +a.bg-purchase:hover, a.bg-purchase:focus, +button.bg-purchase:hover, +button.bg-purchase:focus { + background-color: #004e00 !important; } + +.bg-lightest { + background-color: #f5f5f5 !important; } + +a.bg-lightest:hover, a.bg-lightest:focus, +button.bg-lightest:hover, +button.bg-lightest:focus { + background-color: gainsboro !important; } + +.bg-darker { + background-color: #111 !important; } + +a.bg-darker:hover, a.bg-darker:focus, +button.bg-darker:hover, +button.bg-darker:focus { + background-color: black !important; } + +.bg-darkest { + background-color: #000 !important; } + +a.bg-darkest:hover, a.bg-darkest:focus, +button.bg-darkest:hover, +button.bg-darkest:focus { + background-color: black !important; } + +.bg-white { + background-color: #fff !important; } + +.bg-transparent { + background-color: transparent !important; } + +.border { + border: 1px solid #e7e7e7 !important; } + +.border-top { + border-top: 1px solid #e7e7e7 !important; } + +.border-right { + border-right: 1px solid #e7e7e7 !important; } + +.border-bottom { + border-bottom: 1px solid #e7e7e7 !important; } + +.border-left { + border-left: 1px solid #e7e7e7 !important; } + +.border-0 { + border: 0 !important; } + +.border-top-0 { + border-top: 0 !important; } + +.border-right-0 { + border-right: 0 !important; } + +.border-bottom-0 { + border-bottom: 0 !important; } + +.border-left-0 { + border-left: 0 !important; } + +.border-primary { + border-color: #0075b4 !important; } + +.border-secondary { + border-color: #313131 !important; } + +.border-success { + border-color: #008100 !important; } + +.border-info { + border-color: #17a2b8 !important; } + +.border-warning { + border-color: #e2c01f !important; } + +.border-danger { + border-color: #b20610 !important; } + +.border-light { + border-color: #e7e7e7 !important; } + +.border-dark { + border-color: #313131 !important; } + +.border-inverse { + border-color: #fff !important; } + +.border-disabled { + border-color: #767676 !important; } + +.border-purchase { + border-color: #008100 !important; } + +.border-lightest { + border-color: #f5f5f5 !important; } + +.border-darker { + border-color: #111 !important; } + +.border-darkest { + border-color: #000 !important; } + +.border-white { + border-color: #fff !important; } + +.rounded { + border-radius: 0.1875rem !important; } + +.rounded-top { + border-top-left-radius: 0.1875rem !important; + border-top-right-radius: 0.1875rem !important; } + +.rounded-right { + border-top-right-radius: 0.1875rem !important; + border-bottom-right-radius: 0.1875rem !important; } + +.rounded-bottom { + border-bottom-right-radius: 0.1875rem !important; + border-bottom-left-radius: 0.1875rem !important; } + +.rounded-left { + border-top-left-radius: 0.1875rem !important; + border-bottom-left-radius: 0.1875rem !important; } + +.rounded-circle { + border-radius: 50% !important; } + +.rounded-0 { + border-radius: 0 !important; } + +.clearfix:after { + content: ""; + display: table; + clear: both; } + +.d-none { + display: none !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-block { + display: block !important; } + +.d-table { + display: table !important; } + +.d-table-row { + display: table-row !important; } + +.d-table-cell { + display: table-cell !important; } + +.d-flex { + display: flex !important; } + +.d-inline-flex { + display: inline-flex !important; } + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; } + .d-sm-inline { + display: inline !important; } + .d-sm-inline-block { + display: inline-block !important; } + .d-sm-block { + display: block !important; } + .d-sm-table { + display: table !important; } + .d-sm-table-row { + display: table-row !important; } + .d-sm-table-cell { + display: table-cell !important; } + .d-sm-flex { + display: flex !important; } + .d-sm-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 768px) { + .d-md-none { + display: none !important; } + .d-md-inline { + display: inline !important; } + .d-md-inline-block { + display: inline-block !important; } + .d-md-block { + display: block !important; } + .d-md-table { + display: table !important; } + .d-md-table-row { + display: table-row !important; } + .d-md-table-cell { + display: table-cell !important; } + .d-md-flex { + display: flex !important; } + .d-md-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; } + .d-lg-inline { + display: inline !important; } + .d-lg-inline-block { + display: inline-block !important; } + .d-lg-block { + display: block !important; } + .d-lg-table { + display: table !important; } + .d-lg-table-row { + display: table-row !important; } + .d-lg-table-cell { + display: table-cell !important; } + .d-lg-flex { + display: flex !important; } + .d-lg-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; } + .d-xl-inline { + display: inline !important; } + .d-xl-inline-block { + display: inline-block !important; } + .d-xl-block { + display: block !important; } + .d-xl-table { + display: table !important; } + .d-xl-table-row { + display: table-row !important; } + .d-xl-table-cell { + display: table-cell !important; } + .d-xl-flex { + display: flex !important; } + .d-xl-inline-flex { + display: inline-flex !important; } } + +@media print { + .d-print-none { + display: none !important; } + .d-print-inline { + display: inline !important; } + .d-print-inline-block { + display: inline-block !important; } + .d-print-block { + display: block !important; } + .d-print-table { + display: table !important; } + .d-print-table-row { + display: table-row !important; } + .d-print-table-cell { + display: table-cell !important; } + .d-print-flex { + display: flex !important; } + .d-print-inline-flex { + display: inline-flex !important; } } + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; } + .embed-responsive::before { + display: block; + content: ""; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; } + +.embed-responsive-21by9::before { + padding-top: 42.85714%; } + +.embed-responsive-16by9::before { + padding-top: 56.25%; } + +.embed-responsive-4by3::before { + padding-top: 75%; } + +.embed-responsive-1by1::before { + padding-top: 100%; } + +.flex-row { + flex-direction: row !important; } + +.flex-column { + flex-direction: column !important; } + +.flex-row-reverse { + flex-direction: row-reverse !important; } + +.flex-column-reverse { + flex-direction: column-reverse !important; } + +.flex-wrap { + flex-wrap: wrap !important; } + +.flex-nowrap { + flex-wrap: nowrap !important; } + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; } + +.justify-content-start { + justify-content: flex-start !important; } + +.justify-content-end { + justify-content: flex-end !important; } + +.justify-content-center { + justify-content: center !important; } + +.justify-content-between { + justify-content: space-between !important; } + +.justify-content-around { + justify-content: space-around !important; } + +.align-items-start { + align-items: flex-start !important; } + +.align-items-end { + align-items: flex-end !important; } + +.align-items-center { + align-items: center !important; } + +.align-items-baseline { + align-items: baseline !important; } + +.align-items-stretch { + align-items: stretch !important; } + +.align-content-start { + align-content: flex-start !important; } + +.align-content-end { + align-content: flex-end !important; } + +.align-content-center { + align-content: center !important; } + +.align-content-between { + align-content: space-between !important; } + +.align-content-around { + align-content: space-around !important; } + +.align-content-stretch { + align-content: stretch !important; } + +.align-self-auto { + align-self: auto !important; } + +.align-self-start { + align-self: flex-start !important; } + +.align-self-end { + align-self: flex-end !important; } + +.align-self-center { + align-self: center !important; } + +.align-self-baseline { + align-self: baseline !important; } + +.align-self-stretch { + align-self: stretch !important; } + +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; } + .flex-sm-column { + flex-direction: column !important; } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; } + .flex-sm-wrap { + flex-wrap: wrap !important; } + .flex-sm-nowrap { + flex-wrap: nowrap !important; } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-sm-start { + justify-content: flex-start !important; } + .justify-content-sm-end { + justify-content: flex-end !important; } + .justify-content-sm-center { + justify-content: center !important; } + .justify-content-sm-between { + justify-content: space-between !important; } + .justify-content-sm-around { + justify-content: space-around !important; } + .align-items-sm-start { + align-items: flex-start !important; } + .align-items-sm-end { + align-items: flex-end !important; } + .align-items-sm-center { + align-items: center !important; } + .align-items-sm-baseline { + align-items: baseline !important; } + .align-items-sm-stretch { + align-items: stretch !important; } + .align-content-sm-start { + align-content: flex-start !important; } + .align-content-sm-end { + align-content: flex-end !important; } + .align-content-sm-center { + align-content: center !important; } + .align-content-sm-between { + align-content: space-between !important; } + .align-content-sm-around { + align-content: space-around !important; } + .align-content-sm-stretch { + align-content: stretch !important; } + .align-self-sm-auto { + align-self: auto !important; } + .align-self-sm-start { + align-self: flex-start !important; } + .align-self-sm-end { + align-self: flex-end !important; } + .align-self-sm-center { + align-self: center !important; } + .align-self-sm-baseline { + align-self: baseline !important; } + .align-self-sm-stretch { + align-self: stretch !important; } } + +@media (min-width: 768px) { + .flex-md-row { + flex-direction: row !important; } + .flex-md-column { + flex-direction: column !important; } + .flex-md-row-reverse { + flex-direction: row-reverse !important; } + .flex-md-column-reverse { + flex-direction: column-reverse !important; } + .flex-md-wrap { + flex-wrap: wrap !important; } + .flex-md-nowrap { + flex-wrap: nowrap !important; } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-md-start { + justify-content: flex-start !important; } + .justify-content-md-end { + justify-content: flex-end !important; } + .justify-content-md-center { + justify-content: center !important; } + .justify-content-md-between { + justify-content: space-between !important; } + .justify-content-md-around { + justify-content: space-around !important; } + .align-items-md-start { + align-items: flex-start !important; } + .align-items-md-end { + align-items: flex-end !important; } + .align-items-md-center { + align-items: center !important; } + .align-items-md-baseline { + align-items: baseline !important; } + .align-items-md-stretch { + align-items: stretch !important; } + .align-content-md-start { + align-content: flex-start !important; } + .align-content-md-end { + align-content: flex-end !important; } + .align-content-md-center { + align-content: center !important; } + .align-content-md-between { + align-content: space-between !important; } + .align-content-md-around { + align-content: space-around !important; } + .align-content-md-stretch { + align-content: stretch !important; } + .align-self-md-auto { + align-self: auto !important; } + .align-self-md-start { + align-self: flex-start !important; } + .align-self-md-end { + align-self: flex-end !important; } + .align-self-md-center { + align-self: center !important; } + .align-self-md-baseline { + align-self: baseline !important; } + .align-self-md-stretch { + align-self: stretch !important; } } + +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; } + .flex-lg-column { + flex-direction: column !important; } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; } + .flex-lg-wrap { + flex-wrap: wrap !important; } + .flex-lg-nowrap { + flex-wrap: nowrap !important; } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-lg-start { + justify-content: flex-start !important; } + .justify-content-lg-end { + justify-content: flex-end !important; } + .justify-content-lg-center { + justify-content: center !important; } + .justify-content-lg-between { + justify-content: space-between !important; } + .justify-content-lg-around { + justify-content: space-around !important; } + .align-items-lg-start { + align-items: flex-start !important; } + .align-items-lg-end { + align-items: flex-end !important; } + .align-items-lg-center { + align-items: center !important; } + .align-items-lg-baseline { + align-items: baseline !important; } + .align-items-lg-stretch { + align-items: stretch !important; } + .align-content-lg-start { + align-content: flex-start !important; } + .align-content-lg-end { + align-content: flex-end !important; } + .align-content-lg-center { + align-content: center !important; } + .align-content-lg-between { + align-content: space-between !important; } + .align-content-lg-around { + align-content: space-around !important; } + .align-content-lg-stretch { + align-content: stretch !important; } + .align-self-lg-auto { + align-self: auto !important; } + .align-self-lg-start { + align-self: flex-start !important; } + .align-self-lg-end { + align-self: flex-end !important; } + .align-self-lg-center { + align-self: center !important; } + .align-self-lg-baseline { + align-self: baseline !important; } + .align-self-lg-stretch { + align-self: stretch !important; } } + +@media (min-width: 1200px) { + .flex-xl-row { + flex-direction: row !important; } + .flex-xl-column { + flex-direction: column !important; } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; } + .flex-xl-wrap { + flex-wrap: wrap !important; } + .flex-xl-nowrap { + flex-wrap: nowrap !important; } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-xl-start { + justify-content: flex-start !important; } + .justify-content-xl-end { + justify-content: flex-end !important; } + .justify-content-xl-center { + justify-content: center !important; } + .justify-content-xl-between { + justify-content: space-between !important; } + .justify-content-xl-around { + justify-content: space-around !important; } + .align-items-xl-start { + align-items: flex-start !important; } + .align-items-xl-end { + align-items: flex-end !important; } + .align-items-xl-center { + align-items: center !important; } + .align-items-xl-baseline { + align-items: baseline !important; } + .align-items-xl-stretch { + align-items: stretch !important; } + .align-content-xl-start { + align-content: flex-start !important; } + .align-content-xl-end { + align-content: flex-end !important; } + .align-content-xl-center { + align-content: center !important; } + .align-content-xl-between { + align-content: space-between !important; } + .align-content-xl-around { + align-content: space-around !important; } + .align-content-xl-stretch { + align-content: stretch !important; } + .align-self-xl-auto { + align-self: auto !important; } + .align-self-xl-start { + align-self: flex-start !important; } + .align-self-xl-end { + align-self: flex-end !important; } + .align-self-xl-center { + align-self: center !important; } + .align-self-xl-baseline { + align-self: baseline !important; } + .align-self-xl-stretch { + align-self: stretch !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-none { + float: none !important; } + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; } + .float-sm-right { + float: right !important; } + .float-sm-none { + float: none !important; } } + +@media (min-width: 768px) { + .float-md-left { + float: left !important; } + .float-md-right { + float: right !important; } + .float-md-none { + float: none !important; } } + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; } + .float-lg-right { + float: right !important; } + .float-lg-none { + float: none !important; } } + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; } + .float-xl-right { + float: right !important; } + .float-xl-none { + float: none !important; } } + +.position-static { + position: static !important; } + +.position-relative { + position: relative !important; } + +.position-absolute { + position: absolute !important; } + +.position-fixed { + position: fixed !important; } + +.position-sticky { + position: sticky !important; } + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; } + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; } + +@supports (position: sticky) { + .sticky-top { + position: sticky; + top: 0; + z-index: 1020; } } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + clip-path: inset(50%); + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; + clip-path: none; } + +.w-25 { + width: 25% !important; } + +.w-50 { + width: 50% !important; } + +.w-75 { + width: 75% !important; } + +.w-100 { + width: 100% !important; } + +.h-25 { + height: 25% !important; } + +.h-50 { + height: 50% !important; } + +.h-75 { + height: 75% !important; } + +.h-100 { + height: 100% !important; } + +.mw-100 { + max-width: 100% !important; } + +.mh-100 { + max-height: 100% !important; } + +.m-0 { + margin: 0 !important; } + +.mt-0, +.my-0 { + margin-top: 0 !important; } + +.mr-0, +.mx-0 { + margin-right: 0 !important; } + +.mb-0, +.my-0 { + margin-bottom: 0 !important; } + +.ml-0, +.mx-0 { + margin-left: 0 !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; } + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; } + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; } + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; } + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; } + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; } + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; } + +.m-3 { + margin: 1rem !important; } + +.mt-3, +.my-3 { + margin-top: 1rem !important; } + +.mr-3, +.mx-3 { + margin-right: 1rem !important; } + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; } + +.ml-3, +.mx-3 { + margin-left: 1rem !important; } + +.m-4 { + margin: 1.5rem !important; } + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; } + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; } + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; } + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; } + +.m-5 { + margin: 3rem !important; } + +.mt-5, +.my-5 { + margin-top: 3rem !important; } + +.mr-5, +.mx-5 { + margin-right: 3rem !important; } + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; } + +.ml-5, +.mx-5 { + margin-left: 3rem !important; } + +.p-0 { + padding: 0 !important; } + +.pt-0, +.py-0 { + padding-top: 0 !important; } + +.pr-0, +.px-0 { + padding-right: 0 !important; } + +.pb-0, +.py-0 { + padding-bottom: 0 !important; } + +.pl-0, +.px-0 { + padding-left: 0 !important; } + +.p-1 { + padding: 0.25rem !important; } + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; } + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; } + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; } + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; } + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; } + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; } + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; } + +.p-3 { + padding: 1rem !important; } + +.pt-3, +.py-3 { + padding-top: 1rem !important; } + +.pr-3, +.px-3 { + padding-right: 1rem !important; } + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; } + +.pl-3, +.px-3 { + padding-left: 1rem !important; } + +.p-4 { + padding: 1.5rem !important; } + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; } + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; } + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; } + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; } + +.p-5 { + padding: 3rem !important; } + +.pt-5, +.py-5 { + padding-top: 3rem !important; } + +.pr-5, +.px-5 { + padding-right: 3rem !important; } + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; } + +.pl-5, +.px-5 { + padding-left: 3rem !important; } + +.m-auto { + margin: auto !important; } + +.mt-auto, +.my-auto { + margin-top: auto !important; } + +.mr-auto, +.mx-auto { + margin-right: auto !important; } + +.mb-auto, +.my-auto { + margin-bottom: auto !important; } + +.ml-auto, +.mx-auto { + margin-left: auto !important; } + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; } + .m-sm-1 { + margin: 0.25rem !important; } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; } + .m-sm-2 { + margin: 0.5rem !important; } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; } + .m-sm-3 { + margin: 1rem !important; } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; } + .m-sm-4 { + margin: 1.5rem !important; } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; } + .m-sm-5 { + margin: 3rem !important; } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; } + .p-sm-0 { + padding: 0 !important; } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; } + .p-sm-1 { + padding: 0.25rem !important; } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; } + .p-sm-2 { + padding: 0.5rem !important; } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; } + .p-sm-3 { + padding: 1rem !important; } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; } + .p-sm-4 { + padding: 1.5rem !important; } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; } + .p-sm-5 { + padding: 3rem !important; } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; } + .m-sm-auto { + margin: auto !important; } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; } } + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; } + .m-md-1 { + margin: 0.25rem !important; } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; } + .m-md-2 { + margin: 0.5rem !important; } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; } + .m-md-3 { + margin: 1rem !important; } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; } + .m-md-4 { + margin: 1.5rem !important; } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; } + .m-md-5 { + margin: 3rem !important; } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; } + .p-md-0 { + padding: 0 !important; } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; } + .p-md-1 { + padding: 0.25rem !important; } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; } + .p-md-2 { + padding: 0.5rem !important; } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; } + .p-md-3 { + padding: 1rem !important; } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; } + .p-md-4 { + padding: 1.5rem !important; } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; } + .p-md-5 { + padding: 3rem !important; } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; } + .m-md-auto { + margin: auto !important; } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; } } + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; } + .m-lg-1 { + margin: 0.25rem !important; } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; } + .m-lg-2 { + margin: 0.5rem !important; } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; } + .m-lg-3 { + margin: 1rem !important; } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; } + .m-lg-4 { + margin: 1.5rem !important; } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; } + .m-lg-5 { + margin: 3rem !important; } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; } + .p-lg-0 { + padding: 0 !important; } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; } + .p-lg-1 { + padding: 0.25rem !important; } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; } + .p-lg-2 { + padding: 0.5rem !important; } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; } + .p-lg-3 { + padding: 1rem !important; } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; } + .p-lg-4 { + padding: 1.5rem !important; } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; } + .p-lg-5 { + padding: 3rem !important; } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; } + .m-lg-auto { + margin: auto !important; } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; } } + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; } + .m-xl-1 { + margin: 0.25rem !important; } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; } + .m-xl-2 { + margin: 0.5rem !important; } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; } + .m-xl-3 { + margin: 1rem !important; } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; } + .m-xl-4 { + margin: 1.5rem !important; } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; } + .m-xl-5 { + margin: 3rem !important; } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; } + .p-xl-0 { + padding: 0 !important; } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; } + .p-xl-1 { + padding: 0.25rem !important; } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; } + .p-xl-2 { + padding: 0.5rem !important; } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; } + .p-xl-3 { + padding: 1rem !important; } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; } + .p-xl-4 { + padding: 1.5rem !important; } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; } + .p-xl-5 { + padding: 3rem !important; } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; } + .m-xl-auto { + margin: auto !important; } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; } } + +.text-justify { + text-align: justify !important; } + +.text-nowrap { + white-space: nowrap !important; } + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; } + .text-sm-right { + text-align: right !important; } + .text-sm-center { + text-align: center !important; } } + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; } + .text-md-right { + text-align: right !important; } + .text-md-center { + text-align: center !important; } } + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; } + .text-lg-right { + text-align: right !important; } + .text-lg-center { + text-align: center !important; } } + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; } + .text-xl-right { + text-align: right !important; } + .text-xl-center { + text-align: center !important; } } + +.text-lowercase { + text-transform: lowercase !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.text-capitalize { + text-transform: capitalize !important; } + +.font-weight-light { + font-weight: 300 !important; } + +.font-weight-normal { + font-weight: 400 !important; } + +.font-weight-bold { + font-weight: 700 !important; } + +.font-italic { + font-style: italic !important; } + +.text-white { + color: #fff !important; } + +.text-primary { + color: #0075b4 !important; } + +a.text-primary:hover, a.text-primary:focus { + color: #005481 !important; } + +.text-secondary { + color: #313131 !important; } + +a.text-secondary:hover, a.text-secondary:focus { + color: #181818 !important; } + +.text-success { + color: #008100 !important; } + +a.text-success:hover, a.text-success:focus { + color: #004e00 !important; } + +.text-info { + color: #17a2b8 !important; } + +a.text-info:hover, a.text-info:focus { + color: #117a8b !important; } + +.text-warning { + color: #e2c01f !important; } + +a.text-warning:hover, a.text-warning:focus { + color: #b69b18 !important; } + +.text-danger { + color: #b20610 !important; } + +a.text-danger:hover, a.text-danger:focus { + color: #81040c !important; } + +.text-light { + color: #e7e7e7 !important; } + +a.text-light:hover, a.text-light:focus { + color: #cecece !important; } + +.text-dark { + color: #313131 !important; } + +a.text-dark:hover, a.text-dark:focus { + color: #181818 !important; } + +.text-inverse { + color: #fff !important; } + +a.text-inverse:hover, a.text-inverse:focus { + color: #e6e6e6 !important; } + +.text-disabled { + color: #767676 !important; } + +a.text-disabled:hover, a.text-disabled:focus { + color: #5d5d5d !important; } + +.text-purchase { + color: #008100 !important; } + +a.text-purchase:hover, a.text-purchase:focus { + color: #004e00 !important; } + +.text-lightest { + color: #f5f5f5 !important; } + +a.text-lightest:hover, a.text-lightest:focus { + color: gainsboro !important; } + +.text-darker { + color: #111 !important; } + +a.text-darker:hover, a.text-darker:focus { + color: black !important; } + +.text-darkest { + color: #000 !important; } + +a.text-darkest:hover, a.text-darkest:focus { + color: black !important; } + +.text-muted { + color: #767676 !important; } + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } + +.visible { + visibility: visible !important; } + +.invisible { + visibility: hidden !important; } + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + -webkit-border-radius: 0.1875rem; + -moz-border-radius: 0.1875rem; + -ms-border-radius: 0.1875rem; + -o-border-radius: 0.1875rem; + border-radius: 0.1875rem; } + .badge:empty { + display: none; } + +.btn .badge { + position: relative; + top: -1px; } + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + -webkit-border-radius: 10rem; + -moz-border-radius: 10rem; + -ms-border-radius: 10rem; + -o-border-radius: 10rem; + border-radius: 10rem; } + +.badge-primary { + color: #fff; + background-color: #0075b4; } + .badge-primary[href]:hover, .badge-primary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #005481; } + +.badge-secondary { + color: #fff; + background-color: #313131; } + .badge-secondary[href]:hover, .badge-secondary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #181818; } + +.badge-success { + color: #fff; + background-color: #008100; } + .badge-success[href]:hover, .badge-success[href]:focus { + color: #fff; + text-decoration: none; + background-color: #004e00; } + +.badge-info { + color: #fff; + background-color: #17a2b8; } + .badge-info[href]:hover, .badge-info[href]:focus { + color: #fff; + text-decoration: none; + background-color: #117a8b; } + +.badge-warning { + color: #111; + background-color: #e2c01f; } + .badge-warning[href]:hover, .badge-warning[href]:focus { + color: #111; + text-decoration: none; + background-color: #b69b18; } + +.badge-danger { + color: #fff; + background-color: #b20610; } + .badge-danger[href]:hover, .badge-danger[href]:focus { + color: #fff; + text-decoration: none; + background-color: #81040c; } + +.badge-light { + color: #111; + background-color: #e7e7e7; } + .badge-light[href]:hover, .badge-light[href]:focus { + color: #111; + text-decoration: none; + background-color: #cecece; } + +.badge-dark { + color: #fff; + background-color: #313131; } + .badge-dark[href]:hover, .badge-dark[href]:focus { + color: #fff; + text-decoration: none; + background-color: #181818; } + +.badge-inverse { + color: #111; + background-color: #fff; } + .badge-inverse[href]:hover, .badge-inverse[href]:focus { + color: #111; + text-decoration: none; + background-color: #e6e6e6; } + +.badge-disabled { + color: #fff; + background-color: #767676; } + .badge-disabled[href]:hover, .badge-disabled[href]:focus { + color: #fff; + text-decoration: none; + background-color: #5d5d5d; } + +.badge-purchase { + color: #fff; + background-color: #008100; } + .badge-purchase[href]:hover, .badge-purchase[href]:focus { + color: #fff; + text-decoration: none; + background-color: #004e00; } + +.badge-lightest { + color: #111; + background-color: #f5f5f5; } + .badge-lightest[href]:hover, .badge-lightest[href]:focus { + color: #111; + text-decoration: none; + background-color: gainsboro; } + +.badge-darker { + color: #fff; + background-color: #111; } + .badge-darker[href]:hover, .badge-darker[href]:focus { + color: #fff; + text-decoration: none; + background-color: black; } + +.badge-darkest { + color: #fff; + background-color: #000; } + .badge-darkest[href]:hover, .badge-darkest[href]:focus { + color: #fff; + text-decoration: none; + background-color: black; } + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 0.1875rem; + -moz-border-radius: 0.1875rem; + -ms-border-radius: 0.1875rem; + -o-border-radius: 0.1875rem; + border-radius: 0.1875rem; } + .popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.1875rem; } + .popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; } + .bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow { + bottom: calc((0.5rem + 1px) * -1); } + .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before, + .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { + border-width: 0.5rem 0.5rem 0; } + .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before { + bottom: 0; + border-top-color: rgba(0, 0, 0, 0.25); } + .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { + bottom: 1px; + border-top-color: #fff; } + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; } + .bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.1875rem 0; } + .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before, + .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { + border-width: 0.5rem 0.5rem 0.5rem 0; } + .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before { + left: 0; + border-right-color: rgba(0, 0, 0, 0.25); } + .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { + left: 1px; + border-right-color: #fff; } + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; } + .bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow { + top: calc((0.5rem + 1px) * -1); } + .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before, + .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { + border-width: 0 0.5rem 0.5rem 0.5rem; } + .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before { + top: 0; + border-bottom-color: rgba(0, 0, 0, 0.25); } + .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { + top: 1px; + border-bottom-color: #fff; } + .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; } + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; } + .bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.1875rem 0; } + .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before, + .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { + border-width: 0.5rem 0 0.5rem 0.5rem; } + .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before { + right: 0; + border-left-color: rgba(0, 0, 0, 0.25); } + .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { + right: 1px; + border-left-color: #fff; } + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + color: inherit; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-top-right-radius: calc(0.1875rem - 1px); + -moz-border-topright-radius: calc(0.1875rem - 1px); + border-top-right-radius: calc(0.1875rem - 1px); + -webkit-border-top-left-radius: calc(0.1875rem - 1px); + -moz-border-topleft-radius: calc(0.1875rem - 1px); + border-top-left-radius: calc(0.1875rem - 1px); } + .popover-header:empty { + display: none; } + +.popover-body { + padding: 0.5rem 0.75rem; + color: #313131; } + +/* + * In pursuit of decoupling the built-in XBlocks from edx-platform's Sass build + * and ensuring comprehensive theming support in the extracted XBlocks, + * we need to expose Sass variables as CSS variables. + * + * Ticket/Issue: https://github.com/openedx/edx-platform/issues/35173 + */ +/* stylelint-disable-line */ +/* stylelint-disable-line */ +.btn-default:disabled, .btn-primary:disabled, .btn-brand:disabled, .btn-upgrade:disabled, .is-disabled.btn-default, .is-disabled.btn-primary, .is-disabled.btn-brand, .is-disabled.btn-upgrade { + pointer-events: none; + outline: none; + cursor: not-allowed; } + +.btn-small.btn-default, .btn-small.btn-primary, .btn-small.btn-brand, .btn-small.btn-upgrade { + padding: 0.625rem; + font-size: 14px; } + +:root { + --action-primary-active-bg: #0075b4; + --actions-dropdown-width: 145px; + --actions-dropdown-offset: 100px; + --base-font-size: 18px; + --base-line-height: 1.5em; + --baseline: 20px; + --black: #000; + --black-t2: rgba(0, 0, 0, 0.5); + --blue: #0075b4; + --blue-d1: #005e90; + --blue-d2: #00466c; + --blue-d4: #001724; + --blue-s1: #0075b4; + --body-color: #313131; + --border-color: #e7e7e7; + --border-color-4: #fcfcfc; + --bp-screen-lg: 1024px; + --btn-brand-focus-background: #065683; + --correct: #008100; + --comment-image-dimension: calc(var(--baseline) * 2); + --danger: #b20610; + --darkGrey: #8891a1; + --error-color: #cb0712; + --error-color-dark: #95050d; + --error-color-light: #f95861; + --font-bold: 700; + --font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + --forum-color-active-thread: var(--forum-color-primary); + --forum-color-hover: #065683; + --forum-color-active-text: var(--white); + --forum-color-background: #fff; + --forum-x-large-font-size: 21px; + --forum-color-copy-light: #414141; + --forum-large-font-size: 16px; + --forum-border-radius: 3px; + --forum-base-font-size: 14px; + --forum-small-font-size: 12px; + --forum-color-border: var(--gray-300); + --forum-color-background-light: whitesmoke; + --forum-color-editor-preview-label: var(--forum-color-copy-light); + --forum-color-following: var(--forum-color-primary); + --forum-color-error: #b20610; + --forum-color-pinned: #982c62; + --forum-color-reported: #982c62; + --forum-color-closed: var(--black); + --forum-color-staff: var(--forum-color-primary); + --forum-color-community-ta: var(--green); + --forum-color-response-count: var(--forum-color-copy-light); + --forum-color-read-post: var(--forum-color-copy-light); + --forum-color-hover-thread: var(--forum-color-background-light); + --forum-color-reading-thread: var(--forum-color-background-light); + --forum-color-never-read-post: var(--forum-color-primary); + --forum-color-navigation-bar: var(--forum-color-background-light); + --forum-color-primary: #0075b4; + --general-color-accent: #0075b4; + --green: #008100; + --gray: #767676; + --gray-300: #d9d9d9; + --gray-d1: #5e5e5e; + --gray-l2: #adadad; + --gray-l3: #c8c8c8; + --gray-l4: #e4e4e4; + --gray-l6: #f8f8f8; + --icon-correct: url("../images/correct-icon.png"); + --icon-incorrect: url("../images/incorrect-icon.png"); + --icon-info: url("../images/info-icon.png"); + --icon-partially-correct: url("../images/partially-correct-icon.png"); + --icon-spinner: url("../images/spinner.gif"); + --icon-unanswered: url("../images/unanswered-icon.png"); + --incorrect: #b20610; + --lightGrey: #edf1f5; + --lighter-base-font-color: #646464; + --link-color: #1b6d99; + --line-height-base: 1.5; + --medium-font-size: 0.9em; + --pink: #c2387d; + --partially-correct: #008100; + --primary: #0075b4; + --post-image-dimension: calc(var(--baseline) * 3); + --response-image-dimension: calc(var(--baseline) * 2.5); + --shadow: rgba(0, 0, 0, 0.2); + --shadow-l1: rgba(0, 0, 0, 0.1); + --sidebar-color: #f6f6f6; + --small-font-size: 80%; + --submitted: #0075b4; + --success: #008100; + --serif: Georgia, Cambria, "Times New Roman", Times, serif; + --tmg-f2: 0.25s; + --tmg-s2: 2s; + --transparent: transparent; + --uxpl-gray-background: #d9d9d9; + --uxpl-gray-base: #414141; + --uxpl-gray-dark: #111111; + --very-light-text: white; + --warning: #e2c01f; + --warning-color: #ffc01f; + --warning-color-accent: #fffcdd; + --white: #fff; + --yellow: #e2c01f; } + +/* stylelint-disable-line */ +/* stylelint-disable-line */ +/* HTML5 Boilerplate */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +nav, +section { + display: block; } + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; } + +audio:not([controls]) { + display: none; } + +[hidden] { + display: none; } + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } + +html, +button, +input, +select, +textarea { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #222; } + +body { + margin: 0; + font-size: 1em; + line-height: 1.4; } + +a:not(.btn) { + color: #1b6d99; } + +a:visited:not(.btn) { + color: #003655; } + +a:hover:not(.btn), +a:focus:not(.btn) { + color: #0079bc; } + +abbr[title] { + border-bottom: 1px dotted; } + +b, +strong { + font-weight: bold; } + +blockquote { + margin: 1em 40px; } + +dfn { + font-style: italic; } + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; } + +ins { + background: #ff9; + color: #000; + text-decoration: none; } + +mark { + background: #ff0; + color: #000; + font-style: italic; + font-weight: bold; } + +pre, +code, +kbd, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; } + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; } + +q { + quotes: none; } + +q::before, +q::after { + content: ""; + content: none; } + +small { + font-size: 85%; } + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +ul, +ol { + padding: 0 0 0 40px; + margin: 1em 0; } + +dd { + margin: 0 0 0 40px; } + +nav ul, +nav ol { + list-style: none; + margin: 0; + padding: 0; } + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; } + +svg:not(:root) { + overflow: hidden; } + +figure { + margin: 0; } + +form { + margin: 0; } + +fieldset { + border: 0; + margin: 0; + padding: 0; } + +label { + cursor: pointer; } + +legend { + border: 0; + *margin-left: -7px; + padding: 0; + white-space: normal; } + +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; } + +button, +input { + line-height: normal; } + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; + *overflow: visible; } + +button[disabled], +input[disabled] { + cursor: default; } + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; + *width: 13px; + *height: 13px; } + +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; } + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; } + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +button:-moz-focusring { + outline: 1px dotted black; } + +textarea { + overflow: auto; + vertical-align: top; + resize: vertical; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td { + vertical-align: top; } + +.chromeframe { + margin: 0.2em 0; + background: #ccc; + color: black; + padding: 0.2em 0; } + +.ir { + display: block; + border: 0; + text-indent: -999em; + overflow: hidden; + background-color: transparent; + background-repeat: no-repeat; + text-align: left; + direction: ltr; + *line-height: 0; } + +.ir br { + display: none; } + +.hidden { + display: none !important; + visibility: hidden; } + +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } + +.invisible { + visibility: hidden; } + +.clearfix::before, +.clearfix::after { + content: ""; + display: table; } + +.clearfix::after { + clear: both; } + +.clearfix { + *zoom: 1; } + +@media print { + * { + background: transparent; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; + filter: none !important; + -ms-filter: none !important; } + html, + body { + background: transparent !important; } + a, + a:visited { + text-decoration: underline; } + abbr[title]::after { + content: " (" attr(title) ")"; } + .ir a::after { + content: ""; } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 1cm 1.2cm 2cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } } + +/* stylelint-disable-line */ +/* stylelint-disable-line */ +.discussion .actions-dropdown { + z-index: 10; } + +.discussion-thread .discussion-article .thread-wrapper .discussion-post .inline-comment-count { + z-index: 100; } + +.discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list, .discussion .actions-dropdown, .discussion .responses, .discussion .comments { + list-style: none; + margin: 0; + padding: 0; + text-indent: 0; } + .discussion .post-actions-list li, + .discussion .response-actions-list li, + .discussion .comment-actions-list li, .discussion .actions-dropdown li, .discussion .responses li, .discussion .comments li, .discussion .post-actions-list dt, + .discussion .response-actions-list dt, + .discussion .comment-actions-list dt, .discussion .actions-dropdown dt, .discussion .responses dt, .discussion .comments dt, .discussion .post-actions-list dd, + .discussion .response-actions-list dd, + .discussion .comment-actions-list dd, .discussion .actions-dropdown dd, .discussion .responses dd, .discussion .comments dd { + margin: 0; + padding: 0; } + +.btn-default:disabled, .btn-primary:disabled, .btn-brand:disabled, .btn-upgrade:disabled, .is-disabled.btn-default, .is-disabled.btn-primary, .is-disabled.btn-brand, .is-disabled.btn-upgrade { + pointer-events: none; + outline: none; + cursor: not-allowed; } + +.btn-small.btn-default, .btn-small.btn-primary, .btn-small.btn-brand, .btn-small.btn-upgrade { + padding: 0.625rem; + font-size: 14px; } + +.breadcrumbs { + font-size: 0.875rem; + line-height: line-height(small); } + .breadcrumbs .nav-item { + margin-left: 5px; + display: inline-block; } + @media (max-width: 1199.98px) { + .breadcrumbs .nav-item { + max-width: 240px; } } + @media (max-width: 767.98px) { + .breadcrumbs .nav-item { + max-width: 140px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; } } + @media (max-width: 575.98px) { + .breadcrumbs .nav-item:not(:first-child) { + max-width: 60px; } } + .breadcrumbs .nav-item.nav-item-course { + max-width: none; } + .breadcrumbs .nav-item a, + .breadcrumbs .nav-item a:visited { + color: #0075b4; } + .breadcrumbs .nav-item a:hover { + color: #065683; } + .breadcrumbs .fa-angle-right { + margin-left: 5px; + display: inline-block; + color: #313131; } + @media (max-width: 767.98px) { + .breadcrumbs .fa-angle-right { + position: relative; + top: -5px; } } + .breadcrumbs .fa-angle-right:last-child { + display: none; } + +.btn-default, .btn-primary, .btn-brand, .btn-upgrade { + display: inline-block; + background-color: transparent; + background-image: none; + border-style: solid; + border-radius: 0.1875rem; + border-width: 1px; + box-shadow: none; + padding: 0.625rem 1.25rem; + font-size: 16px; + font-weight: normal; + text-shadow: none; + text-transform: capitalize; } + .block.btn-default, .block.btn-primary, .block.btn-brand, .block.btn-upgrade { + display: block; + width: 100%; } + .btn-default .icon, .btn-primary .icon, .btn-brand .icon, .btn-upgrade .icon { + display: inline-block; + vertical-align: baseline; } + .btn-default .icon:only-child, .btn-primary .icon:only-child, .btn-brand .icon:only-child, .btn-upgrade .icon:only-child, + .sr-only + .btn-default .icon, + .sr-only + .btn-primary .icon, + .sr-only + .btn-brand .icon, + .sr-only + .btn-upgrade .icon { + margin-right: 0; } + +.btn-default { + border-color: transparent; + background: transparent; + color: #0075b4; } + .btn-default:hover, .btn-default.is-hovered, .btn-default:focus, .btn-default.is-focused { + border-color: #0075b4; + background-color: transparent; + color: #0075b4; } + .btn-default:active, .btn-default.is-pressed, .btn-default.is-active { + border-color: #0075b4; + color: #0075b4; } + .btn-default:disabled, .btn-default.is-disabled { + border-color: #d2d0d0; + color: #6b6969; } + +.btn-primary, .btn-brand { + border-color: #0075b4; + background: #0075b4; + color: #fcfcfc; } + .btn-primary:hover, .btn-brand:hover, .btn-primary.is-hovered, .is-hovered.btn-brand, .btn-primary:focus, .btn-brand:focus, .btn-primary.is-focused, .is-focused.btn-brand { + border-color: #065683; + background-color: #065683; + color: #fcfcfc; } + .btn-primary:active, .btn-brand:active, .btn-primary.is-pressed, .is-pressed.btn-brand, .btn-primary.is-active, .is-active.btn-brand { + border-color: #0075b4; + background: #0075b4; } + .btn-primary:disabled, .btn-brand:disabled, .btn-primary.is-disabled, .is-disabled.btn-brand { + border-color: #d2d0d0; + background: #f2f3f3; + color: #676666; } + +.btn-upgrade { + border-color: #008100; + background: #008100; + color: #fcfcfc; } + .btn-upgrade:hover, .btn-upgrade.is-hovered, .btn-upgrade:focus, .btn-upgrade.is-focused { + border-color: #009b00; + background-color: #009b00; + color: #fcfcfc; } + .btn-upgrade:disabled, .btn-upgrade.is-disabled { + border-color: #d2d0d0; + background: #f2f3f3; + color: #fcfcfc; } + +.edx-cookie-banner-wrapper { + background: #f2f8fd; + box-sizing: border-box; + /** Base Styles - start **/ + text-align: left; + line-height: 1.5; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 1rem; + font-weight: 400; + /** Base Styles - end **/ } + .edx-cookie-banner-wrapper .alert { + position: relative; + padding: 8px 20px; } + .edx-cookie-banner-wrapper .alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + background: transparent; + border: 0; + text-shadow: 0 1px 0 #fff; + opacity: 0.5; + float: right; + line-height: 1; + font-size: 1.5rem; + font-weight: 500; } + .edx-cookie-banner-wrapper .alert-dismissible .btn { + display: inline-block; + text-align: center; + white-space: nowrap; + vertical-align: middle; } + .edx-cookie-banner-wrapper .edx-cookie-banner { + box-sizing: border-box; + display: flex; + justify-content: space-between; + margin: 0 auto; + background: inherit; + border: none; } + .edx-cookie-banner-wrapper .edx-cookie-banner .policy-link { + color: #19291F; + text-decoration: underline; } + .edx-cookie-banner-wrapper .edx-cookie-banner .policy-link:focus, .edx-cookie-banner-wrapper .edx-cookie-banner .policy-link:hover { + color: #075683; + border: none; } + .edx-cookie-banner-wrapper .edx-cookie-banner .alert-dialog { + margin: auto; + color: #4e4e4e; + text-align: center; + max-width: 800px; + font-size: 14px; } + .edx-cookie-banner-wrapper .edx-cookie-banner .btn.close { + padding: 4px; + color: #19291F; } + .edx-cookie-banner-wrapper .edx-cookie-banner .btn.close:focus, .edx-cookie-banner-wrapper .edx-cookie-banner .btn.close:hover { + color: #075683; + cursor: pointer; } + +.discussion .responses .posted-by { + font-weight: 700; } + +.discussion-article .posted-details .username { + font-weight: 600; } + +.discussion .post-label, .discussion-article .posted-details, .discussion-post .post-context { + font-weight: 300; } + +.discussion-response .response-body, .discussion-post .post-body, .discussion .action-button .action-label, .discussion .actions-dropdown .action-list-item, .view-discussion-home .label, .view-discussion-home .home-description, .view-discussion-home .home-stats .stats-grouping .profile-stat, .discussion-article .posted-details, .discussion-comment .response-body, .discussion-post .post-context, .discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; } + +.discussion-response .response-body, .discussion-post .post-body { + font-size: 14px; + line-height: 20.72px; } + +.discussion .action-button .action-label, .discussion .actions-dropdown .action-list-item, .view-discussion-home .label, .view-discussion-home .home-description, .view-discussion-home .home-stats .stats-grouping .profile-stat, .discussion-article .posted-details, .discussion-comment .response-body, .discussion-post .post-context, .discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list { + font-size: 12px; + line-height: 17.76px; } + +.forum-nav-thread-comments-count { + font-weight: 600; } + +.discussion-response .response-header-content .username, .forum-nav .search-alert-content .message em, .forum-nav .search-alert-content .link-jump, .forum-nav .search-alert-controls .control { + font-weight: 700; } + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +.discussion-body, .discussion-module { + width: 100%; + border: none; + background: transparent; + box-shadow: none; } + .discussion-body:after, .discussion-module:after { + content: ""; + display: table; + clear: both; } + @media (min-width: 768px) { + .discussion-body, .discussion-module { + display: flex; + flex-direction: row-reverse; } } + .discussion-body .bottom-post-status, .discussion-module .bottom-post-status { + padding: 30px; + font-size: var(--forum-x-large-font-size); + font-weight: 700; + color: var(--forum-color-copy-light); + text-align: center; } + .discussion-body .discussion-article, .discussion-module .discussion-article { + position: relative; } + .discussion-body .discussion-article a, .discussion-module .discussion-article a, + .discussion-body .discussion-article p, .discussion-module .discussion-article p { + word-wrap: break-word; } + .discussion-body .main-article.new, .discussion-module .main-article.new { + display: none; + padding: calc(var(--baseline) * 2.5); } + .discussion-body .discussion-reply-new, .discussion-module .discussion-reply-new { + transition: opacity 0.2s linear 0s; } + .discussion-body .discussion-reply-new:after, .discussion-module .discussion-reply-new:after { + content: ""; + display: table; + clear: both; } + .discussion-body .discussion-reply-new h4, .discussion-module .discussion-reply-new h4 { + font-size: var(--forum-large-font-size); + font-weight: 700; } + .discussion-body .reply-post-control, .discussion-module .reply-post-control { + margin-top: var(--baseline); } + +.discussion-module { + display: block; + position: relative; + border-radius: var(--forum-border-radius); } + .discussion-module header .anonymous { + font-size: var(--forum-base-font-size); } + .discussion-module .inline-discussion-topic { + width: 100%; + font-size: var(--forum-small-font-size); } + .discussion-module .inline-discussion-topic .inline-discussion-topic-title { + font-weight: bold; } + .discussion-module .discussion-module-header { + float: left; + width: 57.44681%; + margin-bottom: calc(var(--baseline) * 0.75); } + .discussion-module .add_post_btn_container { + text-align: right; + width: 100%; + height: calc(2 * var(--baseline)); } + .discussion-module div.add-response.post-extended-content { + margin-top: var(--baseline); + margin-bottom: var(--baseline); } + +.discussion-show { + float: right; + position: relative; + top: 3px; + font-size: var(--forum-base-font-size); + text-align: center; } + .discussion-show.shown { + background-color: #fff; + color: #0075b4; } + +section.discussion:after { + content: ""; + display: table; + clear: both; } + +.new-post-article .forum-new-post-form { + padding: var(--baseline); } + +.new-post-article .inner-wrapper { + max-width: 1920px; + min-width: 760px; + margin: auto; } + +.xblock-student_view-discussion { + padding-top: 15px !important; } + +section.discussion-pagination { + margin-top: calc(var(--baseline) * 1.5); } + section.discussion-pagination nav.discussion-paginator { + float: right; } + section.discussion-pagination nav.discussion-paginator ol li { + padding-right: calc(var(--baseline) / 2); + list-style: none; + display: inline-block; } + section.discussion-pagination nav.discussion-paginator ol li.current-page span { + display: inline-block; + height: 35px; + padding: 0 calc(var(--baseline) * 0.75); + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + font-size: var(--forum-base-font-size); + font-weight: 700; + line-height: 32px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); } + +.discussion-module .btn, +.wmd-prompt-dialog .btn, .discussion-module .btn-brand, +.wmd-prompt-dialog .btn-brand { + transition: color 0.125s ease-in-out 0s, border-color 0.125s ease-in-out 0s, background 0.125s ease-in-out 0s, box-shadow 0.125s ease-in-out 0s; + display: inline-block; + border: 1px solid var(--forum-color-active-thread); + border-radius: 3px; + margin: 0; + background-image: none; + box-shadow: none; + height: 40px; + text-shadow: none; + font-family: var(--font-family-sans-serif); + font-size: 14px; + font-weight: 600; + word-wrap: break-word; + white-space: nowrap; } + .discussion-module .block.btn, + .wmd-prompt-dialog .block.btn, .discussion-module .block.btn-brand, + .wmd-prompt-dialog .block.btn-brand { + display: block; + width: 100%; } + .discussion-module .btn:disabled, + .wmd-prompt-dialog .btn:disabled, .discussion-module .btn-brand:disabled, + .wmd-prompt-dialog .btn-brand:disabled, .discussion-module .is-disabled.btn, + .wmd-prompt-dialog .is-disabled.btn, .discussion-module .is-disabled.btn-brand, + .wmd-prompt-dialog .is-disabled.btn-brand { + pointer-events: none; + outline: none; + cursor: not-allowed; } + .discussion-module .btn:hover, + .wmd-prompt-dialog .btn:hover, .discussion-module .btn-brand:hover, + .wmd-prompt-dialog .btn-brand:hover, .discussion-module .btn:active, + .wmd-prompt-dialog .btn:active, .discussion-module .btn-brand:active, + .wmd-prompt-dialog .btn-brand:active, .discussion-module .btn:focus, + .wmd-prompt-dialog .btn:focus, .discussion-module .btn-brand:focus, + .wmd-prompt-dialog .btn-brand:focus { + border-color: var(--forum-color-hover) !important; + background-color: var(--forum-color-hover) !important; + background-image: none !important; + box-shadow: none !important; + color: var(--forum-color-active-text) !important; + text-decoration: none !important; } + +.discussion-module .btn, +.wmd-prompt-dialog .btn { + background-color: var(--forum-color-background); + color: var(--forum-color-active-thread); } + +.discussion-module .btn-brand, +.wmd-prompt-dialog .btn-brand { + background-color: var(--forum-color-active-thread); + color: var(--forum-color-active-text); } + +.discussion-module .discussion { + clear: both; } + +.discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list { + text-align: right; } + .discussion .post-actions-list .actions-item, + .discussion .response-actions-list .actions-item, + .discussion .comment-actions-list .actions-item { + box-sizing: border-box; + display: block; + margin: calc(var(--baseline) / 4) 0; } + .discussion .post-actions-list .actions-item.is-hidden, + .discussion .response-actions-list .actions-item.is-hidden, + .discussion .comment-actions-list .actions-item.is-hidden { + display: none; } + .discussion .post-actions-list .actions-item.is-disabled a, + .discussion .response-actions-list .actions-item.is-disabled a, + .discussion .comment-actions-list .actions-item.is-disabled a { + pointer-events: none; } + .discussion .post-actions-list .actions-item.is-disabled a .action-icon, + .discussion .response-actions-list .actions-item.is-disabled a .action-icon, + .discussion .comment-actions-list .actions-item.is-disabled a .action-icon { + display: none; } + .discussion .post-actions-list .actions-item.is-disabled a .action-label, + .discussion .response-actions-list .actions-item.is-disabled a .action-label, + .discussion .comment-actions-list .actions-item.is-disabled a .action-label { + padding-right: 0; } + .discussion .post-actions-list .actions-item.is-disabled a:hover, + .discussion .response-actions-list .actions-item.is-disabled a:hover, + .discussion .comment-actions-list .actions-item.is-disabled a:hover { + border-color: transparent; } + .discussion .post-actions-list .actions-item.is-disabled a:hover .action-label, + .discussion .response-actions-list .actions-item.is-disabled a:hover .action-label, + .discussion .comment-actions-list .actions-item.is-disabled a:hover .action-label { + color: var(--forum-color-active-text); } + .discussion .post-actions-list .more-wrapper, + .discussion .response-actions-list .more-wrapper, + .discussion .comment-actions-list .more-wrapper { + position: relative; } + +.discussion .actions-dropdown { + right: 0; + display: none; + position: absolute; + top: 100%; + pointer-events: none; + min-width: var(--actions-dropdown-width); } + .discussion .actions-dropdown.is-expanded { + display: block; + pointer-events: auto; } + .discussion .actions-dropdown .actions-dropdown-list { + box-sizing: border-box; + box-shadow: 0 1px 1px var(--shadow-l1); + position: relative; + width: 100%; + border-radius: var(--forum-border-radius); + margin: calc(var(--baseline) / 4) 0 0 0; + border: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2) calc(var(--baseline) * 0.75); + background: var(--forum-color-background); } + .discussion .actions-dropdown .actions-dropdown-list::after, .discussion .actions-dropdown .actions-dropdown-list::before { + right: 6px; + bottom: 100%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; } + .discussion .actions-dropdown .actions-dropdown-list::after { + margin-right: 1px; + border-color: transparent; + border-bottom-color: var(--white); + border-width: 6px; } + .discussion .actions-dropdown .actions-dropdown-list::before { + border-color: transparent; + border-bottom-color: var(--forum-color-border); + border-width: 7px; } + .discussion .actions-dropdown .actions-item { + display: block; + margin: 0; } + .discussion .actions-dropdown .actions-item.is-hidden { + display: none; } + +.discussion .action-button { + transition: border 0.5s linear 0s; + box-sizing: border-box; + display: inline-block; + border: 1px solid transparent; + border-radius: var(--forum-border-radius); + color: #313131; } + .discussion .action-button .action-icon { + display: inline-block; + font-size: var(--forum-small-font-size); + height: var(--baseline); + width: var(--baseline); + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + text-align: center; + color: #313131; } + .discussion .action-button .action-icon .icon { + margin-right: 0; + vertical-align: middle; } + .discussion .action-button .action-label { + display: none; + vertical-align: middle; + padding: 2px 8px; } + .discussion .action-button:hover .action-label, .discussion .action-button:focus .action-label { + display: inline-block; } + .discussion .action-button:hover .action-icon, .discussion .action-button:focus .action-icon { + -webkit-border-top-left-radius: 0; + -moz-border-topleft-radius: 0; + border-top-left-radius: 0; + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: var(--forum-border-radius); + -moz-border-bottomright-radius: var(--forum-border-radius); + border-bottom-right-radius: var(--forum-border-radius); + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; } + .discussion .action-button.action-follow .action-label { + color: #0075b4; } + .discussion .action-button.action-follow.is-checked .action-icon, .discussion .action-button.action-follow:hover .action-icon, .discussion .action-button.action-follow:focus .action-icon { + background-color: var(--forum-color-following); + border: 1px solid #0075b4; + color: var(--white); } + .discussion .action-button.action-follow:hover, .discussion .action-button.action-follow:focus { + border-color: var(--forum-color-following); } + .discussion .action-button.action-vote .action-label { + opacity: 1; } + .discussion .action-button.action-vote.is-checked .action-icon, .discussion .action-button.action-vote:hover .action-icon, .discussion .action-button.action-vote:focus .action-icon { + background-color: var(--green); + border: 1px solid var(--green); + color: var(--white); } + .discussion .action-button.action-vote:hover, .discussion .action-button.action-vote:focus { + border-color: var(--green); } + .discussion .action-button.action-vote:hover .action-label, .discussion .action-button.action-vote:focus .action-label { + color: var(--green); } + .discussion .action-button.action-endorse.is-checked .action-icon, .discussion .action-button.action-endorse:hover .action-icon, .discussion .action-button.action-endorse:focus .action-icon { + background-color: #0075b4; + border: 1px solid #0075b4; + color: var(--white); } + .discussion .action-button.action-endorse:hover, .discussion .action-button.action-endorse:focus { + border-color: #0075b4; + background-color: var(--forum-color-background); } + .discussion .action-button.action-endorse:hover .action-label, .discussion .action-button.action-endorse:focus .action-label { + color: #0075b4; } + .discussion .action-button.action-answer.is-checked .action-icon, .discussion .action-button.action-answer:hover .action-icon, .discussion .action-button.action-answer:focus .action-icon { + border: 1px solid var(--green); + background-color: var(--green); + color: var(--white); } + .discussion .action-button.action-answer:hover, .discussion .action-button.action-answer:focus { + border-color: var(--green); + background-color: var(--forum-color-background); } + .discussion .action-button.action-answer:hover .action-label, .discussion .action-button.action-answer:focus .action-label { + color: var(--green); } + .discussion .action-button.action-more { + position: relative; } + .discussion .action-button.action-more:hover, .discussion .action-button.action-more:focus { + border-color: #313131; + background-color: var(--forum-color-background); } + .discussion .action-button.action-more:hover .action-icon, .discussion .action-button.action-more:focus .action-icon { + border: 1px solid #313131; + background-color: #313131; + color: #fff; } + .discussion .action-button.action-more:hover .action-label, .discussion .action-button.action-more:focus .action-label { + opacity: 1; + color: var(--black); } + +.discussion .actions-dropdown .action-list-item { + text-align: right; + display: block; + width: 100%; + padding: calc(var(--baseline) / 10) 0; + white-space: nowrap; + color: #313131; } + .discussion .actions-dropdown .action-list-item:hover, .discussion .actions-dropdown .action-list-item:focus { + color: var(--link-color); } + .discussion .actions-dropdown .action-list-item .action-icon { + margin-left: calc(var(--baseline) / 4); + display: inline-block; + width: calc(var(--baseline) / 2); + color: inherit; } + .discussion .actions-dropdown .action-list-item .action-label { + display: inline-block; + color: inherit; } + .discussion .actions-dropdown .action-list-item.is-checked.action-pin { + color: var(--pink); } + .discussion .actions-dropdown .action-list-item.is-checked.action-report { + color: var(--pink); } + .discussion .actions-dropdown .action-list-item.is-checked:hover, .discussion .actions-dropdown .action-list-item.is-checked:focus { + color: var(--link-color); } + +.discussion .action-button .action-label, +.discussion .action-list-item .action-label { + float: left; } + .discussion .action-button .action-label .label-checked, + .discussion .action-list-item .action-label .label-checked { + display: none; } + +.discussion .action-button.is-checked .label-unchecked, +.discussion .action-list-item.is-checked .label-unchecked { + display: none; } + +.discussion .action-button.is-checked .label-checked, +.discussion .action-list-item.is-checked .label-checked { + display: inline; } + +.discussion .btn-primary:focus, .discussion .btn-brand:focus, +.discussion .btn-outline-primary:focus { + box-shadow: 0 0 0 2px #0078b4; } + +.forum-new-post-form .wmd-input { + box-sizing: border-box; + position: relative; + z-index: 1; } + +.wmd-preview-container { + -webkit-border-top-left-radius: 0; + -moz-border-topleft-radius: 0; + border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -moz-border-topright-radius: 0; + border-top-right-radius: 0; + -webkit-border-bottom-right-radius: var(--forum-border-radius); + -moz-border-bottomright-radius: var(--forum-border-radius); + border-bottom-right-radius: var(--forum-border-radius); + -webkit-border-bottom-left-radius: var(--forum-border-radius); + -moz-border-bottomleft-radius: var(--forum-border-radius); + border-bottom-left-radius: var(--forum-border-radius); + box-sizing: border-box; + border: 1px solid var(--forum-color-border); + width: 100%; + background: var(--forum-color-background-light); + border-color: var(--forum-color-border); } + .discussion-board .wmd-preview-container, + .discussion-user-profile-board .wmd-preview-container { + margin-top: calc(-1 * var(--baseline) / 4); } + +.wmd-preview-label { + padding-left: calc(var(--baseline) / 4); + padding-top: 3px; + width: 100%; + color: var(--forum-color-editor-preview-label); + font-size: var(--forum-small-font-size); } + +.wmd-preview { + padding: calc(var(--baseline) / 2) var(--baseline); + width: auto; + background-color: var(--forum-color-background-light); } + .wmd-preview ol, + .wmd-preview ul { + padding-left: calc(var(--baseline) * 2); + padding-right: 0; } + .wmd-preview svg { + max-width: 100% !important; } + +.wmd-button { + background: none; } + +.wmd-button-bar { + width: 100%; } + +.wmd-button-row { + transition: all 0.2s ease-out 0s; + position: relative; + overflow: hidden; + margin: calc(var(--baseline) / 2) calc(var(--baseline) / 4) calc(var(--baseline) / 4) calc(var(--baseline) / 4); + padding: 0; + height: 30px; } + +.wmd-spacer { + margin-left: 14px; + position: absolute; + display: inline-block; + width: 1px; + height: 20px; + background-color: Silver; + list-style: none; } + +.wmd-button { + position: absolute; + display: inline-block; + width: 20px; + height: 20px; + border: none; + background: none; + list-style: none; + cursor: pointer; + padding: 0; } + +.wmd-button:hover { + background: none; + box-shadow: none; } + +.wmd-button > span { + display: inline-block; + width: 20px; + height: 20px; + background-image: url("var(--static-path)/images/wmd-buttons-transparent.png"); + background-position: 0 0; + background-repeat: no-repeat; } + +.wmd-spacer1 { + left: 50px; } + +.wmd-spacer2 { + left: 175px; } + +.wmd-spacer3 { + left: 300px; } + +.wmd-input { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + box-sizing: border-box; + margin-top: 0; + border: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2); + width: 100%; + height: 125px; + background: var(--forum-color-background); + font-size: var(--forum-base-font-size); + font-family: var(--font-family-sans-serif); + line-height: 1.6; + box-sizing: border-box; + width: 100%; + background: var(--forum-color-background); } + +.wmd-prompt-background { + background-color: var(--black); } + +.wmd-prompt-dialog { + background: var(--forum-color-background); + padding: var(--baseline); } + .wmd-prompt-dialog > div { + font-size: var(--forum-base-font-size); + font-family: arial, helvetica, sans-serif; } + .wmd-prompt-dialog b { + font-size: var(--forum-large-font-size); } + .wmd-prompt-dialog > form > input[type="text"] { + border-radius: var(--forum-border-radius); + color: #333; } + .wmd-prompt-dialog > form > input[type="button"] { + border: 1px solid #888; + font-family: var(--font-family-sans-serif); + font-size: var(--forum-x-large-font-size); } + .wmd-prompt-dialog > form > input[type="file"] { + margin-bottom: 18px; } + .wmd-prompt-dialog .field-group .field .field-hint { + margin-left: 0; + width: 100%; } + .wmd-prompt-dialog .field-input-label { + font-size: var(--forum-base-font-size); } + .wmd-prompt-dialog .input-text { + width: calc(100% - 175px); + height: 40px; } + .wmd-prompt-dialog .input-text.has-error { + border-color: var(--forum-color-error); } + .wmd-prompt-dialog .field-message.has-error { + width: calc(100% - 175px); + background-color: var(--forum-color-error); + color: var(--white); + padding: calc(var(--baseline) / 2); + box-sizing: border-box; } + .wmd-prompt-dialog .field-label { + cursor: pointer; } + .wmd-prompt-dialog .input-checkbox { + margin-right: calc(var(--baseline) / 5); } + .wmd-prompt-dialog #new-url-input { + direction: ltr; } + +.wmd-button-row { + position: relative; + height: 25px; } + +.discussion .post-label { + margin: calc(var(--baseline)/4) calc(var(--baseline)/2) 0 0; + font-size: var(--forum-small-font-size); + display: inline; + white-space: nowrap; } + .discussion .post-label .icon { + margin-right: calc(var(--baseline) / 5); } + .discussion .post-label.is-hidden { + display: none; } + .discussion .post-label.post-label-pinned { + color: var(--forum-color-pinned); } + .discussion .post-label.post-label-following { + color: var(--forum-color-following); } + .discussion .post-label.post-label-reported { + color: var(--forum-color-reported); } + .discussion .post-label.post-label-closed { + color: var(--forum-color-closed); } + .discussion .post-label.post-label-by-staff { + color: var(--forum-color-staff); } + .discussion .post-label.post-label-by-community-ta { + color: var(--forum-color-community-ta); } + +.discussion .user-label-staff, +.discussion .user-label-community-ta { + color: var(--forum-color-copy-light); + font-size: var(--forum-small-font-size); + white-space: nowrap; } + +.forum-nav-thread-link .forum-nav-thread-labels .post-label .icon { + margin-right: 0; } + +.discussion-board > .page-header .has-breadcrumbs .breadcrumbs { + margin-bottom: calc(var(--baseline) / 2); + font-size: 1rem; + font-weight: 600; + line-height: var(--line-height-base); } + +.forum-nav-browse-menu-wrapper { + border-bottom: 1px solid var(--forum-color-border); + background: #e7e7e7; } + +.forum-nav-browse-filter { + position: relative; + border-bottom: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 4); } + +.forum-nav-browse-filter .icon { + right: calc(var(--baseline)/4 + 1px + calc(var(--baseline) / 4)); + font-size: var(--forum-small-font-size); + position: absolute; + margin-top: -6px; + top: 75%; } + +.forum-nav-browse-filter-input { + width: 100%; } + +.forum-nav-browse-menu-following .icon { + float: left; + left: calc(var(--baseline) / 2); + position: relative; + top: 13px; } + +.forum-nav-browse-menu-following .forum-nav-browse-title { + padding-left: calc(var(--baseline) * 1.5); } + +.forum-nav-browse-menu-item { + margin-bottom: 0; } + +.forum-nav-browse-title { + text-align: left; + display: block; + width: 100%; + border: 0; + border-radius: 0; + border-bottom: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2); + background: transparent; + box-shadow: none; + background-image: none; + cursor: pointer; } + .forum-nav-browse-title:hover, .forum-nav-browse-title:focus, .forum-nav-browse-title.is-focused { + background-image: none !important; + box-shadow: none !important; + background: var(--forum-color-background) !important; + /* stylelint-disable-line */ } + +.forum-nav-browse-title .icon { + margin-right: calc(var(--baseline) / 2); } + +.forum-nav-browse-menu { + padding-left: 0; + margin: 0; + font-size: var(--forum-base-font-size); + overflow-y: scroll; + list-style: none; + max-height: 600px; } + +.forum-nav-browse-submenu { + list-style: none; + margin: 0; + padding: 0; } + .forum-nav-browse-submenu li .forum-nav-browse-title { + padding-left: var(--baseline); } + +.forum-nav-refine-bar { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + font-size: var(--forum-small-font-size); + border-bottom: 1px solid var(--forum-color-border); + background-color: #e7e7e7; + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + color: var(--black); } + .forum-nav-refine-bar:after { + content: ""; + display: table; + clear: both; } + +.forum-nav-filter-main { + text-align: left; + float: left; + box-sizing: border-box; + width: 50%; } + +.forum-nav-filter-cohort, +.forum-nav-sort { + text-align: right; + box-sizing: border-box; } + +.discussion-board .forum-nav-filter-cohort { + float: right; + text-align: right; + width: 50%; } + +.forum-nav-sort { + float: right; } + +.forum-nav-filter-main-control, .forum-nav-filter-cohort-control, .forum-nav-sort-control { + border: none; + max-width: 100%; + background-color: transparent; } + +.forum-nav-filter-cohort-control { + max-width: 60%; } + +.forum-nav-thread-list { + padding-left: 0 !important; + min-height: 60px; + max-height: 800px; + border-bottom: 1px solid #e7e7e7; + margin: 0; + overflow-y: auto; + list-style: none; + border-radius: 0 0 3px 3px; } + .forum-nav-thread-list .forum-nav-thread-labels { + margin: 5px 0 0; + padding-left: 0 !important; } + .forum-nav-thread-list .thread-preview-body { + margin-top: calc(var(--baseline) / 4); + color: var(--forum-color-response-count); + font-size: var(--forum-small-font-size); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } + +.course-wrapper .course-content .forum-nav-thread-list-wrapper .forum-nav-thread-list { + padding-left: 0; + list-style: none; } + .course-wrapper .course-content .forum-nav-thread-list-wrapper .forum-nav-thread-list .forum-nav-thread { + margin: 0; } + +.forum-nav-thread { + border-bottom: 1px solid var(--forum-color-border); + background-color: var(--forum-color-background); + margin-bottom: 0; } + .forum-nav-thread:last-child { + border-bottom: 1px solid var(--forum-color-border); } + .forum-nav-thread .forum-nav-thread-link { + border-left: 3px solid transparent; + display: flex; + padding: calc(var(--baseline) / 2); + transition: none; + align-items: center; + justify-content: space-between; + color: var(--forum-color-read-post); } + .forum-nav-thread .forum-nav-thread-link:hover, .forum-nav-thread .forum-nav-thread-link:active, .forum-nav-thread .forum-nav-thread-link:focus { + text-decoration: none; } + .forum-nav-thread .forum-nav-thread-link:hover { + background-color: var(--forum-color-hover-thread); } + .forum-nav-thread .forum-nav-thread-link.is-active { + background-color: var(--forum-color-reading-thread); } + .forum-nav-thread .forum-nav-thread-link .forum-nav-thread-unread-comments-count { + display: inline-block; + font-size: var(--forum-small-font-size); + white-space: nowrap; } + .forum-nav-thread.never-read .forum-nav-thread-link { + border-left: 3px solid var(--forum-color-never-read-post); + color: var(--forum-color-never-read-post); } + +.forum-nav-thread-wrapper-0, .forum-nav-thread-wrapper-1, .forum-nav-thread-wrapper-2 { + display: inline-block; + vertical-align: middle; } + +.forum-nav-thread-wrapper-0 { + margin-right: calc(var(--baseline) / 5); + align-self: flex-start; } + .forum-nav-thread-wrapper-0 .icon { + font-size: var(--forum-base-font-size); + width: 18px; + text-align: center; } + +.forum-nav-thread-wrapper-1 { + margin: 0 calc(var(--baseline) / 4); + max-width: calc(100% - 75px); + flex-grow: 1; } + +.forum-nav-thread-wrapper-2 { + text-align: right; + min-width: 40px; + white-space: nowrap; } + +.forum-nav-thread-title { + margin-left: 0; + font-size: var(--forum-base-font-size); + display: block; } + +.forum-nav-thread-votes-count, .forum-nav-thread-comments-count { + margin-right: calc(var(--baseline) / 4); + font-size: var(--forum-small-font-size); + display: inline-block; + text-align: center; + color: var(--black); } + .forum-nav-thread-votes-count:last-child, .forum-nav-thread-comments-count:last-child { + margin-right: 0; } + +.forum-nav-thread-comments-count { + position: relative; + margin-left: calc(var(--baseline) / 4); + margin-bottom: calc(var(--baseline) / 4); + border-radius: var(--forum-border-radius); + padding: calc(var(--baseline) / 10) calc(var(--baseline) / 5); + min-width: 2em; + background-color: #e7e7e7; } + .forum-nav-thread-comments-count::after { + content: ''; + display: block; + position: absolute; + bottom: calc(-1 * var(--baseline) / 4); + right: calc(var(--baseline) / 4); + width: 0; + height: 0; + border-style: solid; + border-width: 0 calc(var(--baseline) / 4) calc(var(--baseline) / 4) 0; + border-color: transparent var(--forum-color-border) transparent transparent; } + +.forum-nav-load-more { + border-bottom: 1px solid var(--forum-color-border); + background-color: #e7e7e7; } + +.forum-nav-load-more-link, .forum-nav-loading { + display: block; + padding: var(--baseline) 0; + text-align: center; } + +.forum-nav-load-more-link { + color: var(--link-color); + width: 100%; } + .forum-nav-load-more-link:hover, .forum-nav-load-more-link:focus { + color: var(--forum-color-active-text); + background-color: var(--forum-color-active-thread) !important; } + +.view-discussion-home { + padding-left: var(--baseline); + display: none; } + @media (min-width: 992px) { + .view-discussion-home { + display: block; } } + .view-discussion-home section { + border-bottom: 1px solid var(--forum-color-border); } + .view-discussion-home .label { + display: block; } + .view-discussion-home .label-settings { + padding-top: var(--baseline); + padding-bottom: calc(var(--baseline) / 2); } + .view-discussion-home .home-header { + margin: 0; } + .view-discussion-home .home-title { + font-size: var(--forum-large-font-size); + color: var(--black); + margin-bottom: calc(var(--baseline) / 4); } + .view-discussion-home .home-description { + margin-bottom: calc(var(--baseline) / 2); } + .view-discussion-home .home-stats { + padding: var(--baseline) 0; } + .view-discussion-home .home-stats .label-area { + display: inline-block; + min-width: calc(var(--baseline) * 5); + width: 25%; + vertical-align: middle; } + .view-discussion-home .home-stats .label-area .profile-link { + font-weight: 700; } + .view-discussion-home .home-stats .stats-grouping { + padding-left: var(--baseline); + display: inline-block; + width: 70%; } + .view-discussion-home .home-stats .stats-grouping .profile-stat { + display: inline-block; + width: 32.5%; + vertical-align: middle; } + .view-discussion-home .home-stats .stats-grouping .profile-stat .count { + font-size: var(--forum-x-large-font-size); + display: inline-block; + padding: 0 calc(var(--baseline) / 2); + vertical-align: middle; } + .view-discussion-home .home-stats .stats-grouping .profile-stat .profile-stat-label { + vertical-align: middle; } + .view-discussion-home .home-helpgrid { + border-bottom: none; + border-radius: var(--forum-border-radius); + border: 1px solid var(--forum-color-border); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); } + .view-discussion-home .helpgrid-row { + border-bottom: 1px solid var(--forum-color-border); } + .view-discussion-home .helpgrid-row .row-title { + padding: calc(var(--baseline) * 1.5) var(--baseline); + background-color: #dedede; + font-size: var(--forum-small-font-size); } + .view-discussion-home .helpgrid-row .row-item-full, + .view-discussion-home .helpgrid-row .row-item { + font-size: var(--forum-small-font-size); + padding: 0 calc(var(--baseline) / 2); + width: 26%; + vertical-align: middle; } + .view-discussion-home .helpgrid-row .row-item-full .icon, + .view-discussion-home .helpgrid-row .row-item .icon { + padding: 0 calc(var(--baseline) / 2); + font-size: 24px; + vertical-align: middle; + display: table-cell; } + .view-discussion-home .helpgrid-row .row-item-full .fa-stack .icon, + .view-discussion-home .helpgrid-row .row-item .fa-stack .icon { + padding: 0 calc(var(--baseline) / 2); } + .view-discussion-home .helpgrid-row .row-item-full .row-description, + .view-discussion-home .helpgrid-row .row-item .row-description { + vertical-align: middle; + display: table-cell; } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox { + margin-right: calc(var(--baseline) / 2); + display: inline-block; + padding: calc(var(--baseline)/4) 0 calc(var(--baseline)/2) 0; + border-radius: var(--forum-border-radius); + border: 1px solid gray; } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox .email-setting { + display: inline-block; + text-align: center; + vertical-align: middle; + margin-left: calc(var(--baseline) / 2); } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox .icon { + display: inline-block; } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox .email-setting:checked ~ .icon { + color: var(--green); } + .view-discussion-home .helpgrid-row .row-item-full .row-description { + display: inline-block; + width: 80%; } + .view-discussion-home .helpgrid-row-navigation .fa-bars { + color: #e7e7e7; } + .view-discussion-home .helpgrid-row-navigation .fa-search { + color: var(--gray-300); } + .view-discussion-home .helpgrid-row-navigation .fa-sort { + color: var(--gray-300); } + .view-discussion-home .helpgrid-row-participation .fa-plus { + color: var(--green); } + .view-discussion-home .helpgrid-row-participation .fa-flag { + color: var(--pink); } + .view-discussion-home .helpgrid-row-participation .fa-star { + color: var(--blue); } + .view-discussion-home .helpgrid-row-notification .fa-square { + color: var(--green); } + .view-discussion-home .helpgrid-row-notification .fa-envelope { + color: var(--gray-300); } + +.discussion-post { + padding: 0 calc(var(--baseline) / 2); } + .discussion-post .post-header-actions { + float: right; } + +.discussion-article .posted-details { + margin: calc(var(--baseline) / 5) 0; + color: var(--forum-color-copy-light); } + .discussion-article .posted-details .username { + display: inline; } + .discussion-article .posted-details .timeago, + .discussion-article .posted-details .top-post-status { + color: inherit; } + +.thread-title { + display: block; + margin-bottom: var(--baseline); + font-size: var(--forum-x-large-font-size); + font-weight: 600; } + +.thread-responses-wrapper, +.post-extended-content { + padding: 0 calc(var(--baseline) / 2); } + +.discussion-response { + min-height: calc(var(--baseline) * 5); } + .discussion-response .response-header-content { + display: inline-block; + vertical-align: top; + width: 91.48936%; } + .discussion-response .response-header-actions { + float: right; + right: var(--baseline); + position: absolute; + top: calc(var(--baseline) / 2); } + +.discussion-comment .response-body { + padding: calc(var(--baseline) / 2) calc(var(--baseline) * 1.5) 0 0; + display: inline-block; + margin-top: calc(var(--baseline) / 2); + width: 82.97872%; } + .discussion-comment .response-body p + p { + margin-top: calc(var(--baseline) / 2); } + +.discussion-comment .comment-actions-list { + float: right; + right: calc(var(--baseline) / 2); + position: absolute; + top: 0; } + +.thread-wrapper .response-btn-count-wrapper { + margin: var(--baseline) 0; } + +.discussion-post:after, +.discussion-response:after, +.discussion-comment:after { + content: ""; + display: table; + clear: both; } + +.discussion-post .author-image, +.discussion-response .author-image, +.discussion-comment .author-image { + margin-right: calc(var(--baseline) / 2); + display: inline-block; + vertical-align: top; } + .discussion-post .author-image:empty, + .discussion-response .author-image:empty, + .discussion-comment .author-image:empty { + display: none; } + .discussion-post .author-image.level-post, + .discussion-response .author-image.level-post, + .discussion-comment .author-image.level-post { + height: var(--post-image-dimension); + width: var(--post-image-dimension); } + .discussion-post .author-image.level-response, + .discussion-response .author-image.level-response, + .discussion-comment .author-image.level-response { + height: var(--response-image-dimension); + width: var(--response-image-dimension); } + .discussion-post .author-image.level-comment, + .discussion-response .author-image.level-comment, + .discussion-comment .author-image.level-comment { + height: var(--comment-image-dimension); + width: var(--comment-image-dimension); } + .discussion-post .author-image img, + .discussion-response .author-image img, + .discussion-comment .author-image img { + border-radius: var(--forum-border-radius); } + +.discussion-response .response-body { + padding: calc(var(--baseline) / 2) calc(var(--baseline) * 1.5) 0 0; + margin-bottom: 0.2em; + font-size: var(--forum-base-font-size); } + +.discussion-post:after { + content: ""; + display: table; + clear: both; } + +.discussion-post .post-header-content { + max-width: calc(100% - var(--actions-dropdown-offset)); } + .discussion-post .post-header-content .post-title { + font-size: var(--forum-x-large-font-size); + margin-bottom: calc(var(--baseline) / 4); } + +.discussion-post .post-body { + padding: calc(var(--baseline) / 2) 0; + max-width: calc(100% - var(--actions-dropdown-offset)); } + +.discussion-post .post-context { + color: var(--forum-color-copy-light); } + .discussion-post .post-context:empty { + display: none; } + +.discussion-thread { + padding: 0; + margin-bottom: var(--baseline); + transition: all 0.25s linear 0s; } + .discussion-thread p { + margin-bottom: 0; } + .discussion-thread .discussion-article { + transition: all 0.2s linear 0s; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + min-height: 0; + background: var(--forum-color-background); + box-shadow: 0 1px 0 var(--shadow); + transition: all 0.2s linear 0s; } + .discussion-thread .discussion-article .thread-wrapper { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + max-height: 600px; + background-color: var(--forum-color-background); } + .discussion-thread .discussion-article .thread-wrapper .discussion-post .inline-comment-count { + margin-right: calc(var(--baseline) / 2); + float: right; + position: relative; + display: block; + height: 27px; + margin-top: 6px; + padding: 0 8px; + border-radius: var(--forum-border-radius); + font-size: var(--forum-small-font-size); + font-weight: 400; + line-height: 25px; + color: #888; } + .discussion-thread .discussion-article .thread-wrapper .responses header { + padding-bottom: 0; + margin-bottom: calc(var(--baseline) * 0.75); } + .discussion-thread .discussion-article .thread-wrapper .responses header .posted-by { + margin-right: calc(var(--baseline) / 4); + float: left; + font-size: var(--forum-large-font-size); } + .discussion-thread .discussion-article .thread-wrapper .discussion-reply-new .wmd-input { + height: 120px; } + .discussion-thread .discussion-article .thread-wrapper .post-extended-content { + display: none; } + .discussion-thread .discussion-article .post-tools { + box-shadow: 0 1px 1px var(--shadow) inset; + background: var(--white); } + .discussion-thread .discussion-article .post-tools:hover { + background: var(--forum-color-hover-thread); } + .discussion-thread .discussion-article .post-tools:hover .icon { + color: var(--link-hover); } + .discussion-thread .discussion-article .post-tools .btn-link { + display: block; + padding: calc(var(--baseline) * 0.25) var(--baseline); + font-size: var(--forum-small-font-size); + line-height: 30px; } + .discussion-thread .discussion-article .post-tools .btn-link .icon { + margin-right: calc(var(--baseline) * 0.25); + color: var(--link-color); } + +.thread-wrapper img, +.forum-new-post-form img { + max-width: 100%; } + +.forum-new-post-form, +.edit-post-form { + box-sizing: border-box; + margin: 0; + border-radius: var(--forum-border-radius); + max-width: 1920px; } + .forum-new-post-form:after, + .edit-post-form:after { + content: ""; + display: table; + clear: both; } + .forum-new-post-form label, + .forum-new-post-form .field-label-text, + .edit-post-form label, + .edit-post-form .field-label-text { + -webkit-font-smoothing: initial; } + .forum-new-post-form .post-type, + .edit-post-form .post-type { + text-shadow: none; } + .forum-new-post-form .post-type, + .edit-post-form .post-type { + margin-bottom: 0; } + .forum-new-post-form .post-errors, + .edit-post-form .post-errors { + margin: 0 0 var(--baseline); + padding: 0 !important; + list-style: none !important; } + .forum-new-post-form .post-field, + .edit-post-form .post-field { + margin-bottom: calc(var(--baseline) * 1.5); } + .forum-new-post-form .post-field .field-label, + .edit-post-form .post-field .field-label { + margin: 0; } + .forum-new-post-form .post-field .field-label .field-input, + .edit-post-form .post-field .field-label .field-input { + display: inline-block; + vertical-align: top; } + .forum-new-post-form .post-field .field-label .field-input:not([type="text"]), + .edit-post-form .post-field .field-label .field-input:not([type="text"]) { + border-width: 0; + padding: 0; } + .forum-new-post-form .post-field .field-label .field-label-text, + .edit-post-form .post-field .field-label .field-label-text { + display: block; } + .forum-new-post-form .post-field .field-label .field-label-text + .field-input, + .edit-post-form .post-field .field-label .field-label-text + .field-input { + width: 75%; } + .forum-new-post-form .post-field .field-label .js-post-title, + .edit-post-form .post-field .field-label .js-post-title { + width: 85%; } + .forum-new-post-form .post-field .field-help, + .edit-post-form .post-field .field-help { + margin: calc(var(--baseline) / 4) 0 calc(var(--baseline) / 4) 0; + font-size: var(--forum-small-font-size); + line-height: 1.5; } + .forum-new-post-form .post-field .field-help#field_help_post_type, + .edit-post-form .post-field .field-help#field_help_post_type { + margin: calc(var(--baseline) / 4) 0 calc(var(--baseline) * 0.75) 0; } + .forum-new-post-form .post-field .field-help#new-post-editor-description, + .edit-post-form .post-field .field-help#new-post-editor-description { + padding-left: 0; } + .forum-new-post-form .post-field .field-input, + .edit-post-form .post-field .field-input { + padding: 0; + border: none; } + .forum-new-post-form .post-options, + .edit-post-form .post-options { + margin: var(--baseline) 0; } + .forum-new-post-form .post-options .field-label, + .edit-post-form .post-options .field-label { + margin-right: var(--baseline); } + .forum-new-post-form .post-options .icon, + .edit-post-form .post-options .icon { + margin-right: calc(var(--baseline) / 4); } + +.edit-post-form { + box-sizing: border-box; + width: 100%; + padding-top: 0; } + .edit-post-form:after { + content: ""; + display: table; + clear: both; } + .edit-post-form h1 { + font-size: var(--forum-large-font-size); } + .edit-post-form .form-row { + margin-top: var(--baseline); } + .edit-post-form .post-cancel { + float: left; + margin: calc(var(--baseline)/2) 0 0 calc(var(--baseline)*0.75); } + .edit-post-form .post-update { + float: left; + margin-top: calc(var(--baseline) / 2); } + .edit-post-form .post-update:hover, .edit-post-form .post-update:focus { + border-color: #222; } + .edit-post-form .edit-post-title { + box-sizing: border-box; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + padding: 0 calc(var(--baseline) / 2); + width: 100%; + height: 40px; + box-shadow: 0 1px 3px var(--shadow-l1) inset; + font-size: var(--forum-large-font-size); + font-family: var(--font-family-sans-serif); } + +.discussion-module .forum-new-post-form { + background: var(--forum-color-background); } + +.forum-new-post-form .post-type-label, +.edit-post-form .post-type-label { + margin-right: var(--baseline); } + +.forum-new-post-form input[type=text].field-input, +.edit-post-form input[type=text].field-input { + box-sizing: border-box; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + padding: 0 calc(var(--baseline) / 2); + width: 70%; + height: 40px; + color: #333; + font-size: var(--forum-large-font-size); + font-family: 'Open Sans', sans-serif; } + +.forum-new-post-form select.field-input, +.edit-post-form select.field-input { + border: 1px solid var(--forum-color-border) !important; + height: 40px; } + +.forum-new-post-form .post-topic.field-input, +.edit-post-form .post-topic.field-input { + width: 100%; } + +.forum-new-post-form .post-option, +.edit-post-form .post-option { + box-sizing: border-box; + display: inline-block; + margin-right: var(--baseline); + border-radius: var(--forum-border-radius); + padding: calc(var(--baseline) / 2); + cursor: pointer; } + .forum-new-post-form .post-option:hover, + .edit-post-form .post-option:hover { + border-color: var(--forum-color-border); } + .forum-new-post-form .post-option .icon, + .edit-post-form .post-option .icon { + margin-right: calc(var(--baseline) / 4); } + +.discussion .responses:empty { + display: none; } + +.discussion .responses .forum-response { + animation: fadeIn 0.3s; + position: relative; + margin: var(--baseline) 0; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + box-shadow: 0 0 1px var(--shadow); } + +.discussion .responses .discussion-response { + box-sizing: border-box; + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + padding: var(--baseline); + background-color: var(--forum-color-background); } + +.discussion-response .response-header-content .username { + font-size: var(--forum-base-font-size); } + +.discussion-response .response-body ol, +.discussion-response .response-body ul { + padding-left: calc(var(--baseline) * 2); + padding-right: 0; } + +.discussion .add-response { + display: inline; + padding: calc(var(--baseline) / 2); } + +.forum-response .action-show-comments { + font-size: var(--forum-base-font-size); + box-sizing: border-box; + display: block; + padding: calc(var(--baseline) / 2) var(--baseline); + width: 100%; + background: #f5f5f5; + box-shadow: 0 1px 3px -1px var(--shadow) inset; } + +.discussion .responses .forum-response.staff { + padding-top: 38px; + border-color: #009fe2; } + +.discussion .responses .forum-response.community-ta { + padding-top: 38px; + border-color: var(--forum-color-community-ta); } + +.discussion .responses .forum-response .staff-banner { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + left: 0; + position: absolute; + top: 0; + width: 100%; + height: 14px; + padding: 1px calc(var(--baseline) / 4); + box-sizing: border-box; + background: #009fe2; + font-size: var(--forum-small-font-size); + font-weight: 700; + color: var(--white); } + +.discussion .responses .forum-response .community-ta-banner { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + left: 0; + position: absolute; + top: 0; + width: 100%; + height: 14px; + padding: 1px calc(var(--baseline) / 4); + box-sizing: border-box; + background: var(--forum-color-community-ta); + font-size: var(--forum-small-font-size); + font-weight: 700; + color: var(--white); } + +.discussion .responses .forum-response.loading { + height: 0; + margin: 0; + padding: 0; + border: none; + box-shadow: none; } + +.discussion .comments { + -webkit-border-top-left-radius: 0; + -moz-border-topleft-radius: 0; + border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -moz-border-topright-radius: 0; + border-top-right-radius: 0; + -webkit-border-bottom-right-radius: var(--forum-border-radius); + -moz-border-bottomright-radius: var(--forum-border-radius); + border-bottom-right-radius: var(--forum-border-radius); + -webkit-border-bottom-left-radius: var(--forum-border-radius); + -moz-border-bottomleft-radius: var(--forum-border-radius); + border-bottom-left-radius: var(--forum-border-radius); + background: #f5f5f5; + box-shadow: 0 1px 3px -1px var(--shadow) inset; } + .discussion .comments > li { + border-top: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2) var(--baseline); + position: relative; } + .discussion .comments blockquote { + background: var(--forum-color-background-light); + border-radius: var(--forum-border-radius); + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + font-size: var(--forum-base-font-size); } + .discussion .comments .comment-form { + padding: calc(var(--baseline) / 2) 0; } + .discussion .comments .comment-form:after { + content: ""; + display: table; + clear: both; } + .discussion .comments .comment-form .comment-form-input { + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + background-color: var(--forum-color-background); + font-size: var(--forum-base-font-size); } + .discussion .comments .comment-form .discussion-submit-comment { + float: left; + margin-top: 8px; } + .discussion .comments .comment-form .wmd-input { + transition: all 0.2s linear 0s; + height: 40px; } + .discussion .comments .comment-form .discussion-errors { + margin: 0; } + +.response-count { + float: right; + margin-right: var(--baseline)/2; + color: var(--forum-color-copy-light); + font-size: var(--forum-base-font-size); } + +.response-pagination { + visibility: visible; + margin: calc(var(--baseline) / 2) 0; } + .response-pagination:empty { + visibility: hidden; } + .response-pagination .response-display-count { + display: block; + padding: calc(var(--baseline) / 2) 0; + color: var(--forum-color-response-count); + font-size: var(--forum-base-font-size); } + .response-pagination .load-response-button { + text-align: left; + position: relative; + margin: calc(var(--baseline) / 2) 0; + width: 100%; } + +.forum-nav .search-alert { + transition: none; + padding: calc(var(--baseline) / 2) 11px calc(var(--baseline) / 2) 18px; + background-color: var(--black); } + +.forum-nav .search-alert-content, +.forum-nav .search-alert-controls { + display: inline-block; + vertical-align: middle; } + +.forum-nav .search-alert-content { + width: 70%; } + .forum-nav .search-alert-content .message { + font-size: var(--forum-small-font-size); + color: var(--white); } + .forum-nav .search-alert-content .message em { + font-style: italic; } + .forum-nav .search-alert-content .link-jump { + transition: none; } + +.forum-nav .search-alert-controls { + text-align: right; + width: 28%; } + .forum-nav .search-alert-controls .control { + transition: none; + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + color: var(--white); + font-size: var(--forum-base-font-size); } + .forum-nav .search-alert-controls .control:hover, .forum-nav .search-alert-controls .control:focus { + color: var(--white); + text-decoration: none; } + +.has-breadcrumbs .breadcrumbs { + margin: 5px 0 0; } + .has-breadcrumbs .breadcrumbs .all-topics { + font-size: 14px; } + .has-breadcrumbs .breadcrumbs .all-topics .fa { + margin-right: 10px; } + +.forum-nav-browse-filter label { + margin-bottom: 0; + width: 100%; } + +.forum-nav-browse-filter-input { + padding-left: calc(var(--baseline) / 4); + padding-right: calc(var(--baseline) / 2)12px; + box-shadow: none !important; + border-radius: var(--forum-border-radius) !important; + height: auto !important; + font-size: var(--forum-small-font-size) !important; } + +.forum-nav-filter-main, +.forum-nav-filter-cohort, +.forum-nav-sort { + font: inherit; + line-height: 1em; + margin-bottom: 0; } + +.forum-nav-filter-main-control, +.forum-nav-filter-cohort-control, +.forum-nav-sort-control { + font: inherit; } + +li[class*=forum-nav-thread-label-] span { + color: inherit; } + +li[class*=forum-nav-thread-label-]::before, li[class*=forum-nav-thread-label-]::after { + display: none !important; } + +.discussion .action-label span, +.discussion .action-icon span { + color: inherit; } + +.discussion-module .post-header { + margin-bottom: 0 !important; + padding-bottom: 0 !important; } + .discussion-module .post-header .posted-details { + margin: calc(var(--baseline) / 5) 0 !important; } + .discussion-module .post-header .post-labels { + font-size: var(--forum-base-font-size); } + .discussion-module .post-header .post-title { + margin-bottom: 0 !important; } + +.discussion-article .response-header { + line-height: 1 !important; + font-size: var(--forum-base-font-size) !important; + margin-bottom: 0 !important; + padding-bottom: 0 !important; } + +/* + This file mirror UXPL Form field styles +*/ +.post-type-label { + margin-right: 20px; + display: inline-block; + line-height: 100%; } + +.post-options .field-label { + display: inline-block; } + +.field-label .field-input:checked + .field-input-label { + color: #0075b4; } + +.input-radio, +.input-checkbox { + margin-right: 10px; } + +.discussion.inline-discussion .inline-threads { + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); } + +.discussion.inline-discussion .inline-thread { + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); } + .discussion.inline-discussion .inline-thread .forum-nav-bar { + padding: calc(var(--baseline) / 2) calc(var(--baseline) / 4); + color: var(--forum-color-navigation-bar); + position: relative; } + .discussion.inline-discussion .inline-thread .forum-nav-bar .all-posts-btn { + color: var(--forum-color-primary); } + .discussion.inline-discussion .inline-thread .forum-nav-bar .all-posts-btn .icon { + margin-left: calc(var(--baseline) / 2); } + .discussion.inline-discussion .inline-thread .forum-content { + padding: calc(var(--baseline) / 2); + overflow-y: auto; } + +.discussion.inline-discussion .new-post-article { + position: relative; + border: 1px solid var(--forum-color-border); } + .discussion.inline-discussion .new-post-article .add-post-cancel { + right: calc(var(--baseline) / 2); + top: calc(var(--baseline) / 2); + position: absolute; + color: #0075b4; } + .discussion.inline-discussion .new-post-article .add-post-cancel:hover, .discussion.inline-discussion .new-post-article .add-post-cancel:focus { + border-color: transparent; + box-shadow: none; + background-color: transparent; + background-image: none; } diff --git a/xblocks_contrib/discussion/assets/static/css/inline-discussion.css b/xblocks_contrib/discussion/assets/static/css/inline-discussion.css new file mode 100644 index 00000000..0c808c5a --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/css/inline-discussion.css @@ -0,0 +1,4572 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,700"); +.align-baseline { + vertical-align: baseline !important; } + +.align-top { + vertical-align: top !important; } + +.align-middle { + vertical-align: middle !important; } + +.align-bottom { + vertical-align: bottom !important; } + +.align-text-bottom { + vertical-align: text-bottom !important; } + +.align-text-top { + vertical-align: text-top !important; } + +.bg-primary { + background-color: #0075b4 !important; } + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #005481 !important; } + +.bg-secondary { + background-color: #313131 !important; } + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #181818 !important; } + +.bg-success { + background-color: #008100 !important; } + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #004e00 !important; } + +.bg-info { + background-color: #17a2b8 !important; } + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; } + +.bg-warning { + background-color: #e2c01f !important; } + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #b69b18 !important; } + +.bg-danger { + background-color: #b20610 !important; } + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #81040c !important; } + +.bg-light { + background-color: #e7e7e7 !important; } + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #cecece !important; } + +.bg-dark { + background-color: #313131 !important; } + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #181818 !important; } + +.bg-inverse { + background-color: #fff !important; } + +a.bg-inverse:hover, a.bg-inverse:focus, +button.bg-inverse:hover, +button.bg-inverse:focus { + background-color: #e6e6e6 !important; } + +.bg-disabled { + background-color: #767676 !important; } + +a.bg-disabled:hover, a.bg-disabled:focus, +button.bg-disabled:hover, +button.bg-disabled:focus { + background-color: #5d5d5d !important; } + +.bg-purchase { + background-color: #008100 !important; } + +a.bg-purchase:hover, a.bg-purchase:focus, +button.bg-purchase:hover, +button.bg-purchase:focus { + background-color: #004e00 !important; } + +.bg-lightest { + background-color: #f5f5f5 !important; } + +a.bg-lightest:hover, a.bg-lightest:focus, +button.bg-lightest:hover, +button.bg-lightest:focus { + background-color: gainsboro !important; } + +.bg-darker { + background-color: #111 !important; } + +a.bg-darker:hover, a.bg-darker:focus, +button.bg-darker:hover, +button.bg-darker:focus { + background-color: black !important; } + +.bg-darkest { + background-color: #000 !important; } + +a.bg-darkest:hover, a.bg-darkest:focus, +button.bg-darkest:hover, +button.bg-darkest:focus { + background-color: black !important; } + +.bg-white { + background-color: #fff !important; } + +.bg-transparent { + background-color: transparent !important; } + +.border { + border: 1px solid #e7e7e7 !important; } + +.border-top { + border-top: 1px solid #e7e7e7 !important; } + +.border-right { + border-right: 1px solid #e7e7e7 !important; } + +.border-bottom { + border-bottom: 1px solid #e7e7e7 !important; } + +.border-left { + border-left: 1px solid #e7e7e7 !important; } + +.border-0 { + border: 0 !important; } + +.border-top-0 { + border-top: 0 !important; } + +.border-right-0 { + border-right: 0 !important; } + +.border-bottom-0 { + border-bottom: 0 !important; } + +.border-left-0 { + border-left: 0 !important; } + +.border-primary { + border-color: #0075b4 !important; } + +.border-secondary { + border-color: #313131 !important; } + +.border-success { + border-color: #008100 !important; } + +.border-info { + border-color: #17a2b8 !important; } + +.border-warning { + border-color: #e2c01f !important; } + +.border-danger { + border-color: #b20610 !important; } + +.border-light { + border-color: #e7e7e7 !important; } + +.border-dark { + border-color: #313131 !important; } + +.border-inverse { + border-color: #fff !important; } + +.border-disabled { + border-color: #767676 !important; } + +.border-purchase { + border-color: #008100 !important; } + +.border-lightest { + border-color: #f5f5f5 !important; } + +.border-darker { + border-color: #111 !important; } + +.border-darkest { + border-color: #000 !important; } + +.border-white { + border-color: #fff !important; } + +.rounded { + border-radius: 0.1875rem !important; } + +.rounded-top { + border-top-left-radius: 0.1875rem !important; + border-top-right-radius: 0.1875rem !important; } + +.rounded-right { + border-top-right-radius: 0.1875rem !important; + border-bottom-right-radius: 0.1875rem !important; } + +.rounded-bottom { + border-bottom-right-radius: 0.1875rem !important; + border-bottom-left-radius: 0.1875rem !important; } + +.rounded-left { + border-top-left-radius: 0.1875rem !important; + border-bottom-left-radius: 0.1875rem !important; } + +.rounded-circle { + border-radius: 50% !important; } + +.rounded-0 { + border-radius: 0 !important; } + +.clearfix:after { + content: ""; + display: table; + clear: both; } + +.d-none { + display: none !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-block { + display: block !important; } + +.d-table { + display: table !important; } + +.d-table-row { + display: table-row !important; } + +.d-table-cell { + display: table-cell !important; } + +.d-flex { + display: flex !important; } + +.d-inline-flex { + display: inline-flex !important; } + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; } + .d-sm-inline { + display: inline !important; } + .d-sm-inline-block { + display: inline-block !important; } + .d-sm-block { + display: block !important; } + .d-sm-table { + display: table !important; } + .d-sm-table-row { + display: table-row !important; } + .d-sm-table-cell { + display: table-cell !important; } + .d-sm-flex { + display: flex !important; } + .d-sm-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 768px) { + .d-md-none { + display: none !important; } + .d-md-inline { + display: inline !important; } + .d-md-inline-block { + display: inline-block !important; } + .d-md-block { + display: block !important; } + .d-md-table { + display: table !important; } + .d-md-table-row { + display: table-row !important; } + .d-md-table-cell { + display: table-cell !important; } + .d-md-flex { + display: flex !important; } + .d-md-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; } + .d-lg-inline { + display: inline !important; } + .d-lg-inline-block { + display: inline-block !important; } + .d-lg-block { + display: block !important; } + .d-lg-table { + display: table !important; } + .d-lg-table-row { + display: table-row !important; } + .d-lg-table-cell { + display: table-cell !important; } + .d-lg-flex { + display: flex !important; } + .d-lg-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; } + .d-xl-inline { + display: inline !important; } + .d-xl-inline-block { + display: inline-block !important; } + .d-xl-block { + display: block !important; } + .d-xl-table { + display: table !important; } + .d-xl-table-row { + display: table-row !important; } + .d-xl-table-cell { + display: table-cell !important; } + .d-xl-flex { + display: flex !important; } + .d-xl-inline-flex { + display: inline-flex !important; } } + +@media print { + .d-print-none { + display: none !important; } + .d-print-inline { + display: inline !important; } + .d-print-inline-block { + display: inline-block !important; } + .d-print-block { + display: block !important; } + .d-print-table { + display: table !important; } + .d-print-table-row { + display: table-row !important; } + .d-print-table-cell { + display: table-cell !important; } + .d-print-flex { + display: flex !important; } + .d-print-inline-flex { + display: inline-flex !important; } } + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; } + .embed-responsive::before { + display: block; + content: ""; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; } + +.embed-responsive-21by9::before { + padding-top: 42.85714%; } + +.embed-responsive-16by9::before { + padding-top: 56.25%; } + +.embed-responsive-4by3::before { + padding-top: 75%; } + +.embed-responsive-1by1::before { + padding-top: 100%; } + +.flex-row { + flex-direction: row !important; } + +.flex-column { + flex-direction: column !important; } + +.flex-row-reverse { + flex-direction: row-reverse !important; } + +.flex-column-reverse { + flex-direction: column-reverse !important; } + +.flex-wrap { + flex-wrap: wrap !important; } + +.flex-nowrap { + flex-wrap: nowrap !important; } + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; } + +.justify-content-start { + justify-content: flex-start !important; } + +.justify-content-end { + justify-content: flex-end !important; } + +.justify-content-center { + justify-content: center !important; } + +.justify-content-between { + justify-content: space-between !important; } + +.justify-content-around { + justify-content: space-around !important; } + +.align-items-start { + align-items: flex-start !important; } + +.align-items-end { + align-items: flex-end !important; } + +.align-items-center { + align-items: center !important; } + +.align-items-baseline { + align-items: baseline !important; } + +.align-items-stretch { + align-items: stretch !important; } + +.align-content-start { + align-content: flex-start !important; } + +.align-content-end { + align-content: flex-end !important; } + +.align-content-center { + align-content: center !important; } + +.align-content-between { + align-content: space-between !important; } + +.align-content-around { + align-content: space-around !important; } + +.align-content-stretch { + align-content: stretch !important; } + +.align-self-auto { + align-self: auto !important; } + +.align-self-start { + align-self: flex-start !important; } + +.align-self-end { + align-self: flex-end !important; } + +.align-self-center { + align-self: center !important; } + +.align-self-baseline { + align-self: baseline !important; } + +.align-self-stretch { + align-self: stretch !important; } + +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; } + .flex-sm-column { + flex-direction: column !important; } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; } + .flex-sm-wrap { + flex-wrap: wrap !important; } + .flex-sm-nowrap { + flex-wrap: nowrap !important; } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-sm-start { + justify-content: flex-start !important; } + .justify-content-sm-end { + justify-content: flex-end !important; } + .justify-content-sm-center { + justify-content: center !important; } + .justify-content-sm-between { + justify-content: space-between !important; } + .justify-content-sm-around { + justify-content: space-around !important; } + .align-items-sm-start { + align-items: flex-start !important; } + .align-items-sm-end { + align-items: flex-end !important; } + .align-items-sm-center { + align-items: center !important; } + .align-items-sm-baseline { + align-items: baseline !important; } + .align-items-sm-stretch { + align-items: stretch !important; } + .align-content-sm-start { + align-content: flex-start !important; } + .align-content-sm-end { + align-content: flex-end !important; } + .align-content-sm-center { + align-content: center !important; } + .align-content-sm-between { + align-content: space-between !important; } + .align-content-sm-around { + align-content: space-around !important; } + .align-content-sm-stretch { + align-content: stretch !important; } + .align-self-sm-auto { + align-self: auto !important; } + .align-self-sm-start { + align-self: flex-start !important; } + .align-self-sm-end { + align-self: flex-end !important; } + .align-self-sm-center { + align-self: center !important; } + .align-self-sm-baseline { + align-self: baseline !important; } + .align-self-sm-stretch { + align-self: stretch !important; } } + +@media (min-width: 768px) { + .flex-md-row { + flex-direction: row !important; } + .flex-md-column { + flex-direction: column !important; } + .flex-md-row-reverse { + flex-direction: row-reverse !important; } + .flex-md-column-reverse { + flex-direction: column-reverse !important; } + .flex-md-wrap { + flex-wrap: wrap !important; } + .flex-md-nowrap { + flex-wrap: nowrap !important; } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-md-start { + justify-content: flex-start !important; } + .justify-content-md-end { + justify-content: flex-end !important; } + .justify-content-md-center { + justify-content: center !important; } + .justify-content-md-between { + justify-content: space-between !important; } + .justify-content-md-around { + justify-content: space-around !important; } + .align-items-md-start { + align-items: flex-start !important; } + .align-items-md-end { + align-items: flex-end !important; } + .align-items-md-center { + align-items: center !important; } + .align-items-md-baseline { + align-items: baseline !important; } + .align-items-md-stretch { + align-items: stretch !important; } + .align-content-md-start { + align-content: flex-start !important; } + .align-content-md-end { + align-content: flex-end !important; } + .align-content-md-center { + align-content: center !important; } + .align-content-md-between { + align-content: space-between !important; } + .align-content-md-around { + align-content: space-around !important; } + .align-content-md-stretch { + align-content: stretch !important; } + .align-self-md-auto { + align-self: auto !important; } + .align-self-md-start { + align-self: flex-start !important; } + .align-self-md-end { + align-self: flex-end !important; } + .align-self-md-center { + align-self: center !important; } + .align-self-md-baseline { + align-self: baseline !important; } + .align-self-md-stretch { + align-self: stretch !important; } } + +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; } + .flex-lg-column { + flex-direction: column !important; } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; } + .flex-lg-wrap { + flex-wrap: wrap !important; } + .flex-lg-nowrap { + flex-wrap: nowrap !important; } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-lg-start { + justify-content: flex-start !important; } + .justify-content-lg-end { + justify-content: flex-end !important; } + .justify-content-lg-center { + justify-content: center !important; } + .justify-content-lg-between { + justify-content: space-between !important; } + .justify-content-lg-around { + justify-content: space-around !important; } + .align-items-lg-start { + align-items: flex-start !important; } + .align-items-lg-end { + align-items: flex-end !important; } + .align-items-lg-center { + align-items: center !important; } + .align-items-lg-baseline { + align-items: baseline !important; } + .align-items-lg-stretch { + align-items: stretch !important; } + .align-content-lg-start { + align-content: flex-start !important; } + .align-content-lg-end { + align-content: flex-end !important; } + .align-content-lg-center { + align-content: center !important; } + .align-content-lg-between { + align-content: space-between !important; } + .align-content-lg-around { + align-content: space-around !important; } + .align-content-lg-stretch { + align-content: stretch !important; } + .align-self-lg-auto { + align-self: auto !important; } + .align-self-lg-start { + align-self: flex-start !important; } + .align-self-lg-end { + align-self: flex-end !important; } + .align-self-lg-center { + align-self: center !important; } + .align-self-lg-baseline { + align-self: baseline !important; } + .align-self-lg-stretch { + align-self: stretch !important; } } + +@media (min-width: 1200px) { + .flex-xl-row { + flex-direction: row !important; } + .flex-xl-column { + flex-direction: column !important; } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; } + .flex-xl-wrap { + flex-wrap: wrap !important; } + .flex-xl-nowrap { + flex-wrap: nowrap !important; } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .justify-content-xl-start { + justify-content: flex-start !important; } + .justify-content-xl-end { + justify-content: flex-end !important; } + .justify-content-xl-center { + justify-content: center !important; } + .justify-content-xl-between { + justify-content: space-between !important; } + .justify-content-xl-around { + justify-content: space-around !important; } + .align-items-xl-start { + align-items: flex-start !important; } + .align-items-xl-end { + align-items: flex-end !important; } + .align-items-xl-center { + align-items: center !important; } + .align-items-xl-baseline { + align-items: baseline !important; } + .align-items-xl-stretch { + align-items: stretch !important; } + .align-content-xl-start { + align-content: flex-start !important; } + .align-content-xl-end { + align-content: flex-end !important; } + .align-content-xl-center { + align-content: center !important; } + .align-content-xl-between { + align-content: space-between !important; } + .align-content-xl-around { + align-content: space-around !important; } + .align-content-xl-stretch { + align-content: stretch !important; } + .align-self-xl-auto { + align-self: auto !important; } + .align-self-xl-start { + align-self: flex-start !important; } + .align-self-xl-end { + align-self: flex-end !important; } + .align-self-xl-center { + align-self: center !important; } + .align-self-xl-baseline { + align-self: baseline !important; } + .align-self-xl-stretch { + align-self: stretch !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-none { + float: none !important; } + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; } + .float-sm-right { + float: right !important; } + .float-sm-none { + float: none !important; } } + +@media (min-width: 768px) { + .float-md-left { + float: left !important; } + .float-md-right { + float: right !important; } + .float-md-none { + float: none !important; } } + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; } + .float-lg-right { + float: right !important; } + .float-lg-none { + float: none !important; } } + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; } + .float-xl-right { + float: right !important; } + .float-xl-none { + float: none !important; } } + +.position-static { + position: static !important; } + +.position-relative { + position: relative !important; } + +.position-absolute { + position: absolute !important; } + +.position-fixed { + position: fixed !important; } + +.position-sticky { + position: sticky !important; } + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; } + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; } + +@supports (position: sticky) { + .sticky-top { + position: sticky; + top: 0; + z-index: 1020; } } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + clip-path: inset(50%); + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; + clip-path: none; } + +.w-25 { + width: 25% !important; } + +.w-50 { + width: 50% !important; } + +.w-75 { + width: 75% !important; } + +.w-100 { + width: 100% !important; } + +.h-25 { + height: 25% !important; } + +.h-50 { + height: 50% !important; } + +.h-75 { + height: 75% !important; } + +.h-100 { + height: 100% !important; } + +.mw-100 { + max-width: 100% !important; } + +.mh-100 { + max-height: 100% !important; } + +.m-0 { + margin: 0 !important; } + +.mt-0, +.my-0 { + margin-top: 0 !important; } + +.mr-0, +.mx-0 { + margin-right: 0 !important; } + +.mb-0, +.my-0 { + margin-bottom: 0 !important; } + +.ml-0, +.mx-0 { + margin-left: 0 !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; } + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; } + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; } + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; } + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; } + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; } + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; } + +.m-3 { + margin: 1rem !important; } + +.mt-3, +.my-3 { + margin-top: 1rem !important; } + +.mr-3, +.mx-3 { + margin-right: 1rem !important; } + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; } + +.ml-3, +.mx-3 { + margin-left: 1rem !important; } + +.m-4 { + margin: 1.5rem !important; } + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; } + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; } + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; } + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; } + +.m-5 { + margin: 3rem !important; } + +.mt-5, +.my-5 { + margin-top: 3rem !important; } + +.mr-5, +.mx-5 { + margin-right: 3rem !important; } + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; } + +.ml-5, +.mx-5 { + margin-left: 3rem !important; } + +.p-0 { + padding: 0 !important; } + +.pt-0, +.py-0 { + padding-top: 0 !important; } + +.pr-0, +.px-0 { + padding-right: 0 !important; } + +.pb-0, +.py-0 { + padding-bottom: 0 !important; } + +.pl-0, +.px-0 { + padding-left: 0 !important; } + +.p-1 { + padding: 0.25rem !important; } + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; } + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; } + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; } + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; } + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; } + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; } + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; } + +.p-3 { + padding: 1rem !important; } + +.pt-3, +.py-3 { + padding-top: 1rem !important; } + +.pr-3, +.px-3 { + padding-right: 1rem !important; } + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; } + +.pl-3, +.px-3 { + padding-left: 1rem !important; } + +.p-4 { + padding: 1.5rem !important; } + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; } + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; } + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; } + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; } + +.p-5 { + padding: 3rem !important; } + +.pt-5, +.py-5 { + padding-top: 3rem !important; } + +.pr-5, +.px-5 { + padding-right: 3rem !important; } + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; } + +.pl-5, +.px-5 { + padding-left: 3rem !important; } + +.m-auto { + margin: auto !important; } + +.mt-auto, +.my-auto { + margin-top: auto !important; } + +.mr-auto, +.mx-auto { + margin-right: auto !important; } + +.mb-auto, +.my-auto { + margin-bottom: auto !important; } + +.ml-auto, +.mx-auto { + margin-left: auto !important; } + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; } + .m-sm-1 { + margin: 0.25rem !important; } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; } + .m-sm-2 { + margin: 0.5rem !important; } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; } + .m-sm-3 { + margin: 1rem !important; } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; } + .m-sm-4 { + margin: 1.5rem !important; } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; } + .m-sm-5 { + margin: 3rem !important; } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; } + .p-sm-0 { + padding: 0 !important; } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; } + .p-sm-1 { + padding: 0.25rem !important; } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; } + .p-sm-2 { + padding: 0.5rem !important; } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; } + .p-sm-3 { + padding: 1rem !important; } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; } + .p-sm-4 { + padding: 1.5rem !important; } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; } + .p-sm-5 { + padding: 3rem !important; } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; } + .m-sm-auto { + margin: auto !important; } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; } } + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; } + .m-md-1 { + margin: 0.25rem !important; } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; } + .m-md-2 { + margin: 0.5rem !important; } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; } + .m-md-3 { + margin: 1rem !important; } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; } + .m-md-4 { + margin: 1.5rem !important; } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; } + .m-md-5 { + margin: 3rem !important; } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; } + .p-md-0 { + padding: 0 !important; } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; } + .p-md-1 { + padding: 0.25rem !important; } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; } + .p-md-2 { + padding: 0.5rem !important; } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; } + .p-md-3 { + padding: 1rem !important; } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; } + .p-md-4 { + padding: 1.5rem !important; } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; } + .p-md-5 { + padding: 3rem !important; } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; } + .m-md-auto { + margin: auto !important; } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; } } + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; } + .m-lg-1 { + margin: 0.25rem !important; } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; } + .m-lg-2 { + margin: 0.5rem !important; } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; } + .m-lg-3 { + margin: 1rem !important; } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; } + .m-lg-4 { + margin: 1.5rem !important; } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; } + .m-lg-5 { + margin: 3rem !important; } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; } + .p-lg-0 { + padding: 0 !important; } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; } + .p-lg-1 { + padding: 0.25rem !important; } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; } + .p-lg-2 { + padding: 0.5rem !important; } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; } + .p-lg-3 { + padding: 1rem !important; } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; } + .p-lg-4 { + padding: 1.5rem !important; } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; } + .p-lg-5 { + padding: 3rem !important; } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; } + .m-lg-auto { + margin: auto !important; } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; } } + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; } + .m-xl-1 { + margin: 0.25rem !important; } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; } + .m-xl-2 { + margin: 0.5rem !important; } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; } + .m-xl-3 { + margin: 1rem !important; } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; } + .m-xl-4 { + margin: 1.5rem !important; } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; } + .m-xl-5 { + margin: 3rem !important; } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; } + .p-xl-0 { + padding: 0 !important; } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; } + .p-xl-1 { + padding: 0.25rem !important; } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; } + .p-xl-2 { + padding: 0.5rem !important; } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; } + .p-xl-3 { + padding: 1rem !important; } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; } + .p-xl-4 { + padding: 1.5rem !important; } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; } + .p-xl-5 { + padding: 3rem !important; } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; } + .m-xl-auto { + margin: auto !important; } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; } } + +.text-justify { + text-align: justify !important; } + +.text-nowrap { + white-space: nowrap !important; } + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; } + .text-sm-right { + text-align: right !important; } + .text-sm-center { + text-align: center !important; } } + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; } + .text-md-right { + text-align: right !important; } + .text-md-center { + text-align: center !important; } } + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; } + .text-lg-right { + text-align: right !important; } + .text-lg-center { + text-align: center !important; } } + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; } + .text-xl-right { + text-align: right !important; } + .text-xl-center { + text-align: center !important; } } + +.text-lowercase { + text-transform: lowercase !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.text-capitalize { + text-transform: capitalize !important; } + +.font-weight-light { + font-weight: 300 !important; } + +.font-weight-normal { + font-weight: 400 !important; } + +.font-weight-bold { + font-weight: 700 !important; } + +.font-italic { + font-style: italic !important; } + +.text-white { + color: #fff !important; } + +.text-primary { + color: #0075b4 !important; } + +a.text-primary:hover, a.text-primary:focus { + color: #005481 !important; } + +.text-secondary { + color: #313131 !important; } + +a.text-secondary:hover, a.text-secondary:focus { + color: #181818 !important; } + +.text-success { + color: #008100 !important; } + +a.text-success:hover, a.text-success:focus { + color: #004e00 !important; } + +.text-info { + color: #17a2b8 !important; } + +a.text-info:hover, a.text-info:focus { + color: #117a8b !important; } + +.text-warning { + color: #e2c01f !important; } + +a.text-warning:hover, a.text-warning:focus { + color: #b69b18 !important; } + +.text-danger { + color: #b20610 !important; } + +a.text-danger:hover, a.text-danger:focus { + color: #81040c !important; } + +.text-light { + color: #e7e7e7 !important; } + +a.text-light:hover, a.text-light:focus { + color: #cecece !important; } + +.text-dark { + color: #313131 !important; } + +a.text-dark:hover, a.text-dark:focus { + color: #181818 !important; } + +.text-inverse { + color: #fff !important; } + +a.text-inverse:hover, a.text-inverse:focus { + color: #e6e6e6 !important; } + +.text-disabled { + color: #767676 !important; } + +a.text-disabled:hover, a.text-disabled:focus { + color: #5d5d5d !important; } + +.text-purchase { + color: #008100 !important; } + +a.text-purchase:hover, a.text-purchase:focus { + color: #004e00 !important; } + +.text-lightest { + color: #f5f5f5 !important; } + +a.text-lightest:hover, a.text-lightest:focus { + color: gainsboro !important; } + +.text-darker { + color: #111 !important; } + +a.text-darker:hover, a.text-darker:focus { + color: black !important; } + +.text-darkest { + color: #000 !important; } + +a.text-darkest:hover, a.text-darkest:focus { + color: black !important; } + +.text-muted { + color: #767676 !important; } + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } + +.visible { + visibility: visible !important; } + +.invisible { + visibility: hidden !important; } + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + -webkit-border-radius: 0.1875rem; + -moz-border-radius: 0.1875rem; + -ms-border-radius: 0.1875rem; + -o-border-radius: 0.1875rem; + border-radius: 0.1875rem; } + .badge:empty { + display: none; } + +.btn .badge { + position: relative; + top: -1px; } + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + -webkit-border-radius: 10rem; + -moz-border-radius: 10rem; + -ms-border-radius: 10rem; + -o-border-radius: 10rem; + border-radius: 10rem; } + +.badge-primary { + color: #fff; + background-color: #0075b4; } + .badge-primary[href]:hover, .badge-primary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #005481; } + +.badge-secondary { + color: #fff; + background-color: #313131; } + .badge-secondary[href]:hover, .badge-secondary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #181818; } + +.badge-success { + color: #fff; + background-color: #008100; } + .badge-success[href]:hover, .badge-success[href]:focus { + color: #fff; + text-decoration: none; + background-color: #004e00; } + +.badge-info { + color: #fff; + background-color: #17a2b8; } + .badge-info[href]:hover, .badge-info[href]:focus { + color: #fff; + text-decoration: none; + background-color: #117a8b; } + +.badge-warning { + color: #111; + background-color: #e2c01f; } + .badge-warning[href]:hover, .badge-warning[href]:focus { + color: #111; + text-decoration: none; + background-color: #b69b18; } + +.badge-danger { + color: #fff; + background-color: #b20610; } + .badge-danger[href]:hover, .badge-danger[href]:focus { + color: #fff; + text-decoration: none; + background-color: #81040c; } + +.badge-light { + color: #111; + background-color: #e7e7e7; } + .badge-light[href]:hover, .badge-light[href]:focus { + color: #111; + text-decoration: none; + background-color: #cecece; } + +.badge-dark { + color: #fff; + background-color: #313131; } + .badge-dark[href]:hover, .badge-dark[href]:focus { + color: #fff; + text-decoration: none; + background-color: #181818; } + +.badge-inverse { + color: #111; + background-color: #fff; } + .badge-inverse[href]:hover, .badge-inverse[href]:focus { + color: #111; + text-decoration: none; + background-color: #e6e6e6; } + +.badge-disabled { + color: #fff; + background-color: #767676; } + .badge-disabled[href]:hover, .badge-disabled[href]:focus { + color: #fff; + text-decoration: none; + background-color: #5d5d5d; } + +.badge-purchase { + color: #fff; + background-color: #008100; } + .badge-purchase[href]:hover, .badge-purchase[href]:focus { + color: #fff; + text-decoration: none; + background-color: #004e00; } + +.badge-lightest { + color: #111; + background-color: #f5f5f5; } + .badge-lightest[href]:hover, .badge-lightest[href]:focus { + color: #111; + text-decoration: none; + background-color: gainsboro; } + +.badge-darker { + color: #fff; + background-color: #111; } + .badge-darker[href]:hover, .badge-darker[href]:focus { + color: #fff; + text-decoration: none; + background-color: black; } + +.badge-darkest { + color: #fff; + background-color: #000; } + .badge-darkest[href]:hover, .badge-darkest[href]:focus { + color: #fff; + text-decoration: none; + background-color: black; } + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 0.1875rem; + -moz-border-radius: 0.1875rem; + -ms-border-radius: 0.1875rem; + -o-border-radius: 0.1875rem; + border-radius: 0.1875rem; } + .popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.1875rem; } + .popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; } + .bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow { + bottom: calc((0.5rem + 1px) * -1); } + .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before, + .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { + border-width: 0.5rem 0.5rem 0; } + .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before { + bottom: 0; + border-top-color: rgba(0, 0, 0, 0.25); } + .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { + bottom: 1px; + border-top-color: #fff; } + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; } + .bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.1875rem 0; } + .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before, + .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { + border-width: 0.5rem 0.5rem 0.5rem 0; } + .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before { + left: 0; + border-right-color: rgba(0, 0, 0, 0.25); } + .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { + left: 1px; + border-right-color: #fff; } + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; } + .bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow { + top: calc((0.5rem + 1px) * -1); } + .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before, + .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { + border-width: 0 0.5rem 0.5rem 0.5rem; } + .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before { + top: 0; + border-bottom-color: rgba(0, 0, 0, 0.25); } + .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { + top: 1px; + border-bottom-color: #fff; } + .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; } + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; } + .bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.1875rem 0; } + .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before, + .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { + border-width: 0.5rem 0 0.5rem 0.5rem; } + .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before { + right: 0; + border-left-color: rgba(0, 0, 0, 0.25); } + .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { + right: 1px; + border-left-color: #fff; } + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + color: inherit; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-top-left-radius: calc(0.1875rem - 1px); + -moz-border-topleft-radius: calc(0.1875rem - 1px); + border-top-left-radius: calc(0.1875rem - 1px); + -webkit-border-top-right-radius: calc(0.1875rem - 1px); + -moz-border-topright-radius: calc(0.1875rem - 1px); + border-top-right-radius: calc(0.1875rem - 1px); } + .popover-header:empty { + display: none; } + +.popover-body { + padding: 0.5rem 0.75rem; + color: #313131; } + +/* + * In pursuit of decoupling the built-in XBlocks from edx-platform's Sass build + * and ensuring comprehensive theming support in the extracted XBlocks, + * we need to expose Sass variables as CSS variables. + * + * Ticket/Issue: https://github.com/openedx/edx-platform/issues/35173 + */ +/* stylelint-disable-line */ +/* stylelint-disable-line */ +.btn-default:disabled, .btn-primary:disabled, .btn-brand:disabled, .btn-upgrade:disabled, .is-disabled.btn-default, .is-disabled.btn-primary, .is-disabled.btn-brand, .is-disabled.btn-upgrade { + pointer-events: none; + outline: none; + cursor: not-allowed; } + +.btn-small.btn-default, .btn-small.btn-primary, .btn-small.btn-brand, .btn-small.btn-upgrade { + padding: 0.625rem; + font-size: 14px; } + +:root { + --action-primary-active-bg: #0075b4; + --actions-dropdown-width: 145px; + --actions-dropdown-offset: 100px; + --base-font-size: 18px; + --base-line-height: 1.5em; + --baseline: 20px; + --black: #000; + --black-t2: rgba(0, 0, 0, 0.5); + --blue: #0075b4; + --blue-d1: #005e90; + --blue-d2: #00466c; + --blue-d4: #001724; + --blue-s1: #0075b4; + --body-color: #313131; + --border-color: #e7e7e7; + --border-color-4: #fcfcfc; + --bp-screen-lg: 1024px; + --btn-brand-focus-background: #065683; + --correct: #008100; + --comment-image-dimension: calc(var(--baseline) * 2); + --danger: #b20610; + --darkGrey: #8891a1; + --error-color: #cb0712; + --error-color-dark: #95050d; + --error-color-light: #f95861; + --font-bold: 700; + --font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + --forum-color-active-thread: var(--forum-color-primary); + --forum-color-hover: #065683; + --forum-color-active-text: var(--white); + --forum-color-background: #fff; + --forum-x-large-font-size: 21px; + --forum-color-copy-light: #414141; + --forum-large-font-size: 16px; + --forum-border-radius: 3px; + --forum-base-font-size: 14px; + --forum-small-font-size: 12px; + --forum-color-border: var(--gray-300); + --forum-color-background-light: whitesmoke; + --forum-color-editor-preview-label: var(--forum-color-copy-light); + --forum-color-following: var(--forum-color-primary); + --forum-color-error: #b20610; + --forum-color-pinned: #982c62; + --forum-color-reported: #982c62; + --forum-color-closed: var(--black); + --forum-color-staff: var(--forum-color-primary); + --forum-color-community-ta: var(--green); + --forum-color-response-count: var(--forum-color-copy-light); + --forum-color-read-post: var(--forum-color-copy-light); + --forum-color-hover-thread: var(--forum-color-background-light); + --forum-color-reading-thread: var(--forum-color-background-light); + --forum-color-never-read-post: var(--forum-color-primary); + --forum-color-navigation-bar: var(--forum-color-background-light); + --forum-color-primary: #0075b4; + --general-color-accent: #0075b4; + --green: #008100; + --gray: #767676; + --gray-300: #d9d9d9; + --gray-d1: #5e5e5e; + --gray-l2: #adadad; + --gray-l3: #c8c8c8; + --gray-l4: #e4e4e4; + --gray-l6: #f8f8f8; + --icon-correct: url("../images/correct-icon.png"); + --icon-incorrect: url("../images/incorrect-icon.png"); + --icon-info: url("../images/info-icon.png"); + --icon-partially-correct: url("../images/partially-correct-icon.png"); + --icon-spinner: url("../images/spinner.gif"); + --icon-unanswered: url("../images/unanswered-icon.png"); + --incorrect: #b20610; + --lightGrey: #edf1f5; + --lighter-base-font-color: #646464; + --link-color: #1b6d99; + --line-height-base: 1.5; + --medium-font-size: 0.9em; + --pink: #c2387d; + --partially-correct: #008100; + --primary: #0075b4; + --post-image-dimension: calc(var(--baseline) * 3); + --response-image-dimension: calc(var(--baseline) * 2.5); + --shadow: rgba(0, 0, 0, 0.2); + --shadow-l1: rgba(0, 0, 0, 0.1); + --sidebar-color: #f6f6f6; + --small-font-size: 80%; + --submitted: #0075b4; + --success: #008100; + --serif: Georgia, Cambria, "Times New Roman", Times, serif; + --tmg-f2: 0.25s; + --tmg-s2: 2s; + --transparent: transparent; + --uxpl-gray-background: #d9d9d9; + --uxpl-gray-base: #414141; + --uxpl-gray-dark: #111111; + --very-light-text: white; + --warning: #e2c01f; + --warning-color: #ffc01f; + --warning-color-accent: #fffcdd; + --white: #fff; + --yellow: #e2c01f; } + +/* stylelint-disable-line */ +/* stylelint-disable-line */ +/* HTML5 Boilerplate */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +nav, +section { + display: block; } + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; } + +audio:not([controls]) { + display: none; } + +[hidden] { + display: none; } + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } + +html, +button, +input, +select, +textarea { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #222; } + +body { + margin: 0; + font-size: 1em; + line-height: 1.4; } + +a:not(.btn) { + color: #1b6d99; } + +a:visited:not(.btn) { + color: #003655; } + +a:hover:not(.btn), +a:focus:not(.btn) { + color: #0079bc; } + +abbr[title] { + border-bottom: 1px dotted; } + +b, +strong { + font-weight: bold; } + +blockquote { + margin: 1em 40px; } + +dfn { + font-style: italic; } + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; } + +ins { + background: #ff9; + color: #000; + text-decoration: none; } + +mark { + background: #ff0; + color: #000; + font-style: italic; + font-weight: bold; } + +pre, +code, +kbd, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; } + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; } + +q { + quotes: none; } + +q::before, +q::after { + content: ""; + content: none; } + +small { + font-size: 85%; } + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +ul, +ol { + padding: 0 0 0 40px; + margin: 1em 0; } + +dd { + margin: 0 0 0 40px; } + +nav ul, +nav ol { + list-style: none; + margin: 0; + padding: 0; } + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; } + +svg:not(:root) { + overflow: hidden; } + +figure { + margin: 0; } + +form { + margin: 0; } + +fieldset { + border: 0; + margin: 0; + padding: 0; } + +label { + cursor: pointer; } + +legend { + border: 0; + *margin-left: -7px; + padding: 0; + white-space: normal; } + +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; } + +button, +input { + line-height: normal; } + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; + *overflow: visible; } + +button[disabled], +input[disabled] { + cursor: default; } + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; + *width: 13px; + *height: 13px; } + +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; } + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; } + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +button:-moz-focusring { + outline: 1px dotted black; } + +textarea { + overflow: auto; + vertical-align: top; + resize: vertical; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td { + vertical-align: top; } + +.chromeframe { + margin: 0.2em 0; + background: #ccc; + color: black; + padding: 0.2em 0; } + +.ir { + display: block; + border: 0; + text-indent: -999em; + overflow: hidden; + background-color: transparent; + background-repeat: no-repeat; + text-align: left; + direction: ltr; + *line-height: 0; } + +.ir br { + display: none; } + +.hidden { + display: none !important; + visibility: hidden; } + +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } + +.invisible { + visibility: hidden; } + +.clearfix::before, +.clearfix::after { + content: ""; + display: table; } + +.clearfix::after { + clear: both; } + +.clearfix { + *zoom: 1; } + +@media print { + * { + background: transparent; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; + filter: none !important; + -ms-filter: none !important; } + html, + body { + background: transparent !important; } + a, + a:visited { + text-decoration: underline; } + abbr[title]::after { + content: " (" attr(title) ")"; } + .ir a::after { + content: ""; } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 1cm 1.2cm 2cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } } + +/* stylelint-disable-line */ +/* stylelint-disable-line */ +.discussion .actions-dropdown { + z-index: 10; } + +.discussion-thread .discussion-article .thread-wrapper .discussion-post .inline-comment-count { + z-index: 100; } + +.discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list, .discussion .actions-dropdown, .discussion .responses, .discussion .comments { + list-style: none; + margin: 0; + padding: 0; + text-indent: 0; } + .discussion .post-actions-list li, + .discussion .response-actions-list li, + .discussion .comment-actions-list li, .discussion .actions-dropdown li, .discussion .responses li, .discussion .comments li, .discussion .post-actions-list dt, + .discussion .response-actions-list dt, + .discussion .comment-actions-list dt, .discussion .actions-dropdown dt, .discussion .responses dt, .discussion .comments dt, .discussion .post-actions-list dd, + .discussion .response-actions-list dd, + .discussion .comment-actions-list dd, .discussion .actions-dropdown dd, .discussion .responses dd, .discussion .comments dd { + margin: 0; + padding: 0; } + +.btn-default:disabled, .btn-primary:disabled, .btn-brand:disabled, .btn-upgrade:disabled, .is-disabled.btn-default, .is-disabled.btn-primary, .is-disabled.btn-brand, .is-disabled.btn-upgrade { + pointer-events: none; + outline: none; + cursor: not-allowed; } + +.btn-small.btn-default, .btn-small.btn-primary, .btn-small.btn-brand, .btn-small.btn-upgrade { + padding: 0.625rem; + font-size: 14px; } + +.breadcrumbs { + font-size: 0.875rem; + line-height: line-height(small); } + .breadcrumbs .nav-item { + margin-left: 5px; + display: inline-block; } + @media (max-width: 1199.98px) { + .breadcrumbs .nav-item { + max-width: 240px; } } + @media (max-width: 767.98px) { + .breadcrumbs .nav-item { + max-width: 140px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; } } + @media (max-width: 575.98px) { + .breadcrumbs .nav-item:not(:first-child) { + max-width: 60px; } } + .breadcrumbs .nav-item.nav-item-course { + max-width: none; } + .breadcrumbs .nav-item a, + .breadcrumbs .nav-item a:visited { + color: #0075b4; } + .breadcrumbs .nav-item a:hover { + color: #065683; } + .breadcrumbs .fa-angle-right { + margin-left: 5px; + display: inline-block; + color: #313131; } + @media (max-width: 767.98px) { + .breadcrumbs .fa-angle-right { + position: relative; + top: -5px; } } + .breadcrumbs .fa-angle-right:last-child { + display: none; } + +.btn-default, .btn-primary, .btn-brand, .btn-upgrade { + display: inline-block; + background-color: transparent; + background-image: none; + border-style: solid; + border-radius: 0.1875rem; + border-width: 1px; + box-shadow: none; + padding: 0.625rem 1.25rem; + font-size: 16px; + font-weight: normal; + text-shadow: none; + text-transform: capitalize; } + .block.btn-default, .block.btn-primary, .block.btn-brand, .block.btn-upgrade { + display: block; + width: 100%; } + .btn-default .icon, .btn-primary .icon, .btn-brand .icon, .btn-upgrade .icon { + display: inline-block; + vertical-align: baseline; } + .btn-default .icon:only-child, .btn-primary .icon:only-child, .btn-brand .icon:only-child, .btn-upgrade .icon:only-child, + .sr-only + .btn-default .icon, + .sr-only + .btn-primary .icon, + .sr-only + .btn-brand .icon, + .sr-only + .btn-upgrade .icon { + margin-right: 0; } + +.btn-default { + border-color: transparent; + background: transparent; + color: #0075b4; } + .btn-default:hover, .btn-default.is-hovered, .btn-default:focus, .btn-default.is-focused { + border-color: #0075b4; + background-color: transparent; + color: #0075b4; } + .btn-default:active, .btn-default.is-pressed, .btn-default.is-active { + border-color: #0075b4; + color: #0075b4; } + .btn-default:disabled, .btn-default.is-disabled { + border-color: #d2d0d0; + color: #6b6969; } + +.btn-primary, .btn-brand { + border-color: #0075b4; + background: #0075b4; + color: #fcfcfc; } + .btn-primary:hover, .btn-brand:hover, .btn-primary.is-hovered, .is-hovered.btn-brand, .btn-primary:focus, .btn-brand:focus, .btn-primary.is-focused, .is-focused.btn-brand { + border-color: #065683; + background-color: #065683; + color: #fcfcfc; } + .btn-primary:active, .btn-brand:active, .btn-primary.is-pressed, .is-pressed.btn-brand, .btn-primary.is-active, .is-active.btn-brand { + border-color: #0075b4; + background: #0075b4; } + .btn-primary:disabled, .btn-brand:disabled, .btn-primary.is-disabled, .is-disabled.btn-brand { + border-color: #d2d0d0; + background: #f2f3f3; + color: #676666; } + +.btn-upgrade { + border-color: #008100; + background: #008100; + color: #fcfcfc; } + .btn-upgrade:hover, .btn-upgrade.is-hovered, .btn-upgrade:focus, .btn-upgrade.is-focused { + border-color: #009b00; + background-color: #009b00; + color: #fcfcfc; } + .btn-upgrade:disabled, .btn-upgrade.is-disabled { + border-color: #d2d0d0; + background: #f2f3f3; + color: #fcfcfc; } + +.edx-cookie-banner-wrapper { + background: #f2f8fd; + box-sizing: border-box; + /** Base Styles - start **/ + text-align: left; + line-height: 1.5; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 1rem; + font-weight: 400; + /** Base Styles - end **/ } + .edx-cookie-banner-wrapper .alert { + position: relative; + padding: 8px 20px; } + .edx-cookie-banner-wrapper .alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + background: transparent; + border: 0; + text-shadow: 0 1px 0 #fff; + opacity: 0.5; + float: right; + line-height: 1; + font-size: 1.5rem; + font-weight: 500; } + .edx-cookie-banner-wrapper .alert-dismissible .btn { + display: inline-block; + text-align: center; + white-space: nowrap; + vertical-align: middle; } + .edx-cookie-banner-wrapper .edx-cookie-banner { + box-sizing: border-box; + display: flex; + justify-content: space-between; + margin: 0 auto; + background: inherit; + border: none; } + .edx-cookie-banner-wrapper .edx-cookie-banner .policy-link { + color: #19291F; + text-decoration: underline; } + .edx-cookie-banner-wrapper .edx-cookie-banner .policy-link:focus, .edx-cookie-banner-wrapper .edx-cookie-banner .policy-link:hover { + color: #075683; + border: none; } + .edx-cookie-banner-wrapper .edx-cookie-banner .alert-dialog { + margin: auto; + color: #4e4e4e; + text-align: center; + max-width: 800px; + font-size: 14px; } + .edx-cookie-banner-wrapper .edx-cookie-banner .btn.close { + padding: 4px; + color: #19291F; } + .edx-cookie-banner-wrapper .edx-cookie-banner .btn.close:focus, .edx-cookie-banner-wrapper .edx-cookie-banner .btn.close:hover { + color: #075683; + cursor: pointer; } + +.discussion .responses .posted-by { + font-weight: 700; } + +.discussion-article .posted-details .username { + font-weight: 600; } + +.discussion .post-label, .discussion-article .posted-details, .discussion-post .post-context { + font-weight: 300; } + +.discussion-response .response-body, .discussion-post .post-body, .discussion .action-button .action-label, .discussion .actions-dropdown .action-list-item, .view-discussion-home .label, .view-discussion-home .home-description, .view-discussion-home .home-stats .stats-grouping .profile-stat, .discussion-article .posted-details, .discussion-comment .response-body, .discussion-post .post-context, .discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; } + +.discussion-response .response-body, .discussion-post .post-body { + font-size: 14px; + line-height: 20.72px; } + +.discussion .action-button .action-label, .discussion .actions-dropdown .action-list-item, .view-discussion-home .label, .view-discussion-home .home-description, .view-discussion-home .home-stats .stats-grouping .profile-stat, .discussion-article .posted-details, .discussion-comment .response-body, .discussion-post .post-context, .discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list { + font-size: 12px; + line-height: 17.76px; } + +.forum-nav-thread-comments-count { + font-weight: 600; } + +.discussion-response .response-header-content .username, .forum-nav .search-alert-content .message em, .forum-nav .search-alert-content .link-jump, .forum-nav .search-alert-controls .control { + font-weight: 700; } + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +.discussion-body, .discussion-module { + width: 100%; + border: none; + background: transparent; + box-shadow: none; } + .discussion-body:after, .discussion-module:after { + content: ""; + display: table; + clear: both; } + @media (min-width: 768px) { + .discussion-body, .discussion-module { + display: flex; + flex-direction: row-reverse; } } + .discussion-body .bottom-post-status, .discussion-module .bottom-post-status { + padding: 30px; + font-size: var(--forum-x-large-font-size); + font-weight: 700; + color: var(--forum-color-copy-light); + text-align: center; } + .discussion-body .discussion-article, .discussion-module .discussion-article { + position: relative; } + .discussion-body .discussion-article a, .discussion-module .discussion-article a, + .discussion-body .discussion-article p, .discussion-module .discussion-article p { + word-wrap: break-word; } + .discussion-body .main-article.new, .discussion-module .main-article.new { + display: none; + padding: calc(var(--baseline) * 2.5); } + .discussion-body .discussion-reply-new, .discussion-module .discussion-reply-new { + transition: opacity 0.2s linear 0s; } + .discussion-body .discussion-reply-new:after, .discussion-module .discussion-reply-new:after { + content: ""; + display: table; + clear: both; } + .discussion-body .discussion-reply-new h4, .discussion-module .discussion-reply-new h4 { + font-size: var(--forum-large-font-size); + font-weight: 700; } + .discussion-body .reply-post-control, .discussion-module .reply-post-control { + margin-top: var(--baseline); } + +.discussion-module { + display: block; + position: relative; + border-radius: var(--forum-border-radius); } + .discussion-module header .anonymous { + font-size: var(--forum-base-font-size); } + .discussion-module .inline-discussion-topic { + width: 100%; + font-size: var(--forum-small-font-size); } + .discussion-module .inline-discussion-topic .inline-discussion-topic-title { + font-weight: bold; } + .discussion-module .discussion-module-header { + float: left; + width: 57.44681%; + margin-bottom: calc(var(--baseline) * 0.75); } + .discussion-module .add_post_btn_container { + text-align: right; + width: 100%; + height: calc(2 * var(--baseline)); } + .discussion-module div.add-response.post-extended-content { + margin-top: var(--baseline); + margin-bottom: var(--baseline); } + +.discussion-show { + float: right; + position: relative; + top: 3px; + font-size: var(--forum-base-font-size); + text-align: center; } + .discussion-show.shown { + background-color: #fff; + color: #0075b4; } + +section.discussion:after { + content: ""; + display: table; + clear: both; } + +.new-post-article .forum-new-post-form { + padding: var(--baseline); } + +.new-post-article .inner-wrapper { + max-width: 1920px; + min-width: 760px; + margin: auto; } + +.xblock-student_view-discussion { + padding-top: 15px !important; } + +section.discussion-pagination { + margin-top: calc(var(--baseline) * 1.5); } + section.discussion-pagination nav.discussion-paginator { + float: right; } + section.discussion-pagination nav.discussion-paginator ol li { + padding-right: calc(var(--baseline) / 2); + list-style: none; + display: inline-block; } + section.discussion-pagination nav.discussion-paginator ol li.current-page span { + display: inline-block; + height: 35px; + padding: 0 calc(var(--baseline) * 0.75); + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + font-size: var(--forum-base-font-size); + font-weight: 700; + line-height: 32px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); } + +.discussion-module .btn, +.wmd-prompt-dialog .btn, .discussion-module .btn-brand, +.wmd-prompt-dialog .btn-brand { + transition: color 0.125s ease-in-out 0s, border-color 0.125s ease-in-out 0s, background 0.125s ease-in-out 0s, box-shadow 0.125s ease-in-out 0s; + display: inline-block; + border: 1px solid var(--forum-color-active-thread); + border-radius: 3px; + margin: 0; + background-image: none; + box-shadow: none; + height: 40px; + text-shadow: none; + font-family: var(--font-family-sans-serif); + font-size: 14px; + font-weight: 600; + word-wrap: break-word; + white-space: nowrap; } + .discussion-module .block.btn, + .wmd-prompt-dialog .block.btn, .discussion-module .block.btn-brand, + .wmd-prompt-dialog .block.btn-brand { + display: block; + width: 100%; } + .discussion-module .btn:disabled, + .wmd-prompt-dialog .btn:disabled, .discussion-module .btn-brand:disabled, + .wmd-prompt-dialog .btn-brand:disabled, .discussion-module .is-disabled.btn, + .wmd-prompt-dialog .is-disabled.btn, .discussion-module .is-disabled.btn-brand, + .wmd-prompt-dialog .is-disabled.btn-brand { + pointer-events: none; + outline: none; + cursor: not-allowed; } + .discussion-module .btn:hover, + .wmd-prompt-dialog .btn:hover, .discussion-module .btn-brand:hover, + .wmd-prompt-dialog .btn-brand:hover, .discussion-module .btn:active, + .wmd-prompt-dialog .btn:active, .discussion-module .btn-brand:active, + .wmd-prompt-dialog .btn-brand:active, .discussion-module .btn:focus, + .wmd-prompt-dialog .btn:focus, .discussion-module .btn-brand:focus, + .wmd-prompt-dialog .btn-brand:focus { + border-color: var(--forum-color-hover) !important; + background-color: var(--forum-color-hover) !important; + background-image: none !important; + box-shadow: none !important; + color: var(--forum-color-active-text) !important; + text-decoration: none !important; } + +.discussion-module .btn, +.wmd-prompt-dialog .btn { + background-color: var(--forum-color-background); + color: var(--forum-color-active-thread); } + +.discussion-module .btn-brand, +.wmd-prompt-dialog .btn-brand { + background-color: var(--forum-color-active-thread); + color: var(--forum-color-active-text); } + +.discussion-module .discussion { + clear: both; } + +.discussion .post-actions-list, +.discussion .response-actions-list, +.discussion .comment-actions-list { + text-align: right; } + .discussion .post-actions-list .actions-item, + .discussion .response-actions-list .actions-item, + .discussion .comment-actions-list .actions-item { + box-sizing: border-box; + display: block; + margin: calc(var(--baseline) / 4) 0; } + .discussion .post-actions-list .actions-item.is-hidden, + .discussion .response-actions-list .actions-item.is-hidden, + .discussion .comment-actions-list .actions-item.is-hidden { + display: none; } + .discussion .post-actions-list .actions-item.is-disabled a, + .discussion .response-actions-list .actions-item.is-disabled a, + .discussion .comment-actions-list .actions-item.is-disabled a { + pointer-events: none; } + .discussion .post-actions-list .actions-item.is-disabled a .action-icon, + .discussion .response-actions-list .actions-item.is-disabled a .action-icon, + .discussion .comment-actions-list .actions-item.is-disabled a .action-icon { + display: none; } + .discussion .post-actions-list .actions-item.is-disabled a .action-label, + .discussion .response-actions-list .actions-item.is-disabled a .action-label, + .discussion .comment-actions-list .actions-item.is-disabled a .action-label { + padding-right: 0; } + .discussion .post-actions-list .actions-item.is-disabled a:hover, + .discussion .response-actions-list .actions-item.is-disabled a:hover, + .discussion .comment-actions-list .actions-item.is-disabled a:hover { + border-color: transparent; } + .discussion .post-actions-list .actions-item.is-disabled a:hover .action-label, + .discussion .response-actions-list .actions-item.is-disabled a:hover .action-label, + .discussion .comment-actions-list .actions-item.is-disabled a:hover .action-label { + color: var(--forum-color-active-text); } + .discussion .post-actions-list .more-wrapper, + .discussion .response-actions-list .more-wrapper, + .discussion .comment-actions-list .more-wrapper { + position: relative; } + +.discussion .actions-dropdown { + right: 0; + display: none; + position: absolute; + top: 100%; + pointer-events: none; + min-width: var(--actions-dropdown-width); } + .discussion .actions-dropdown.is-expanded { + display: block; + pointer-events: auto; } + .discussion .actions-dropdown .actions-dropdown-list { + box-sizing: border-box; + box-shadow: 0 1px 1px var(--shadow-l1); + position: relative; + width: 100%; + border-radius: var(--forum-border-radius); + margin: calc(var(--baseline) / 4) 0 0 0; + border: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2) calc(var(--baseline) * 0.75); + background: var(--forum-color-background); } + .discussion .actions-dropdown .actions-dropdown-list::after, .discussion .actions-dropdown .actions-dropdown-list::before { + right: 6px; + bottom: 100%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; } + .discussion .actions-dropdown .actions-dropdown-list::after { + margin-right: 1px; + border-color: transparent; + border-bottom-color: var(--white); + border-width: 6px; } + .discussion .actions-dropdown .actions-dropdown-list::before { + border-color: transparent; + border-bottom-color: var(--forum-color-border); + border-width: 7px; } + .discussion .actions-dropdown .actions-item { + display: block; + margin: 0; } + .discussion .actions-dropdown .actions-item.is-hidden { + display: none; } + +.discussion .action-button { + transition: border 0.5s linear 0s; + box-sizing: border-box; + display: inline-block; + border: 1px solid transparent; + border-radius: var(--forum-border-radius); + color: #313131; } + .discussion .action-button .action-icon { + display: inline-block; + font-size: var(--forum-small-font-size); + height: var(--baseline); + width: var(--baseline); + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + text-align: center; + color: #313131; } + .discussion .action-button .action-icon .icon { + margin-right: 0; + vertical-align: middle; } + .discussion .action-button .action-label { + display: none; + vertical-align: middle; + padding: 2px 8px; } + .discussion .action-button:hover .action-label, .discussion .action-button:focus .action-label { + display: inline-block; } + .discussion .action-button:hover .action-icon, .discussion .action-button:focus .action-icon { + -webkit-border-top-left-radius: 0; + -moz-border-topleft-radius: 0; + border-top-left-radius: 0; + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: var(--forum-border-radius); + -moz-border-bottomright-radius: var(--forum-border-radius); + border-bottom-right-radius: var(--forum-border-radius); + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; } + .discussion .action-button.action-follow .action-label { + color: #0075b4; } + .discussion .action-button.action-follow.is-checked .action-icon, .discussion .action-button.action-follow:hover .action-icon, .discussion .action-button.action-follow:focus .action-icon { + background-color: var(--forum-color-following); + border: 1px solid #0075b4; + color: var(--white); } + .discussion .action-button.action-follow:hover, .discussion .action-button.action-follow:focus { + border-color: var(--forum-color-following); } + .discussion .action-button.action-vote .action-label { + opacity: 1; } + .discussion .action-button.action-vote.is-checked .action-icon, .discussion .action-button.action-vote:hover .action-icon, .discussion .action-button.action-vote:focus .action-icon { + background-color: var(--green); + border: 1px solid var(--green); + color: var(--white); } + .discussion .action-button.action-vote:hover, .discussion .action-button.action-vote:focus { + border-color: var(--green); } + .discussion .action-button.action-vote:hover .action-label, .discussion .action-button.action-vote:focus .action-label { + color: var(--green); } + .discussion .action-button.action-endorse.is-checked .action-icon, .discussion .action-button.action-endorse:hover .action-icon, .discussion .action-button.action-endorse:focus .action-icon { + background-color: #0075b4; + border: 1px solid #0075b4; + color: var(--white); } + .discussion .action-button.action-endorse:hover, .discussion .action-button.action-endorse:focus { + border-color: #0075b4; + background-color: var(--forum-color-background); } + .discussion .action-button.action-endorse:hover .action-label, .discussion .action-button.action-endorse:focus .action-label { + color: #0075b4; } + .discussion .action-button.action-answer.is-checked .action-icon, .discussion .action-button.action-answer:hover .action-icon, .discussion .action-button.action-answer:focus .action-icon { + border: 1px solid var(--green); + background-color: var(--green); + color: var(--white); } + .discussion .action-button.action-answer:hover, .discussion .action-button.action-answer:focus { + border-color: var(--green); + background-color: var(--forum-color-background); } + .discussion .action-button.action-answer:hover .action-label, .discussion .action-button.action-answer:focus .action-label { + color: var(--green); } + .discussion .action-button.action-more { + position: relative; } + .discussion .action-button.action-more:hover, .discussion .action-button.action-more:focus { + border-color: #313131; + background-color: var(--forum-color-background); } + .discussion .action-button.action-more:hover .action-icon, .discussion .action-button.action-more:focus .action-icon { + border: 1px solid #313131; + background-color: #313131; + color: #fff; } + .discussion .action-button.action-more:hover .action-label, .discussion .action-button.action-more:focus .action-label { + opacity: 1; + color: var(--black); } + +.discussion .actions-dropdown .action-list-item { + text-align: right; + display: block; + width: 100%; + padding: calc(var(--baseline) / 10) 0; + white-space: nowrap; + color: #313131; } + .discussion .actions-dropdown .action-list-item:hover, .discussion .actions-dropdown .action-list-item:focus { + color: var(--link-color); } + .discussion .actions-dropdown .action-list-item .action-icon { + margin-left: calc(var(--baseline) / 4); + display: inline-block; + width: calc(var(--baseline) / 2); + color: inherit; } + .discussion .actions-dropdown .action-list-item .action-label { + display: inline-block; + color: inherit; } + .discussion .actions-dropdown .action-list-item.is-checked.action-pin { + color: var(--pink); } + .discussion .actions-dropdown .action-list-item.is-checked.action-report { + color: var(--pink); } + .discussion .actions-dropdown .action-list-item.is-checked:hover, .discussion .actions-dropdown .action-list-item.is-checked:focus { + color: var(--link-color); } + +.discussion .action-button .action-label, +.discussion .action-list-item .action-label { + float: left; } + .discussion .action-button .action-label .label-checked, + .discussion .action-list-item .action-label .label-checked { + display: none; } + +.discussion .action-button.is-checked .label-unchecked, +.discussion .action-list-item.is-checked .label-unchecked { + display: none; } + +.discussion .action-button.is-checked .label-checked, +.discussion .action-list-item.is-checked .label-checked { + display: inline; } + +.discussion .btn-primary:focus, .discussion .btn-brand:focus, +.discussion .btn-outline-primary:focus { + box-shadow: 0 0 0 2px #0078b4; } + +.forum-new-post-form .wmd-input { + box-sizing: border-box; + position: relative; + z-index: 1; } + +.wmd-preview-container { + -webkit-border-top-left-radius: 0; + -moz-border-topleft-radius: 0; + border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -moz-border-topright-radius: 0; + border-top-right-radius: 0; + -webkit-border-bottom-right-radius: var(--forum-border-radius); + -moz-border-bottomright-radius: var(--forum-border-radius); + border-bottom-right-radius: var(--forum-border-radius); + -webkit-border-bottom-left-radius: var(--forum-border-radius); + -moz-border-bottomleft-radius: var(--forum-border-radius); + border-bottom-left-radius: var(--forum-border-radius); + box-sizing: border-box; + border: 1px solid var(--forum-color-border); + width: 100%; + background: var(--forum-color-background-light); + border-color: var(--forum-color-border); } + .discussion-board .wmd-preview-container, + .discussion-user-profile-board .wmd-preview-container { + margin-top: calc(-1 * var(--baseline) / 4); } + +.wmd-preview-label { + padding-left: calc(var(--baseline) / 4); + padding-top: 3px; + width: 100%; + color: var(--forum-color-editor-preview-label); + font-size: var(--forum-small-font-size); } + +.wmd-preview { + padding: calc(var(--baseline) / 2) var(--baseline); + width: auto; + background-color: var(--forum-color-background-light); } + .wmd-preview ol, + .wmd-preview ul { + padding-left: calc(var(--baseline) * 2); + padding-right: 0; } + .wmd-preview svg { + max-width: 100% !important; } + +.wmd-button { + background: none; } + +.wmd-button-bar { + width: 100%; } + +.wmd-button-row { + transition: all 0.2s ease-out 0s; + position: relative; + overflow: hidden; + margin: calc(var(--baseline) / 2) calc(var(--baseline) / 4) calc(var(--baseline) / 4) calc(var(--baseline) / 4); + padding: 0; + height: 30px; } + +.wmd-spacer { + margin-left: 14px; + position: absolute; + display: inline-block; + width: 1px; + height: 20px; + background-color: Silver; + list-style: none; } + +.wmd-button { + position: absolute; + display: inline-block; + width: 20px; + height: 20px; + border: none; + background: none; + list-style: none; + cursor: pointer; + padding: 0; } + +.wmd-button:hover { + background: none; + box-shadow: none; } + +.wmd-button > span { + display: inline-block; + width: 20px; + height: 20px; + background-image: url("var(--static-path)/images/wmd-buttons-transparent.png"); + background-position: 0 0; + background-repeat: no-repeat; } + +.wmd-spacer1 { + left: 50px; } + +.wmd-spacer2 { + left: 175px; } + +.wmd-spacer3 { + left: 300px; } + +.wmd-input { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + box-sizing: border-box; + margin-top: 0; + border: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2); + width: 100%; + height: 125px; + background: var(--forum-color-background); + font-size: var(--forum-base-font-size); + font-family: var(--font-family-sans-serif); + line-height: 1.6; + box-sizing: border-box; + width: 100%; + background: var(--forum-color-background); } + +.wmd-prompt-background { + background-color: var(--black); } + +.wmd-prompt-dialog { + background: var(--forum-color-background); + padding: var(--baseline); } + .wmd-prompt-dialog > div { + font-size: var(--forum-base-font-size); + font-family: arial, helvetica, sans-serif; } + .wmd-prompt-dialog b { + font-size: var(--forum-large-font-size); } + .wmd-prompt-dialog > form > input[type="text"] { + border-radius: var(--forum-border-radius); + color: #333; } + .wmd-prompt-dialog > form > input[type="button"] { + border: 1px solid #888; + font-family: var(--font-family-sans-serif); + font-size: var(--forum-x-large-font-size); } + .wmd-prompt-dialog > form > input[type="file"] { + margin-bottom: 18px; } + .wmd-prompt-dialog .field-group .field .field-hint { + margin-left: 0; + width: 100%; } + .wmd-prompt-dialog .field-input-label { + font-size: var(--forum-base-font-size); } + .wmd-prompt-dialog .input-text { + width: calc(100% - 175px); + height: 40px; } + .wmd-prompt-dialog .input-text.has-error { + border-color: var(--forum-color-error); } + .wmd-prompt-dialog .field-message.has-error { + width: calc(100% - 175px); + background-color: var(--forum-color-error); + color: var(--white); + padding: calc(var(--baseline) / 2); + box-sizing: border-box; } + .wmd-prompt-dialog .field-label { + cursor: pointer; } + .wmd-prompt-dialog .input-checkbox { + margin-right: calc(var(--baseline) / 5); } + .wmd-prompt-dialog #new-url-input { + direction: ltr; } + +.wmd-button-row { + position: relative; + height: 25px; } + +.discussion .post-label { + margin: calc(var(--baseline)/4) calc(var(--baseline)/2) 0 0; + font-size: var(--forum-small-font-size); + display: inline; + white-space: nowrap; } + .discussion .post-label .icon { + margin-right: calc(var(--baseline) / 5); } + .discussion .post-label.is-hidden { + display: none; } + .discussion .post-label.post-label-pinned { + color: var(--forum-color-pinned); } + .discussion .post-label.post-label-following { + color: var(--forum-color-following); } + .discussion .post-label.post-label-reported { + color: var(--forum-color-reported); } + .discussion .post-label.post-label-closed { + color: var(--forum-color-closed); } + .discussion .post-label.post-label-by-staff { + color: var(--forum-color-staff); } + .discussion .post-label.post-label-by-community-ta { + color: var(--forum-color-community-ta); } + +.discussion .user-label-staff, +.discussion .user-label-community-ta { + color: var(--forum-color-copy-light); + font-size: var(--forum-small-font-size); + white-space: nowrap; } + +.forum-nav-thread-link .forum-nav-thread-labels .post-label .icon { + margin-right: 0; } + +.discussion-board > .page-header .has-breadcrumbs .breadcrumbs { + margin-bottom: calc(var(--baseline) / 2); + font-size: 1rem; + font-weight: 600; + line-height: var(--line-height-base); } + +.forum-nav-browse-menu-wrapper { + border-bottom: 1px solid var(--forum-color-border); + background: #e7e7e7; } + +.forum-nav-browse-filter { + position: relative; + border-bottom: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 4); } + +.forum-nav-browse-filter .icon { + right: calc(var(--baseline)/4 + 1px + calc(var(--baseline) / 4)); + font-size: var(--forum-small-font-size); + position: absolute; + margin-top: -6px; + top: 75%; } + +.forum-nav-browse-filter-input { + width: 100%; } + +.forum-nav-browse-menu-following .icon { + float: left; + left: calc(var(--baseline) / 2); + position: relative; + top: 13px; } + +.forum-nav-browse-menu-following .forum-nav-browse-title { + padding-left: calc(var(--baseline) * 1.5); } + +.forum-nav-browse-menu-item { + margin-bottom: 0; } + +.forum-nav-browse-title { + text-align: left; + display: block; + width: 100%; + border: 0; + border-radius: 0; + border-bottom: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2); + background: transparent; + box-shadow: none; + background-image: none; + cursor: pointer; } + .forum-nav-browse-title:hover, .forum-nav-browse-title:focus, .forum-nav-browse-title.is-focused { + background-image: none !important; + box-shadow: none !important; + background: var(--forum-color-background) !important; + /* stylelint-disable-line */ } + +.forum-nav-browse-title .icon { + margin-right: calc(var(--baseline) / 2); } + +.forum-nav-browse-menu { + padding-left: 0; + margin: 0; + font-size: var(--forum-base-font-size); + overflow-y: scroll; + list-style: none; + max-height: 600px; } + +.forum-nav-browse-submenu { + list-style: none; + margin: 0; + padding: 0; } + .forum-nav-browse-submenu li .forum-nav-browse-title { + padding-left: var(--baseline); } + +.forum-nav-refine-bar { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + font-size: var(--forum-small-font-size); + border-bottom: 1px solid var(--forum-color-border); + background-color: #e7e7e7; + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + color: var(--black); } + .forum-nav-refine-bar:after { + content: ""; + display: table; + clear: both; } + +.forum-nav-filter-main { + text-align: left; + float: left; + box-sizing: border-box; + width: 50%; } + +.forum-nav-filter-cohort, +.forum-nav-sort { + text-align: right; + box-sizing: border-box; } + +.discussion-board .forum-nav-filter-cohort { + float: right; + text-align: right; + width: 50%; } + +.forum-nav-sort { + float: right; } + +.forum-nav-filter-main-control, .forum-nav-filter-cohort-control, .forum-nav-sort-control { + border: none; + max-width: 100%; + background-color: transparent; } + +.forum-nav-filter-cohort-control { + max-width: 60%; } + +.forum-nav-thread-list { + padding-left: 0 !important; + min-height: 60px; + max-height: 800px; + border-bottom: 1px solid #e7e7e7; + margin: 0; + overflow-y: auto; + list-style: none; + border-radius: 0 0 3px 3px; } + .forum-nav-thread-list .forum-nav-thread-labels { + margin: 5px 0 0; + padding-left: 0 !important; } + .forum-nav-thread-list .thread-preview-body { + margin-top: calc(var(--baseline) / 4); + color: var(--forum-color-response-count); + font-size: var(--forum-small-font-size); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } + +.course-wrapper .course-content .forum-nav-thread-list-wrapper .forum-nav-thread-list { + padding-left: 0; + list-style: none; } + .course-wrapper .course-content .forum-nav-thread-list-wrapper .forum-nav-thread-list .forum-nav-thread { + margin: 0; } + +.forum-nav-thread { + border-bottom: 1px solid var(--forum-color-border); + background-color: var(--forum-color-background); + margin-bottom: 0; } + .forum-nav-thread:last-child { + border-bottom: 1px solid var(--forum-color-border); } + .forum-nav-thread .forum-nav-thread-link { + border-left: 3px solid transparent; + display: flex; + padding: calc(var(--baseline) / 2); + transition: none; + align-items: center; + justify-content: space-between; + color: var(--forum-color-read-post); } + .forum-nav-thread .forum-nav-thread-link:hover, .forum-nav-thread .forum-nav-thread-link:active, .forum-nav-thread .forum-nav-thread-link:focus { + text-decoration: none; } + .forum-nav-thread .forum-nav-thread-link:hover { + background-color: var(--forum-color-hover-thread); } + .forum-nav-thread .forum-nav-thread-link.is-active { + background-color: var(--forum-color-reading-thread); } + .forum-nav-thread .forum-nav-thread-link .forum-nav-thread-unread-comments-count { + display: inline-block; + font-size: var(--forum-small-font-size); + white-space: nowrap; } + .forum-nav-thread.never-read .forum-nav-thread-link { + border-left: 3px solid var(--forum-color-never-read-post); + color: var(--forum-color-never-read-post); } + +.forum-nav-thread-wrapper-0, .forum-nav-thread-wrapper-1, .forum-nav-thread-wrapper-2 { + display: inline-block; + vertical-align: middle; } + +.forum-nav-thread-wrapper-0 { + margin-right: calc(var(--baseline) / 5); + align-self: flex-start; } + .forum-nav-thread-wrapper-0 .icon { + font-size: var(--forum-base-font-size); + width: 18px; + text-align: center; } + +.forum-nav-thread-wrapper-1 { + margin: 0 calc(var(--baseline) / 4); + max-width: calc(100% - 75px); + flex-grow: 1; } + +.forum-nav-thread-wrapper-2 { + text-align: right; + min-width: 40px; + white-space: nowrap; } + +.forum-nav-thread-title { + margin-left: 0; + font-size: var(--forum-base-font-size); + display: block; } + +.forum-nav-thread-votes-count, .forum-nav-thread-comments-count { + margin-right: calc(var(--baseline) / 4); + font-size: var(--forum-small-font-size); + display: inline-block; + text-align: center; + color: var(--black); } + .forum-nav-thread-votes-count:last-child, .forum-nav-thread-comments-count:last-child { + margin-right: 0; } + +.forum-nav-thread-comments-count { + position: relative; + margin-left: calc(var(--baseline) / 4); + margin-bottom: calc(var(--baseline) / 4); + border-radius: var(--forum-border-radius); + padding: calc(var(--baseline) / 10) calc(var(--baseline) / 5); + min-width: 2em; + background-color: #e7e7e7; } + .forum-nav-thread-comments-count::after { + content: ''; + display: block; + position: absolute; + bottom: calc(-1 * var(--baseline) / 4); + right: calc(var(--baseline) / 4); + width: 0; + height: 0; + border-style: solid; + border-width: 0 calc(var(--baseline) / 4) calc(var(--baseline) / 4) 0; + border-color: transparent var(--forum-color-border) transparent transparent; } + +.forum-nav-load-more { + border-bottom: 1px solid var(--forum-color-border); + background-color: #e7e7e7; } + +.forum-nav-load-more-link, .forum-nav-loading { + display: block; + padding: var(--baseline) 0; + text-align: center; } + +.forum-nav-load-more-link { + color: var(--link-color); + width: 100%; } + .forum-nav-load-more-link:hover, .forum-nav-load-more-link:focus { + color: var(--forum-color-active-text); + background-color: var(--forum-color-active-thread) !important; } + +.view-discussion-home { + padding-left: var(--baseline); + display: none; } + @media (min-width: 992px) { + .view-discussion-home { + display: block; } } + .view-discussion-home section { + border-bottom: 1px solid var(--forum-color-border); } + .view-discussion-home .label { + display: block; } + .view-discussion-home .label-settings { + padding-top: var(--baseline); + padding-bottom: calc(var(--baseline) / 2); } + .view-discussion-home .home-header { + margin: 0; } + .view-discussion-home .home-title { + font-size: var(--forum-large-font-size); + color: var(--black); + margin-bottom: calc(var(--baseline) / 4); } + .view-discussion-home .home-description { + margin-bottom: calc(var(--baseline) / 2); } + .view-discussion-home .home-stats { + padding: var(--baseline) 0; } + .view-discussion-home .home-stats .label-area { + display: inline-block; + min-width: calc(var(--baseline) * 5); + width: 25%; + vertical-align: middle; } + .view-discussion-home .home-stats .label-area .profile-link { + font-weight: 700; } + .view-discussion-home .home-stats .stats-grouping { + padding-left: var(--baseline); + display: inline-block; + width: 70%; } + .view-discussion-home .home-stats .stats-grouping .profile-stat { + display: inline-block; + width: 32.5%; + vertical-align: middle; } + .view-discussion-home .home-stats .stats-grouping .profile-stat .count { + font-size: var(--forum-x-large-font-size); + display: inline-block; + padding: 0 calc(var(--baseline) / 2); + vertical-align: middle; } + .view-discussion-home .home-stats .stats-grouping .profile-stat .profile-stat-label { + vertical-align: middle; } + .view-discussion-home .home-helpgrid { + border-bottom: none; + border-radius: var(--forum-border-radius); + border: 1px solid var(--forum-color-border); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); } + .view-discussion-home .helpgrid-row { + border-bottom: 1px solid var(--forum-color-border); } + .view-discussion-home .helpgrid-row .row-title { + padding: calc(var(--baseline) * 1.5) var(--baseline); + background-color: #dedede; + font-size: var(--forum-small-font-size); } + .view-discussion-home .helpgrid-row .row-item-full, + .view-discussion-home .helpgrid-row .row-item { + font-size: var(--forum-small-font-size); + padding: 0 calc(var(--baseline) / 2); + width: 26%; + vertical-align: middle; } + .view-discussion-home .helpgrid-row .row-item-full .icon, + .view-discussion-home .helpgrid-row .row-item .icon { + padding: 0 calc(var(--baseline) / 2); + font-size: 24px; + vertical-align: middle; + display: table-cell; } + .view-discussion-home .helpgrid-row .row-item-full .fa-stack .icon, + .view-discussion-home .helpgrid-row .row-item .fa-stack .icon { + padding: 0 calc(var(--baseline) / 2); } + .view-discussion-home .helpgrid-row .row-item-full .row-description, + .view-discussion-home .helpgrid-row .row-item .row-description { + vertical-align: middle; + display: table-cell; } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox { + margin-right: calc(var(--baseline) / 2); + display: inline-block; + padding: calc(var(--baseline)/4) 0 calc(var(--baseline)/2) 0; + border-radius: var(--forum-border-radius); + border: 1px solid gray; } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox .email-setting { + display: inline-block; + text-align: center; + vertical-align: middle; + margin-left: calc(var(--baseline) / 2); } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox .icon { + display: inline-block; } + .view-discussion-home .helpgrid-row .row-item-full .notification-checkbox .email-setting:checked ~ .icon { + color: var(--green); } + .view-discussion-home .helpgrid-row .row-item-full .row-description { + display: inline-block; + width: 80%; } + .view-discussion-home .helpgrid-row-navigation .fa-bars { + color: #e7e7e7; } + .view-discussion-home .helpgrid-row-navigation .fa-search { + color: var(--gray-300); } + .view-discussion-home .helpgrid-row-navigation .fa-sort { + color: var(--gray-300); } + .view-discussion-home .helpgrid-row-participation .fa-plus { + color: var(--green); } + .view-discussion-home .helpgrid-row-participation .fa-flag { + color: var(--pink); } + .view-discussion-home .helpgrid-row-participation .fa-star { + color: var(--blue); } + .view-discussion-home .helpgrid-row-notification .fa-square { + color: var(--green); } + .view-discussion-home .helpgrid-row-notification .fa-envelope { + color: var(--gray-300); } + +.discussion-post { + padding: 0 calc(var(--baseline) / 2); } + .discussion-post .post-header-actions { + float: right; } + +.discussion-article .posted-details { + margin: calc(var(--baseline) / 5) 0; + color: var(--forum-color-copy-light); } + .discussion-article .posted-details .username { + display: inline; } + .discussion-article .posted-details .timeago, + .discussion-article .posted-details .top-post-status { + color: inherit; } + +.thread-title { + display: block; + margin-bottom: var(--baseline); + font-size: var(--forum-x-large-font-size); + font-weight: 600; } + +.thread-responses-wrapper, +.post-extended-content { + padding: 0 calc(var(--baseline) / 2); } + +.discussion-response { + min-height: calc(var(--baseline) * 5); } + .discussion-response .response-header-content { + display: inline-block; + vertical-align: top; + width: 91.48936%; } + .discussion-response .response-header-actions { + float: right; + right: var(--baseline); + position: absolute; + top: calc(var(--baseline) / 2); } + +.discussion-comment .response-body { + padding: calc(var(--baseline) / 2) calc(var(--baseline) * 1.5) 0 0; + display: inline-block; + margin-top: calc(var(--baseline) / 2); + width: 82.97872%; } + .discussion-comment .response-body p + p { + margin-top: calc(var(--baseline) / 2); } + +.discussion-comment .comment-actions-list { + float: right; + right: calc(var(--baseline) / 2); + position: absolute; + top: 0; } + +.thread-wrapper .response-btn-count-wrapper { + margin: var(--baseline) 0; } + +.discussion-post:after, +.discussion-response:after, +.discussion-comment:after { + content: ""; + display: table; + clear: both; } + +.discussion-post .author-image, +.discussion-response .author-image, +.discussion-comment .author-image { + margin-right: calc(var(--baseline) / 2); + display: inline-block; + vertical-align: top; } + .discussion-post .author-image:empty, + .discussion-response .author-image:empty, + .discussion-comment .author-image:empty { + display: none; } + .discussion-post .author-image.level-post, + .discussion-response .author-image.level-post, + .discussion-comment .author-image.level-post { + height: var(--post-image-dimension); + width: var(--post-image-dimension); } + .discussion-post .author-image.level-response, + .discussion-response .author-image.level-response, + .discussion-comment .author-image.level-response { + height: var(--response-image-dimension); + width: var(--response-image-dimension); } + .discussion-post .author-image.level-comment, + .discussion-response .author-image.level-comment, + .discussion-comment .author-image.level-comment { + height: var(--comment-image-dimension); + width: var(--comment-image-dimension); } + .discussion-post .author-image img, + .discussion-response .author-image img, + .discussion-comment .author-image img { + border-radius: var(--forum-border-radius); } + +.discussion-response .response-body { + padding: calc(var(--baseline) / 2) calc(var(--baseline) * 1.5) 0 0; + margin-bottom: 0.2em; + font-size: var(--forum-base-font-size); } + +.discussion-post:after { + content: ""; + display: table; + clear: both; } + +.discussion-post .post-header-content { + max-width: calc(100% - var(--actions-dropdown-offset)); } + .discussion-post .post-header-content .post-title { + font-size: var(--forum-x-large-font-size); + margin-bottom: calc(var(--baseline) / 4); } + +.discussion-post .post-body { + padding: calc(var(--baseline) / 2) 0; + max-width: calc(100% - var(--actions-dropdown-offset)); } + +.discussion-post .post-context { + color: var(--forum-color-copy-light); } + .discussion-post .post-context:empty { + display: none; } + +.discussion-thread { + padding: 0; + margin-bottom: var(--baseline); + transition: all 0.25s linear 0s; } + .discussion-thread p { + margin-bottom: 0; } + .discussion-thread .discussion-article { + transition: all 0.2s linear 0s; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + min-height: 0; + background: var(--forum-color-background); + box-shadow: 0 1px 0 var(--shadow); + transition: all 0.2s linear 0s; } + .discussion-thread .discussion-article .thread-wrapper { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + max-height: 600px; + background-color: var(--forum-color-background); } + .discussion-thread .discussion-article .thread-wrapper .discussion-post .inline-comment-count { + margin-right: calc(var(--baseline) / 2); + float: right; + position: relative; + display: block; + height: 27px; + margin-top: 6px; + padding: 0 8px; + border-radius: var(--forum-border-radius); + font-size: var(--forum-small-font-size); + font-weight: 400; + line-height: 25px; + color: #888; } + .discussion-thread .discussion-article .thread-wrapper .responses header { + padding-bottom: 0; + margin-bottom: calc(var(--baseline) * 0.75); } + .discussion-thread .discussion-article .thread-wrapper .responses header .posted-by { + margin-right: calc(var(--baseline) / 4); + float: left; + font-size: var(--forum-large-font-size); } + .discussion-thread .discussion-article .thread-wrapper .discussion-reply-new .wmd-input { + height: 120px; } + .discussion-thread .discussion-article .thread-wrapper .post-extended-content { + display: none; } + .discussion-thread .discussion-article .post-tools { + box-shadow: 0 1px 1px var(--shadow) inset; + background: var(--white); } + .discussion-thread .discussion-article .post-tools:hover { + background: var(--forum-color-hover-thread); } + .discussion-thread .discussion-article .post-tools:hover .icon { + color: var(--link-hover); } + .discussion-thread .discussion-article .post-tools .btn-link { + display: block; + padding: calc(var(--baseline) * 0.25) var(--baseline); + font-size: var(--forum-small-font-size); + line-height: 30px; } + .discussion-thread .discussion-article .post-tools .btn-link .icon { + margin-right: calc(var(--baseline) * 0.25); + color: var(--link-color); } + +.thread-wrapper img, +.forum-new-post-form img { + max-width: 100%; } + +.forum-new-post-form, +.edit-post-form { + box-sizing: border-box; + margin: 0; + border-radius: var(--forum-border-radius); + max-width: 1920px; } + .forum-new-post-form:after, + .edit-post-form:after { + content: ""; + display: table; + clear: both; } + .forum-new-post-form label, + .forum-new-post-form .field-label-text, + .edit-post-form label, + .edit-post-form .field-label-text { + -webkit-font-smoothing: initial; } + .forum-new-post-form .post-type, + .edit-post-form .post-type { + text-shadow: none; } + .forum-new-post-form .post-type, + .edit-post-form .post-type { + margin-bottom: 0; } + .forum-new-post-form .post-errors, + .edit-post-form .post-errors { + margin: 0 0 var(--baseline); + padding: 0 !important; + list-style: none !important; } + .forum-new-post-form .post-field, + .edit-post-form .post-field { + margin-bottom: calc(var(--baseline) * 1.5); } + .forum-new-post-form .post-field .field-label, + .edit-post-form .post-field .field-label { + margin: 0; } + .forum-new-post-form .post-field .field-label .field-input, + .edit-post-form .post-field .field-label .field-input { + display: inline-block; + vertical-align: top; } + .forum-new-post-form .post-field .field-label .field-input:not([type="text"]), + .edit-post-form .post-field .field-label .field-input:not([type="text"]) { + border-width: 0; + padding: 0; } + .forum-new-post-form .post-field .field-label .field-label-text, + .edit-post-form .post-field .field-label .field-label-text { + display: block; } + .forum-new-post-form .post-field .field-label .field-label-text + .field-input, + .edit-post-form .post-field .field-label .field-label-text + .field-input { + width: 75%; } + .forum-new-post-form .post-field .field-label .js-post-title, + .edit-post-form .post-field .field-label .js-post-title { + width: 85%; } + .forum-new-post-form .post-field .field-help, + .edit-post-form .post-field .field-help { + margin: calc(var(--baseline) / 4) 0 calc(var(--baseline) / 4) 0; + font-size: var(--forum-small-font-size); + line-height: 1.5; } + .forum-new-post-form .post-field .field-help#field_help_post_type, + .edit-post-form .post-field .field-help#field_help_post_type { + margin: calc(var(--baseline) / 4) 0 calc(var(--baseline) * 0.75) 0; } + .forum-new-post-form .post-field .field-help#new-post-editor-description, + .edit-post-form .post-field .field-help#new-post-editor-description { + padding-left: 0; } + .forum-new-post-form .post-field .field-input, + .edit-post-form .post-field .field-input { + padding: 0; + border: none; } + .forum-new-post-form .post-options, + .edit-post-form .post-options { + margin: var(--baseline) 0; } + .forum-new-post-form .post-options .field-label, + .edit-post-form .post-options .field-label { + margin-right: var(--baseline); } + .forum-new-post-form .post-options .icon, + .edit-post-form .post-options .icon { + margin-right: calc(var(--baseline) / 4); } + +.edit-post-form { + box-sizing: border-box; + width: 100%; + padding-top: 0; } + .edit-post-form:after { + content: ""; + display: table; + clear: both; } + .edit-post-form h1 { + font-size: var(--forum-large-font-size); } + .edit-post-form .form-row { + margin-top: var(--baseline); } + .edit-post-form .post-cancel { + float: left; + margin: calc(var(--baseline)/2) 0 0 calc(var(--baseline)*0.75); } + .edit-post-form .post-update { + float: left; + margin-top: calc(var(--baseline) / 2); } + .edit-post-form .post-update:hover, .edit-post-form .post-update:focus { + border-color: #222; } + .edit-post-form .edit-post-title { + box-sizing: border-box; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + padding: 0 calc(var(--baseline) / 2); + width: 100%; + height: 40px; + box-shadow: 0 1px 3px var(--shadow-l1) inset; + font-size: var(--forum-large-font-size); + font-family: var(--font-family-sans-serif); } + +.discussion-module .forum-new-post-form { + background: var(--forum-color-background); } + +.forum-new-post-form .post-type-label, +.edit-post-form .post-type-label { + margin-right: var(--baseline); } + +.forum-new-post-form input[type=text].field-input, +.edit-post-form input[type=text].field-input { + box-sizing: border-box; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + padding: 0 calc(var(--baseline) / 2); + width: 70%; + height: 40px; + color: #333; + font-size: var(--forum-large-font-size); + font-family: 'Open Sans', sans-serif; } + +.forum-new-post-form select.field-input, +.edit-post-form select.field-input { + border: 1px solid var(--forum-color-border) !important; + height: 40px; } + +.forum-new-post-form .post-topic.field-input, +.edit-post-form .post-topic.field-input { + width: 100%; } + +.forum-new-post-form .post-option, +.edit-post-form .post-option { + box-sizing: border-box; + display: inline-block; + margin-right: var(--baseline); + border-radius: var(--forum-border-radius); + padding: calc(var(--baseline) / 2); + cursor: pointer; } + .forum-new-post-form .post-option:hover, + .edit-post-form .post-option:hover { + border-color: var(--forum-color-border); } + .forum-new-post-form .post-option .icon, + .edit-post-form .post-option .icon { + margin-right: calc(var(--baseline) / 4); } + +.discussion .responses:empty { + display: none; } + +.discussion .responses .forum-response { + animation: fadeIn 0.3s; + position: relative; + margin: var(--baseline) 0; + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); + box-shadow: 0 0 1px var(--shadow); } + +.discussion .responses .discussion-response { + box-sizing: border-box; + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + padding: var(--baseline); + background-color: var(--forum-color-background); } + +.discussion-response .response-header-content .username { + font-size: var(--forum-base-font-size); } + +.discussion-response .response-body ol, +.discussion-response .response-body ul { + padding-left: calc(var(--baseline) * 2); + padding-right: 0; } + +.discussion .add-response { + display: inline; + padding: calc(var(--baseline) / 2); } + +.forum-response .action-show-comments { + font-size: var(--forum-base-font-size); + box-sizing: border-box; + display: block; + padding: calc(var(--baseline) / 2) var(--baseline); + width: 100%; + background: #f5f5f5; + box-shadow: 0 1px 3px -1px var(--shadow) inset; } + +.discussion .responses .forum-response.staff { + padding-top: 38px; + border-color: #009fe2; } + +.discussion .responses .forum-response.community-ta { + padding-top: 38px; + border-color: var(--forum-color-community-ta); } + +.discussion .responses .forum-response .staff-banner { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + left: 0; + position: absolute; + top: 0; + width: 100%; + height: 14px; + padding: 1px calc(var(--baseline) / 4); + box-sizing: border-box; + background: #009fe2; + font-size: var(--forum-small-font-size); + font-weight: 700; + color: var(--white); } + +.discussion .responses .forum-response .community-ta-banner { + -webkit-border-top-left-radius: var(--forum-border-radius); + -moz-border-topleft-radius: var(--forum-border-radius); + border-top-left-radius: var(--forum-border-radius); + -webkit-border-top-right-radius: var(--forum-border-radius); + -moz-border-topright-radius: var(--forum-border-radius); + border-top-right-radius: var(--forum-border-radius); + -webkit-border-bottom-right-radius: 0; + -moz-border-bottomright-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-bottomleft-radius: 0; + border-bottom-left-radius: 0; + left: 0; + position: absolute; + top: 0; + width: 100%; + height: 14px; + padding: 1px calc(var(--baseline) / 4); + box-sizing: border-box; + background: var(--forum-color-community-ta); + font-size: var(--forum-small-font-size); + font-weight: 700; + color: var(--white); } + +.discussion .responses .forum-response.loading { + height: 0; + margin: 0; + padding: 0; + border: none; + box-shadow: none; } + +.discussion .comments { + -webkit-border-top-left-radius: 0; + -moz-border-topleft-radius: 0; + border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -moz-border-topright-radius: 0; + border-top-right-radius: 0; + -webkit-border-bottom-right-radius: var(--forum-border-radius); + -moz-border-bottomright-radius: var(--forum-border-radius); + border-bottom-right-radius: var(--forum-border-radius); + -webkit-border-bottom-left-radius: var(--forum-border-radius); + -moz-border-bottomleft-radius: var(--forum-border-radius); + border-bottom-left-radius: var(--forum-border-radius); + background: #f5f5f5; + box-shadow: 0 1px 3px -1px var(--shadow) inset; } + .discussion .comments > li { + border-top: 1px solid var(--forum-color-border); + padding: calc(var(--baseline) / 2) var(--baseline); + position: relative; } + .discussion .comments blockquote { + background: var(--forum-color-background-light); + border-radius: var(--forum-border-radius); + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + font-size: var(--forum-base-font-size); } + .discussion .comments .comment-form { + padding: calc(var(--baseline) / 2) 0; } + .discussion .comments .comment-form:after { + content: ""; + display: table; + clear: both; } + .discussion .comments .comment-form .comment-form-input { + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + background-color: var(--forum-color-background); + font-size: var(--forum-base-font-size); } + .discussion .comments .comment-form .discussion-submit-comment { + float: left; + margin-top: 8px; } + .discussion .comments .comment-form .wmd-input { + transition: all 0.2s linear 0s; + height: 40px; } + .discussion .comments .comment-form .discussion-errors { + margin: 0; } + +.response-count { + float: right; + margin-right: var(--baseline)/2; + color: var(--forum-color-copy-light); + font-size: var(--forum-base-font-size); } + +.response-pagination { + visibility: visible; + margin: calc(var(--baseline) / 2) 0; } + .response-pagination:empty { + visibility: hidden; } + .response-pagination .response-display-count { + display: block; + padding: calc(var(--baseline) / 2) 0; + color: var(--forum-color-response-count); + font-size: var(--forum-base-font-size); } + .response-pagination .load-response-button { + text-align: left; + position: relative; + margin: calc(var(--baseline) / 2) 0; + width: 100%; } + +.forum-nav .search-alert { + transition: none; + padding: calc(var(--baseline) / 2) 11px calc(var(--baseline) / 2) 18px; + background-color: var(--black); } + +.forum-nav .search-alert-content, +.forum-nav .search-alert-controls { + display: inline-block; + vertical-align: middle; } + +.forum-nav .search-alert-content { + width: 70%; } + .forum-nav .search-alert-content .message { + font-size: var(--forum-small-font-size); + color: var(--white); } + .forum-nav .search-alert-content .message em { + font-style: italic; } + .forum-nav .search-alert-content .link-jump { + transition: none; } + +.forum-nav .search-alert-controls { + text-align: right; + width: 28%; } + .forum-nav .search-alert-controls .control { + transition: none; + padding: calc(var(--baseline) / 4) calc(var(--baseline) / 2); + color: var(--white); + font-size: var(--forum-base-font-size); } + .forum-nav .search-alert-controls .control:hover, .forum-nav .search-alert-controls .control:focus { + color: var(--white); + text-decoration: none; } + +.has-breadcrumbs .breadcrumbs { + margin: 5px 0 0; } + .has-breadcrumbs .breadcrumbs .all-topics { + font-size: 14px; } + .has-breadcrumbs .breadcrumbs .all-topics .fa { + margin-right: 10px; } + +.forum-nav-browse-filter label { + margin-bottom: 0; + width: 100%; } + +.forum-nav-browse-filter-input { + padding-left: calc(var(--baseline) / 4); + padding-right: calc(var(--baseline) / 2)12px; + box-shadow: none !important; + border-radius: var(--forum-border-radius) !important; + height: auto !important; + font-size: var(--forum-small-font-size) !important; } + +.forum-nav-filter-main, +.forum-nav-filter-cohort, +.forum-nav-sort { + font: inherit; + line-height: 1em; + margin-bottom: 0; } + +.forum-nav-filter-main-control, +.forum-nav-filter-cohort-control, +.forum-nav-sort-control { + font: inherit; } + +li[class*=forum-nav-thread-label-] span { + color: inherit; } + +li[class*=forum-nav-thread-label-]::before, li[class*=forum-nav-thread-label-]::after { + display: none !important; } + +.discussion .action-label span, +.discussion .action-icon span { + color: inherit; } + +.discussion-module .post-header { + margin-bottom: 0 !important; + padding-bottom: 0 !important; } + .discussion-module .post-header .posted-details { + margin: calc(var(--baseline) / 5) 0 !important; } + .discussion-module .post-header .post-labels { + font-size: var(--forum-base-font-size); } + .discussion-module .post-header .post-title { + margin-bottom: 0 !important; } + +.discussion-article .response-header { + line-height: 1 !important; + font-size: var(--forum-base-font-size) !important; + margin-bottom: 0 !important; + padding-bottom: 0 !important; } + +/* + This file mirror UXPL Form field styles +*/ +.post-type-label { + margin-right: 20px; + display: inline-block; + line-height: 100%; } + +.post-options .field-label { + display: inline-block; } + +.field-label .field-input:checked + .field-input-label { + color: #0075b4; } + +.input-radio, +.input-checkbox { + margin-right: 10px; } + +.discussion.inline-discussion .inline-threads { + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); } + +.discussion.inline-discussion .inline-thread { + border: 1px solid var(--forum-color-border); + border-radius: var(--forum-border-radius); } + .discussion.inline-discussion .inline-thread .forum-nav-bar { + padding: calc(var(--baseline) / 2) calc(var(--baseline) / 4); + color: var(--forum-color-navigation-bar); + position: relative; } + .discussion.inline-discussion .inline-thread .forum-nav-bar .all-posts-btn { + color: var(--forum-color-primary); } + .discussion.inline-discussion .inline-thread .forum-nav-bar .all-posts-btn .icon { + margin-left: calc(var(--baseline) / 2); } + .discussion.inline-discussion .inline-thread .forum-content { + padding: calc(var(--baseline) / 2); + overflow-y: auto; } + +.discussion.inline-discussion .new-post-article { + position: relative; + border: 1px solid var(--forum-color-border); } + .discussion.inline-discussion .new-post-article .add-post-cancel { + right: calc(var(--baseline) / 2); + top: calc(var(--baseline) / 2); + position: absolute; + color: #0075b4; } + .discussion.inline-discussion .new-post-article .add-post-cancel:hover, .discussion.inline-discussion .new-post-article .add-post-cancel:focus { + border-color: transparent; + box-shadow: none; + background-color: transparent; + background-image: none; } diff --git a/xblocks_contrib/discussion/assets/static/js/common/content.js b/xblocks_contrib/discussion/assets/static/js/common/content.js new file mode 100644 index 00000000..c229c8dd --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/content.js @@ -0,0 +1,428 @@ +/* globals DiscussionUtil, Comments */ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty; + + function __extends(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + } + + var __indexOf = [].indexOf || function(item) { + for (var i = 0, l = this.length; i < l; i++) { + if (i in this && this[i] === item) { + return i; + } + } + return -1; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.Content = (function(_super) { + __extends(Content, _super); + + function Content() { + return Content.__super__.constructor.apply(this, arguments); + } + + Content.contents = {}; + + Content.contentInfos = {}; + + Content.prototype.template = function() { + return DiscussionUtil.getTemplate('_content'); + }; + + Content.prototype.actions = { + editable: '.admin-edit', + can_reply: '.discussion-reply', + can_delete: '.admin-delete', + can_openclose: '.admin-openclose', + can_report: '.admin-report', + can_vote: '.admin-vote' + }; + + Content.prototype.urlMappers = {}; + + Content.prototype.urlFor = function(name) { + return this.urlMappers[name].apply(this); + }; + + Content.prototype.can = function(action) { + return (this.get('ability') || {})[action]; + }; + + Content.prototype.canBeEndorsed = function() { + return false; + }; + + Content.prototype.updateInfo = function(info) { + if (info) { + this.set('ability', info.ability); + this.set('voted', info.voted); + return this.set('subscribed', info.subscribed); + } + }; + + Content.prototype.addComment = function(comment, options) { + var comments_count, model, thread; + options = (options) || {}; + if (!options.silent) { + thread = this.get('thread'); + comments_count = parseInt(thread.get('comments_count')); + thread.set('comments_count', comments_count + 1); + } + this.get('children').push(comment); + model = new Comment($.extend({}, comment, { + thread: this.get('thread') + })); + this.get('comments').add(model); + this.trigger('comment:add'); + return model; + }; + + Content.prototype.removeComment = function(comment) { + var comments_count, thread; + thread = this.get('thread'); + comments_count = parseInt(thread.get('comments_count')); + thread.set('comments_count', comments_count - 1 - comment.getCommentsCount()); + return this.trigger('comment:remove'); + }; + + Content.prototype.resetComments = function(children) { + var comment, _i, _len, _ref, _results; + this.set('children', []); + this.set('comments', new Comments()); + _ref = children || []; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + comment = _ref[_i]; + _results.push(this.addComment(comment, { + silent: true + })); + } + return _results; + }; + + Content.prototype.initialize = function() { + var userId; + Content.addContent(this.id, this); + userId = this.get('user_id'); + if (userId) { + this.set('staff_authored', DiscussionUtil.isStaff(userId)); + this.set('community_ta_authored', DiscussionUtil.isTA(userId) || DiscussionUtil.isGroupTA(userId)); + } else { + this.set('staff_authored', false); + this.set('community_ta_authored', false); + } + if (Content.getInfo(this.id)) { + this.updateInfo(Content.getInfo(this.id)); + } + this.set('user_url', DiscussionUtil.urlFor('user_profile', userId)); + return this.resetComments(this.get('children')); + }; + + Content.prototype.remove = function() { + if (this.get('type') === 'comment') { + this.get('thread').removeComment(this); + return this.get('thread').trigger('comment:remove', this); + } else { + return this.trigger('thread:remove', this); + } + }; + + Content.addContent = function(id, content) { + this.contents[id] = content; + }; + + Content.getContent = function(id) { + return this.contents[id]; + }; + + Content.getInfo = function(id) { + return this.contentInfos[id]; + }; + + Content.loadContentInfos = function(infos) { + var id, info; + for (id in infos) { + if (infos.hasOwnProperty(id)) { + info = infos[id]; + if (this.getContent(id)) { + this.getContent(id).updateInfo(info); + } + } + } + return $.extend(this.contentInfos, infos); + }; + + Content.prototype.pinThread = function() { + var pinned; + pinned = this.get('pinned'); + this.set('pinned', pinned); + return this.trigger('change', this); + }; + + Content.prototype.unPinThread = function() { + var pinned; + pinned = this.get('pinned'); + this.set('pinned', pinned); + return this.trigger('change', this); + }; + + Content.prototype.flagAbuse = function() { + var temp_array; + temp_array = this.get('abuse_flaggers'); + temp_array.push(window.user.get('id')); + this.set('abuse_flaggers', temp_array); + return this.trigger('change', this); + }; + + Content.prototype.unflagAbuse = function() { + this.get('abuse_flaggers').pop(window.user.get('id')); + return this.trigger('change', this); + }; + + Content.prototype.isFlagged = function() { + var flaggers, user; + user = DiscussionUtil.getUser(); + flaggers = this.get('abuse_flaggers'); + return user && ( + (__indexOf.call(flaggers, user.id) >= 0) + || (DiscussionUtil.isPrivilegedUser(user.id) && flaggers.length > 0) + ); + }; + + Content.prototype.incrementVote = function(increment) { + var newVotes; + newVotes = _.clone(this.get('votes')); + newVotes.up_count += increment; + return this.set('votes', newVotes); + }; + + Content.prototype.vote = function() { + return this.incrementVote(1); + }; + + Content.prototype.unvote = function() { + return this.incrementVote(-1); + }; + + return Content; + }(Backbone.Model)); + this.Thread = (function(_super) { + __extends(Thread, _super); + + function Thread() { + return Thread.__super__.constructor.apply(this, arguments); + } + + Thread.prototype.urlMappers = { + retrieve: function() { + return DiscussionUtil.urlFor('retrieve_single_thread', this.get('commentable_id'), this.id); + }, + reply: function() { + return DiscussionUtil.urlFor('create_comment', this.id); + }, + unvote: function() { + return DiscussionUtil.urlFor('undo_vote_for_' + (this.get('type')), this.id); + }, + upvote: function() { + return DiscussionUtil.urlFor('upvote_' + (this.get('type')), this.id); + }, + downvote: function() { + return DiscussionUtil.urlFor('downvote_' + (this.get('type')), this.id); + }, + close: function() { + return DiscussionUtil.urlFor('openclose_thread', this.id); + }, + update: function() { + return DiscussionUtil.urlFor('update_thread', this.id); + }, + _delete: function() { + return DiscussionUtil.urlFor('delete_thread', this.id); + }, + follow: function() { + return DiscussionUtil.urlFor('follow_thread', this.id); + }, + unfollow: function() { + return DiscussionUtil.urlFor('unfollow_thread', this.id); + }, + flagAbuse: function() { + return DiscussionUtil.urlFor('flagAbuse_' + (this.get('type')), this.id); + }, + unFlagAbuse: function() { + return DiscussionUtil.urlFor('unFlagAbuse_' + (this.get('type')), this.id); + }, + pinThread: function() { + return DiscussionUtil.urlFor('pin_thread', this.id); + }, + unPinThread: function() { + return DiscussionUtil.urlFor('un_pin_thread', this.id); + } + }; + + Thread.prototype.initialize = function() { + this.set('thread', this); + return Thread.__super__.initialize.call(this); + }; + + Thread.prototype.comment = function() { + return this.set('comments_count', parseInt(this.get('comments_count')) + 1); + }; + + Thread.prototype.follow = function() { + return this.set('subscribed', true); + }; + + Thread.prototype.unfollow = function() { + return this.set('subscribed', false); + }; + + Thread.prototype.display_body = function() { + if (this.has('highlighted_body')) { + return String(this.get('highlighted_body')) + .replace(//g, '') + .replace(/<\/highlight>/g, ''); + } else { + return this.get('body'); + } + }; + + Thread.prototype.display_title = function() { + if (this.has('highlighted_title')) { + return String(this.get('highlighted_title')) + .replace(//g, '') + .replace(/<\/highlight>/g, ''); + } else { + return this.get('title'); + } + }; + + Thread.prototype.toJSON = function() { + var json_attributes; + json_attributes = _.clone(this.attributes); + return _.extend(json_attributes, { + title: this.display_title(), + body: this.display_body() + }); + }; + + Thread.prototype.created_at_date = function() { + return new Date(this.get('created_at')); + }; + + Thread.prototype.created_at_time = function() { + return new Date(this.get('created_at')).getTime(); + }; + + Thread.prototype.hasResponses = function() { + return this.get('comments_count') > 0; + }; + + return Thread; + }(this.Content)); + this.Comment = (function(_super) { + __extends(Comment, _super); + + function Comment() { + var self = this; + this.canBeEndorsed = function() { + return Comment.prototype.canBeEndorsed.apply(self, arguments); + }; + return Comment.__super__.constructor.apply(this, arguments); + } + + Comment.prototype.urlMappers = { + reply: function() { + return DiscussionUtil.urlFor('create_sub_comment', this.id); + }, + unvote: function() { + return DiscussionUtil.urlFor('undo_vote_for_' + (this.get('type')), this.id); + }, + upvote: function() { + return DiscussionUtil.urlFor('upvote_' + (this.get('type')), this.id); + }, + downvote: function() { + return DiscussionUtil.urlFor('downvote_' + (this.get('type')), this.id); + }, + endorse: function() { + return DiscussionUtil.urlFor('endorse_comment', this.id); + }, + update: function() { + return DiscussionUtil.urlFor('update_comment', this.id); + }, + _delete: function() { + return DiscussionUtil.urlFor('delete_comment', this.id); + }, + flagAbuse: function() { + return DiscussionUtil.urlFor('flagAbuse_' + (this.get('type')), this.id); + }, + unFlagAbuse: function() { + return DiscussionUtil.urlFor('unFlagAbuse_' + (this.get('type')), this.id); + } + }; + + Comment.prototype.getCommentsCount = function() { + var count; + count = 0; + this.get('comments').each(function(comment) { + // eslint-disable-next-line no-return-assign + return count += comment.getCommentsCount() + 1; + }); + return count; + }; + + Comment.prototype.canBeEndorsed = function() { + var user_id; + user_id = window.user.get('id'); + return user_id && ( + DiscussionUtil.isPrivilegedUser(user_id) + || ( + this.get('thread').get('thread_type') === 'question' + && this.get('thread').get('user_id') === user_id + ) + ); + }; + + return Comment; + }(this.Content)); + + this.Comments = (function(_super) { + __extends(Comments, _super); + + function Comments() { + return Comments.__super__.constructor.apply(this, arguments); + } + + Comments.prototype.model = Comment; + + Comments.prototype.initialize = function() { + var self = this; + return this.bind('add', function(item) { + item.collection = self; + }); + }; + + Comments.prototype.find = function(id) { + return _.first(this.where({ + id: id + })); + }; + + return Comments; + }(Backbone.Collection)); + } +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/discussion.js b/xblocks_contrib/discussion/assets/static/js/common/discussion.js new file mode 100644 index 00000000..09e6c876 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/discussion.js @@ -0,0 +1,228 @@ +/* globals Thread, DiscussionUtil, Content */ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.Discussion = (function(_super) { + __extends(Discussion, _super); + + function Discussion() { + return Discussion.__super__.constructor.apply(this, arguments); + } + + Discussion.prototype.model = Thread; + + Discussion.prototype.initialize = function(models, options) { + var self = this; + if (!options) { + options = {}; + } + this.pages = options.pages || 1; + this.current_page = 1; + this.sort_preference = options.sort; + this.is_commentable_divided = options.is_commentable_divided; + this.bind('add', function(item) { + item.discussion = self; + }); + this.setSortComparator(this.sort_preference); + return this.on('thread:remove', function(thread) { + self.remove(thread); + }); + }; + + Discussion.prototype.find = function(id) { + return _.first(this.where({ + id: id + })); + }; + + Discussion.prototype.hasMorePages = function() { + return this.current_page < this.pages; + }; + + Discussion.prototype.setSortComparator = function(sortBy) { + // eslint-disable-next-line default-case + switch (sortBy) { + case 'activity': + this.comparator = this.sortByDateRecentFirst; + break; + case 'votes': + this.comparator = this.sortByVotes; + break; + case 'comments': + this.comparator = this.sortByComments; + break; + } + }; + + Discussion.prototype.addThread = function(thread) { + var model; + if (!this.find(thread.id)) { + model = new Thread(thread); + this.add(model); + return model; + } + }; + + Discussion.prototype.retrieveAnotherPage = function(mode, options, sort_options, error) { + var data, url, + self = this; + if (!options) { + options = {}; + } + if (!sort_options) { + sort_options = {}; + } + data = { + page: this.current_page + 1 + }; + if (_.contains(['unread', 'unanswered', 'flagged'], options.filter)) { + data[options.filter] = true; + } + // eslint-disable-next-line default-case + switch (mode) { + case 'search': + url = DiscussionUtil.urlFor('search'); + data.text = options.search_text; + break; + case 'commentables': + url = DiscussionUtil.urlFor('retrieve_discussion', options.commentable_ids); + data.commentable_ids = options.commentable_ids; + break; + case 'all': + url = DiscussionUtil.urlFor('threads'); + break; + case 'followed': + url = DiscussionUtil.urlFor('followed_threads', options.user_id); + break; + case 'user': + url = DiscussionUtil.urlFor('user_profile', options.user_id); + break; + } + if (options.group_id) { + data.group_id = options.group_id; + } + data.sort_key = sort_options.sort_key || 'activity'; + data.sort_order = sort_options.sort_order || 'desc'; + return DiscussionUtil.safeAjax({ + $elem: this.$el, + url: url, + data: data, + dataType: 'json', + success: function(response) { + var models, new_collection, new_threads; + models = self.models; + new_threads = [ + (function() { + var _i, _len, _ref, _results; + _ref = response.discussion_data; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + data = _ref[_i]; + _results.push(new Thread(data)); + } + return _results; + }()) + ][0]; + new_collection = _.union(models, new_threads); + Content.loadContentInfos(response.annotated_content_info); + self.pages = response.num_pages; + self.current_page = response.page; + self.is_commentable_divided = response.is_commentable_divided; + return self.reset(new_collection); + }, + error: error + }); + }; + + Discussion.prototype.sortByDate = function(thread) { + /* + The comment client asks each thread for a value by which to sort the collection + and calls this sort routine regardless of the order returned from the LMS/comments service + so, this takes advantage of this per-thread value and returns tomorrow's date + for pinned threads, ensuring that they appear first, (which is the intent of pinned threads) + */ + return this.pinnedThreadsSortComparatorWithDate(thread, true); + }; + + Discussion.prototype.sortByDateRecentFirst = function(thread) { + /* + Same as above + but negative to flip the order (newest first) + */ + return this.pinnedThreadsSortComparatorWithDate(thread, false); + }; + + Discussion.prototype.sortByVotes = function(thread1, thread2) { + var thread1_count, thread2_count; + thread1_count = parseInt(thread1.get('votes').up_count); + thread2_count = parseInt(thread2.get('votes').up_count); + return this.pinnedThreadsSortComparatorWithCount(thread1, thread2, thread1_count, thread2_count); + }; + + Discussion.prototype.sortByComments = function(thread1, thread2) { + var thread1_count, thread2_count; + thread1_count = parseInt(thread1.get('comments_count')); + thread2_count = parseInt(thread2.get('comments_count')); + return this.pinnedThreadsSortComparatorWithCount(thread1, thread2, thread1_count, thread2_count); + }; + + Discussion.prototype.pinnedThreadsSortComparatorWithCount = function( + thread1, thread2, thread1_count, thread2_count + ) { + if (thread1.get('pinned') && !thread2.get('pinned')) { + return -1; + } else if (thread2.get('pinned') && !thread1.get('pinned')) { + return 1; + } else { + if (thread1_count > thread2_count) { + return -1; + } else if (thread2_count > thread1_count) { + return 1; + } else { + if (thread1.created_at_time() > thread2.created_at_time()) { + return -1; + } else { + return 1; + } + } + } + }; + + Discussion.prototype.pinnedThreadsSortComparatorWithDate = function(thread, ascending) { + var preferredDate, threadLastActivityAtTime, today; + threadLastActivityAtTime = new Date(thread.get('last_activity_at')).getTime(); + if (thread.get('pinned')) { + today = new Date(); + preferredDate = new Date(today.getTime() + (24 * 60 * 60 * 1000) + threadLastActivityAtTime); + } else { + preferredDate = threadLastActivityAtTime; + } + if (ascending) { + return preferredDate; + } else { + return -preferredDate; + } + }; + + return Discussion; + }(Backbone.Collection)); + } +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/mathjax_include.js b/xblocks_contrib/discussion/assets/static/js/common/mathjax_include.js new file mode 100644 index 00000000..07435456 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/mathjax_include.js @@ -0,0 +1,56 @@ +// See common/templates/mathjax_include.html for info on Fast Preview mode. +var disableFastPreview = true, + vendorScript; +if (typeof MathJax === 'undefined') { + if (disableFastPreview) { + window.MathJax = { + menuSettings: {CHTMLpreview: false} + }; + } + + vendorScript = document.createElement('script'); + vendorScript.onload = function() { + 'use strict'; + + var MathJax = window.MathJax, + setMathJaxDisplayDivSettings; + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ + ['\\(', '\\)'], + ['[mathjaxinline]', '[/mathjaxinline]'] + ], + displayMath: [ + ['\\[', '\\]'], + ['[mathjax]', '[/mathjax]'] + ] + } + }); + if (disableFastPreview) { + MathJax.Hub.processSectionDelay = 0; + } + MathJax.Hub.signal.Interest(function(message) { + if (message[0] === 'End Math') { + setMathJaxDisplayDivSettings(); + } + }); + setMathJaxDisplayDivSettings = function() { + $('.MathJax_Display').each(function() { + this.setAttribute('tabindex', '0'); + this.setAttribute('aria-live', 'off'); + this.removeAttribute('role'); + this.removeAttribute('aria-readonly'); + }); + }; + }; + // Automatic loading of Mathjax accessibility files + window.MathJax = { + menuSettings: { + collapsible: true, + autocollapse: false, + explorer: true + } + }; + vendorScript.src = 'https://cdn.jsdelivr.net/npm/mathjax@2.7.5/MathJax.js?config=TeX-MML-AM_HTMLorMML'; + document.body.appendChild(vendorScript); +} diff --git a/xblocks_contrib/discussion/assets/static/js/common/models/discussion_course_settings.js b/xblocks_contrib/discussion/assets/static/js/common/models/discussion_course_settings.js new file mode 100644 index 00000000..fb6c5761 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/models/discussion_course_settings.js @@ -0,0 +1,32 @@ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.DiscussionCourseSettings = (function(_super) { + __extends(DiscussionCourseSettings, _super); + + function DiscussionCourseSettings() { + return DiscussionCourseSettings.__super__.constructor.apply(this, arguments); + } + + return DiscussionCourseSettings; + }(Backbone.Model)); + } +}).call(this); diff --git a/xblocks_contrib/discussion/assets/static/js/common/models/discussion_user.js b/xblocks_contrib/discussion/assets/static/js/common/models/discussion_user.js new file mode 100644 index 00000000..ccd1f037 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/models/discussion_user.js @@ -0,0 +1,50 @@ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.DiscussionUser = (function(_super) { + __extends(DiscussionUser, _super); + + function DiscussionUser() { + return DiscussionUser.__super__.constructor.apply(this, arguments); + } + + DiscussionUser.prototype.following = function(thread) { + return _.include(this.get('subscribed_thread_ids'), thread.id); + }; + + DiscussionUser.prototype.voted = function(thread) { + return _.include(this.get('upvoted_ids'), thread.id); + }; + + DiscussionUser.prototype.vote = function(thread) { + this.get('upvoted_ids').push(thread.id); + return thread.vote(); + }; + + DiscussionUser.prototype.unvote = function(thread) { + this.set('upvoted_ids', _.without(this.get('upvoted_ids'), thread.id)); + return thread.unvote(); + }; + + return DiscussionUser; + }(Backbone.Model)); + } +}).call(this); diff --git a/xblocks_contrib/discussion/assets/static/js/common/utils.js b/xblocks_contrib/discussion/assets/static/js/common/utils.js new file mode 100644 index 00000000..3f0a7a44 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/utils.js @@ -0,0 +1,589 @@ +/* globals $$course_id, Content, Markdown, MathJax, URI, _ */ +(function() { + 'use strict'; + + this.DiscussionUtil = (function() { + function DiscussionUtil() { + } + + DiscussionUtil.wmdEditors = {}; + + DiscussionUtil.leftKey = 37; + DiscussionUtil.rightKey = 39; + + DiscussionUtil.getTemplate = function(id) { + return $('script#' + id).html(); + }; + + DiscussionUtil.setUser = function(user) { + this.user = user; + }; + + DiscussionUtil.getUser = function() { + return this.user; + }; + + DiscussionUtil.loadRoles = function(roles) { + this.roleIds = roles; + }; + + DiscussionUtil.isStaff = function(userId) { + var staff; + if (_.isUndefined(userId)) { + // eslint-disable-next-line no-void + userId = this.user ? this.user.id : void 0; + } + if (_.isUndefined(this.roleIds)) { + this.roleIds = {}; + } + staff = _.union(this.roleIds.Moderator, this.roleIds.Administrator); + return _.include(staff, parseInt(userId)); + }; + + DiscussionUtil.isTA = function(userId) { + var ta; + if (_.isUndefined(userId)) { + // eslint-disable-next-line no-void + userId = this.user ? this.user.id : void 0; + } + ta = _.union(this.roleIds['Community TA']); + return _.include(ta, parseInt(userId)); + }; + + DiscussionUtil.isGroupTA = function(userId) { + var groupTa, + localUserId = userId; + if (_.isUndefined(userId)) { + // eslint-disable-next-line no-void + localUserId = this.user ? this.user.id : void 0; + } + groupTa = _.union(this.roleIds['Group Moderator']); + return _.include(groupTa, parseInt(localUserId, 10)); + }; + + DiscussionUtil.isPrivilegedUser = function(userId) { + return this.isStaff(userId) || this.isTA(userId); + }; + + DiscussionUtil.bulkUpdateContentInfo = function(infos) { + var id, info, _results; + _results = []; + for (id in infos) { + if (infos.hasOwnProperty(id)) { + info = infos[id]; + _results.push(Content.getContent(id).updateInfo(info)); + } + } + return _results; + }; + + DiscussionUtil.generateDiscussionLink = function(cls, txt, handler) { + return $('') + .addClass('discussion-link').attr('href', '#') + .addClass(cls) + .text(txt) + .click(function() { return handler(this); }); + }; + + DiscussionUtil.urlFor = function(name, param, param1, param2) { + return { + follow_discussion: '/courses/' + $$course_id + '/discussion/' + param + '/follow', + unfollow_discussion: '/courses/' + $$course_id + '/discussion/' + param + '/unfollow', + create_thread: '/courses/' + $$course_id + '/discussion/' + param + '/threads/create', + update_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/update', + create_comment: '/courses/' + $$course_id + '/discussion/threads/' + param + '/reply', + delete_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/delete', + flagAbuse_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/flagAbuse', + unFlagAbuse_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unFlagAbuse', + flagAbuse_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/flagAbuse', + unFlagAbuse_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/unFlagAbuse', + upvote_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/upvote', + downvote_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/downvote', + pin_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/pin', + un_pin_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unpin', + undo_vote_for_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unvote', + follow_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/follow', + unfollow_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unfollow', + update_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/update', + endorse_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/endorse', + create_sub_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/reply', + delete_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/delete', + upvote_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/upvote', + downvote_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/downvote', + undo_vote_for_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/unvote', + upload: '/courses/' + $$course_id + '/discussion/upload', + users: '/courses/' + $$course_id + '/discussion/users', + search: '/courses/' + $$course_id + '/discussion/forum/search', + retrieve_discussion: '/courses/' + $$course_id + '/discussion/forum/' + param + '/inline', + retrieve_single_thread: '/courses/' + $$course_id + '/discussion/forum/' + param + '/threads/' + param1, + openclose_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/close', + user_profile: '/courses/' + $$course_id + '/discussion/forum/users/' + param, + followed_threads: '/courses/' + $$course_id + '/discussion/forum/users/' + param + '/followed', + threads: '/courses/' + $$course_id + '/discussion/forum', + enable_notifications: '/notification_prefs/enable/', + disable_notifications: '/notification_prefs/disable/', + notifications_status: '/notification_prefs/status/' + }[name]; + }; + + DiscussionUtil.ignoreEnterKey = function(event) { + if (event.which === 13) { + return event.preventDefault(); + } + }; + + DiscussionUtil.activateOnSpace = function(event, func) { + if (event.which === 32) { + event.preventDefault(); + return func(event); + } + }; + + DiscussionUtil.makeFocusTrap = function(elem) { + return elem.keydown(function(event) { + if (event.which === 9) { + return event.preventDefault(); + } + }); + }; + + DiscussionUtil.showLoadingIndicator = function(element, takeFocus) { + var animElem = edx.HtmlUtils.joinHtml( + edx.HtmlUtils.HTML("
"), + edx.HtmlUtils.HTML(""), + gettext('Loading content'), + edx.HtmlUtils.HTML('
') + ); + var $animElem = $(animElem.toString()); + element.after($animElem); + this.$_loading = $animElem; + if (takeFocus) { + this.makeFocusTrap(this.$_loading); + this.$_loading.focus(); + } + }; + + DiscussionUtil.hideLoadingIndicator = function() { + return this.$_loading.remove(); + }; + + DiscussionUtil.discussionAlert = function(header, body) { + var $alertDiv, $alertTrigger; + // Prevents "text" is undefined in underscore.js in tests - looks like some tests use + // discussions somehow, but never append discussion fixtures or reset them; this causes + // entire test suite (lms, cms, common) to fail due to unhandled JS exception + var popupTemplate = $('#alert-popup').html() || ''; + if ($('#discussion-alert').length === 0) { + $alertDiv = $( + edx.HtmlUtils.template(popupTemplate)({}).toString() + ); + this.makeFocusTrap($alertDiv.find('button')); + $alertTrigger = $("
").css('display', 'none'); + $alertTrigger.leanModal({ + closeButton: '#discussion-alert .dismiss', + overlay: 1, + top: 200 + }); + $('body').append($alertDiv).append($alertTrigger); + } + $('#discussion-alert header h2').text(header); + $('#discussion-alert p').text(body); + $('#discussion-alert-trigger').click(); + $('#discussion-alert button').focus(); + }; + + DiscussionUtil.safeAjax = function(params) { + var $elem, deferred, request, + self = this; + $elem = params.$elem; + if ($elem && $elem.prop('disabled')) { + deferred = $.Deferred(); + deferred.reject(); + return deferred.promise(); + } + params.url = URI(params.url).addSearch({ + ajax: 1 + }); + if (!params.error) { + params.error = function() { + self.discussionAlert( + gettext('Error'), + gettext('Your request could not be processed. Refresh the page and try again.') + ); + }; + } + + if ($elem) { + $elem.prop('disabled', true); + } + if (params.$loading) { + if (params.loadingCallback) { + params.loadingCallback.apply(params.$loading); + } else { + self.showLoadingIndicator(params.$loading, params.takeFocus); + } + } + + request = $.ajax(params).always(function() { + if ($elem) { + $elem.prop('disabled', false); + } + if (params.$loading) { + if (params.loadedCallback) { + return params.loadedCallback.apply(params.$loading); + } else { + return self.hideLoadingIndicator(); + } + } + }); + return request; + }; + + DiscussionUtil.updateWithUndo = function(model, updates, safeAjaxParams, errorMsg, beforeSend) { + var undo, + self = this; + if (errorMsg) { + safeAjaxParams.error = function() { + return self.discussionAlert(gettext('Error'), errorMsg); + }; + } + undo = _.pick(model.attributes, _.keys(updates)); + model.set(updates); + if (typeof beforeSend === 'function') { + beforeSend(); + } + return this.safeAjax(safeAjaxParams).fail(function() { + return model.set(undo); + }); + }; + + DiscussionUtil.bindLocalEvents = function($local, eventsHandler) { + var event, eventSelector, handler, selector, _ref, _results; + _results = []; + for (eventSelector in eventsHandler) { + if (eventsHandler.hasOwnProperty(eventSelector)) { + handler = eventsHandler[eventSelector]; + _ref = eventSelector.split(' '); + event = _ref[0]; + selector = _ref[1]; + _results.push($local(selector).unbind(event)[event](handler)); + } + } + return _results; + }; + + DiscussionUtil.formErrorHandler = function(errorsField) { + return function(xhr) { + var makeErrorElem, response, i, $errorItem; + makeErrorElem = function(message, alertId) { + return edx.HtmlUtils.joinHtml( + edx.HtmlUtils.HTML('
  • '), + edx.HtmlUtils.template( + $('#new-post-alert-template').html() + )({ + message: message, + alertId: alertId + }), + edx.HtmlUtils.HTML('
  • ') + ); + }; + errorsField.empty().show(); + if (xhr.status === 400) { + response = JSON.parse(xhr.responseText); + if (response.errors) { + for (i = 0; i < response.errors.length; i++) { + $errorItem = makeErrorElem(response.errors[i], i); + edx.HtmlUtils.append(errorsField, $errorItem); + } + } + } else { + $errorItem = makeErrorElem('Your request could not be processed. Refresh the page and try again.', 0); // eslint-disable-line max-len + edx.HtmlUtils.append(errorsField, $errorItem); + } + + // Set focus on the first error displayed + $('div[role="alert"]', errorsField).first().focus(); + }; + }; + + DiscussionUtil.clearFormErrors = function(errorsField) { + return errorsField.empty(); + }; + + DiscussionUtil.postMathJaxProcessor = function(htmlSnippet) { + var RE_DISPLAYMATH, RE_INLINEMATH; + RE_INLINEMATH = /^\$([^\$]*)\$/g; + RE_DISPLAYMATH = /^\$\$([^\$]*)\$\$/g; + return this.processEachMathAndCode(htmlSnippet, function(s, type) { + if (type === 'display') { + return s.replace(RE_DISPLAYMATH, function($0, $1) { + return '\\[' + $1 + '\\]'; + }); + } else if (type === 'inline') { + return s.replace(RE_INLINEMATH, function($0, $1) { + return '\\(' + $1 + '\\)'; + }); + } else { + return s; + } + }); + }; + + DiscussionUtil.makeWmdEditor = function($content, $local, cls_identifier) { + var appended_id, editor, elem, id, imageUploadUrl, placeholder, _processor; + elem = $local('.' + cls_identifier); + placeholder = elem.data('placeholder'); + id = elem.data('id'); + appended_id = '-' + cls_identifier + '-' + id; + imageUploadUrl = this.urlFor('upload'); + _processor = function(self) { + return function(text) { + // HTML returned by Markdown is assumed to be safe to render + return self.postMathJaxProcessor(edx.HtmlUtils.HTML(text)).toString(); + }; + }; + editor = Markdown.makeWmdEditor(elem, appended_id, imageUploadUrl, _processor(this)); + this.wmdEditors['' + cls_identifier + '-' + id] = editor; + if (placeholder) { + elem.find('#wmd-input' + appended_id).attr('placeholder', placeholder); + } + return editor; + }; + + DiscussionUtil.getWmdEditor = function($content, $local, cls_identifier) { + var elem, id; + elem = $local('.' + cls_identifier); + id = elem.attr('data-id'); + return this.wmdEditors['' + cls_identifier + '-' + id]; + }; + + DiscussionUtil.getWmdInput = function($content, $local, cls_identifier) { + var elem, id; + elem = $local('.' + cls_identifier); + id = elem.attr('data-id'); + return $local('#wmd-input-' + cls_identifier + '-' + id); + }; + + DiscussionUtil.getWmdContent = function($content, $local, cls_identifier) { + return this.getWmdInput($content, $local, cls_identifier).val(); + }; + + DiscussionUtil.setWmdContent = function($content, $local, cls_identifier, text) { + this.getWmdInput($content, $local, cls_identifier).val(text); + return this.getWmdEditor($content, $local, cls_identifier).refreshPreview(); + }; + + var RE_DISPLAYMATH = /^([^\$]*?)\$\$([^\$]*?)\$\$(.*)$/m, + RE_INLINEMATH = /^([^\$]*?)\$([^\$]+?)\$(.*)$/m, + ESCAPED_DOLLAR = '@@ESCAPED_D@@', + ESCAPED_BACKSLASH = '@@ESCAPED_B@@', + LATEX_SCRIPT = '\{javascript\:(.+?)\}'; + + /** + * Formats math and code chunks + * @param htmlSnippet - post contents in form of safe (escaped and/or stripped) HTML + * @param processor - callback to post-process math and code chunks. Should return HtmlUtils.HTML or "subclass" + * @returns {*} + */ + DiscussionUtil.processEachMathAndCode = function(htmlSnippet, processor) { + var $div, codeArchive, processedHtmlString, htmlString; + codeArchive = {}; + processedHtmlString = ''; + $div = edx.HtmlUtils.setHtml($('
    '), edx.HtmlUtils.ensureHtml(htmlSnippet)); + $div.find('code').each(function(index, code) { + codeArchive[index] = $(code).html(); + return $(code).text(index); + }); + htmlString = $div.html(); + htmlString = htmlString.replace(/\\\$/g, ESCAPED_DOLLAR); + /* eslint-disable no-loop-func */ + // eslint-disable-next-line no-constant-condition + while (true) { + if (RE_INLINEMATH.test(htmlString)) { + htmlString = htmlString.replace(RE_INLINEMATH, function($0, $1, $2, $3) { + processedHtmlString += $1 + processor('$' + $2 + '$', 'inline'); + return $3; + }); + } else if (RE_DISPLAYMATH.test(htmlString)) { + htmlString = htmlString.replace(RE_DISPLAYMATH, function($0, $1, $2, $3) { + /* + corrected mathjax rendering in preview + */ + processedHtmlString += $1 + processor('$$' + $2 + '$$', 'display'); + return $3; + }); + } else { + processedHtmlString += htmlString; + break; + } + } + /* eslint-enable no-loop-func */ + htmlString = processedHtmlString; + htmlString = htmlString.replace(new RegExp(ESCAPED_DOLLAR, 'g'), '\\$'); + htmlString = htmlString.replace(/\\\\\\\\/g, ESCAPED_BACKSLASH); + htmlString = htmlString.replace(/\\begin\{([a-z]*\*?)\}([\s\S]*?)\\end\{\1\}/img, function($0, $1, $2) { + return processor(('\\begin{' + $1 + '}') + $2 + ('\\end{' + $1 + '}')); + }); + htmlString = htmlString.replace(new RegExp(ESCAPED_BACKSLASH, 'g'), '\\\\\\\\'); + htmlString = htmlString.replace(new RegExp(LATEX_SCRIPT, 'g'), '{}'); + $div = edx.HtmlUtils.setHtml($('
    '), edx.HtmlUtils.HTML(htmlString)); + $div.find('code').each(function(index, code) { + edx.HtmlUtils.setHtml( + $(code), + edx.HtmlUtils.HTML(processor(codeArchive[index], 'code')) + ); + }); + return edx.HtmlUtils.HTML($div.html()); + }; + + DiscussionUtil.unescapeHighlightTag = function(htmlSnippet) { + return edx.HtmlUtils.HTML( + htmlSnippet.toString().replace( + /\<\;highlight\>\;/g, + "").replace(/\<\;\/highlight\>\;/g, '' + ) + ); + }; + + DiscussionUtil.stripHighlight = function(htmlString) { + return htmlString + .replace(/\&(amp\;)?lt\;highlight\&(amp\;)?gt\;/g, '') + .replace(/\&(amp\;)?lt\;\/highlight\&(amp\;)?gt\;/g, ''); + }; + + DiscussionUtil.stripLatexHighlight = function(htmlSnippet) { + return this.processEachMathAndCode(htmlSnippet, this.stripHighlight); + }; + + /** + * Processes markdown into formatted text and handles highlighting. + * @param unsafeText - raw markdown text, with all HTML entitites being *unescaped*. + * @returns HtmlSnippet + */ + DiscussionUtil.markdownWithHighlight = function(unsafeText) { + var converter; + unsafeText = unsafeText.replace(/^\>\;/gm, '>'); + converter = Markdown.getMathCompatibleConverter(); + /* + * converter.makeHtml and HTML escaping: + * - converter.makeHtml is not HtmlSnippet aware, so we must pass unescaped raw text + * - converter.makeHtml strips html tags in post body and escapes in code blocks by design. + * HTML tags are not supported. Only markdown is supported. + */ + var htmlSnippet = edx.HtmlUtils.HTML(converter.makeHtml(unsafeText)); + return this.unescapeHighlightTag(this.stripLatexHighlight(htmlSnippet)); + }; + + DiscussionUtil.abbreviateString = function(text, minLength) { + if (text.length < minLength) { + return text; + } else { + while (minLength < text.length && text[minLength] !== ' ') { + minLength++; + } + return text.substr(0, minLength) + gettext('…'); + } + }; + + DiscussionUtil.convertMath = function(element) { + edx.HtmlUtils.setHtml( + element, + this.postMathJaxProcessor(this.markdownWithHighlight(element.text())) + ); + }; + + DiscussionUtil.typesetMathJax = function(element) { + if (typeof MathJax !== 'undefined' && MathJax !== null && typeof MathJax.Hub !== 'undefined') { + MathJax.Hub.Queue(['Typeset', MathJax.Hub, element[0]]); + } + }; + + DiscussionUtil.abbreviateHTML = function(htmlSnippet, maxLength) { + var $result, imagesToReplace, truncated_text; + truncated_text = edx.HtmlUtils.HTML(jQuery.truncate(htmlSnippet.toString(), { + length: maxLength, + noBreaks: true, + ellipsis: gettext('…') + })); + $result = $(edx.HtmlUtils.joinHtml( + edx.HtmlUtils.HTML('
    '), + truncated_text, + edx.HtmlUtils.HTML('
    ') + ).toString()); + imagesToReplace = $result.find('img:not(:first)'); + if (imagesToReplace.length > 0) { + edx.HtmlUtils.append( + $result, + edx.HtmlUtils.interpolateHtml( + edx.HtmlUtils.HTML('

    {text}

    '), + {text: gettext('Some images in this post have been omitted')} + ) + ); + } + // See TNL-4983 for an explanation of why the linter requires ensureHtml() + var afterMessage = edx.HtmlUtils.interpolateHtml( + edx.HtmlUtils.HTML('{text}'), {text: gettext('image omitted')} + ); + imagesToReplace.after(edx.HtmlUtils.ensureHtml(afterMessage).toString()).remove(); + return $result.html(); + }; + + DiscussionUtil.getPaginationParams = function(curPage, numPages, pageUrlFunc) { + var delta, maxPage, minPage, pageInfo; + delta = 2; + minPage = Math.max(curPage - delta, 1); + maxPage = Math.min(curPage + delta, numPages); + pageInfo = function(pageNum) { + return { + number: pageNum, + url: pageUrlFunc(pageNum) + }; + }; + return { + page: curPage, + lowPages: _.range(minPage, curPage).map(pageInfo), + highPages: _.range(curPage + 1, maxPage + 1).map(pageInfo), + previous: curPage > 1 ? pageInfo(curPage - 1) : null, + next: curPage < numPages ? pageInfo(curPage + 1) : null, + leftdots: minPage > 2, + rightdots: maxPage < numPages - 1, + first: minPage > 1 ? pageInfo(1) : null, + last: maxPage < numPages ? pageInfo(numPages) : null + }; + }; + + DiscussionUtil.handleKeypressInToolbar = function(event) { + var $currentButton, $nextButton, $toolbar, $allButtons, + keyPressed, nextIndex, currentButtonIndex, + validKeyPress, toolbarHasButtons; + + $currentButton = $(event.target); + keyPressed = event.which || event.keyCode; + $toolbar = $currentButton.parent(); + $allButtons = $toolbar.children('.wmd-button'); + + validKeyPress = keyPressed === this.leftKey || keyPressed === this.rightKey; + toolbarHasButtons = $allButtons.length > 0; + + if (validKeyPress && toolbarHasButtons) { + currentButtonIndex = $allButtons.index($currentButton); + nextIndex = keyPressed === this.leftKey ? currentButtonIndex - 1 : currentButtonIndex + 1; + nextIndex = Math.max(Math.min(nextIndex, $allButtons.length - 1), 0); + + $nextButton = $($allButtons[nextIndex]); + this.moveSelectionToNextItem($currentButton, $nextButton); + } + }; + + DiscussionUtil.moveSelectionToNextItem = function(prevItem, nextItem) { + prevItem.attr('aria-selected', 'false'); + prevItem.attr('tabindex', '-1'); + + nextItem.attr('aria-selected', 'true'); + nextItem.attr('tabindex', '0'); + nextItem.focus(); + }; + + return DiscussionUtil; + }).call(this); +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/views/discussion_content_view.js b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_content_view.js new file mode 100644 index 00000000..2145130b --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_content_view.js @@ -0,0 +1,528 @@ +/* globals _, Backbone, DiscussionContentView, DiscussionUtil */ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.DiscussionContentView = (function(_super) { + __extends(DiscussionContentView, _super); + + function DiscussionContentView() { + var self = this; + this.setWmdContent = function() { + return DiscussionContentView.prototype.setWmdContent.apply(self, arguments); + }; + this.getWmdContent = function() { + return DiscussionContentView.prototype.getWmdContent.apply(self, arguments); + }; + this.getWmdEditor = function() { + return DiscussionContentView.prototype.getWmdEditor.apply(self, arguments); + }; + this.makeWmdEditor = function() { + return DiscussionContentView.prototype.makeWmdEditor.apply(self, arguments); + }; + return DiscussionContentView.__super__.constructor.apply(this, arguments); + } + + DiscussionContentView.prototype.events = { + 'click .discussion-flag-abuse': 'toggleFlagAbuse', + 'keydown .discussion-flag-abuse': function(event) { + return DiscussionUtil.activateOnSpace(event, this.toggleFlagAbuse); + } + }; + + DiscussionContentView.prototype.attrRenderer = { + ability: function(ability) { + var action, selector, _ref, _results; + _ref = this.abilityRenderer; + _results = []; + for (action in _ref) { + if (_ref.hasOwnProperty(action)) { + selector = _ref[action]; + if (!ability[action]) { + _results.push(selector.disable.apply(this)); + } else { + _results.push(selector.enable.apply(this)); + } + } + } + return _results; + } + }; + + DiscussionContentView.prototype.abilityRenderer = { + editable: { + enable: function() { + return this.$('.action-edit').closest('.actions-item').removeClass('is-hidden'); + }, + disable: function() { + return this.$('.action-edit').closest('.actions-item').addClass('is-hidden'); + } + }, + can_delete: { + enable: function() { + return this.$('.action-delete').closest('.actions-item').removeClass('is-hidden'); + }, + disable: function() { + return this.$('.action-delete').closest('.actions-item').addClass('is-hidden'); + } + }, + can_openclose: { + enable: function() { + var self = this; + return _.each(['.action-close', '.action-pin'], function(selector) { + return self.$(selector).closest('.actions-item').removeClass('is-hidden'); + }); + }, + disable: function() { + var self = this; + return _.each(['.action-close', '.action-pin'], function(selector) { + return self.$(selector).closest('.actions-item').addClass('is-hidden'); + }); + } + }, + can_report: { + enable: function() { + return this.$('.action-report').closest('.actions-item').removeClass('is-hidden'); + }, + disable: function() { + return this.$('.action-report').closest('.actions-item').addClass('is-hidden'); + } + }, + can_vote: { + enable: function() { + this.$('.action-vote').closest('.actions-item').removeClass('is-disabled'); + }, + disable: function() { + this.$('.action-vote').closest('.actions-item').addClass('is-disabled'); + } + } + }; + + DiscussionContentView.prototype.renderPartialAttrs = function() { + var attr, value, _ref, _results; + _ref = this.model.changedAttributes(); + _results = []; + for (attr in _ref) { + if (_ref.hasOwnProperty(attr)) { + value = _ref[attr]; + if (this.attrRenderer[attr]) { + _results.push(this.attrRenderer[attr].apply(this, [value])); + } else { + // eslint-disable-next-line no-void + _results.push(void 0); + } + } + } + return _results; + }; + + DiscussionContentView.prototype.renderAttrs = function() { + var attr, value, _ref, _results; + _ref = this.model.attributes; + _results = []; + for (attr in _ref) { + if (_ref.hasOwnProperty(attr)) { + value = _ref[attr]; + if (this.attrRenderer[attr]) { + _results.push(this.attrRenderer[attr].apply(this, [value])); + } else { + // eslint-disable-next-line no-void + _results.push(void 0); + } + } + } + return _results; + }; + + DiscussionContentView.prototype.makeWmdEditor = function(classIdentifier) { + if (!this.$el.find('.wmd-panel').length) { + return DiscussionUtil.makeWmdEditor(this.$el, $.proxy(this.$, this), classIdentifier); + } else { + return null; + } + }; + + DiscussionContentView.prototype.getWmdEditor = function(classIdentifier) { + return DiscussionUtil.getWmdEditor(this.$el, $.proxy(this.$, this), classIdentifier); + }; + + DiscussionContentView.prototype.getWmdContent = function(classIdentifier) { + return DiscussionUtil.getWmdContent(this.$el, $.proxy(this.$, this), classIdentifier); + }; + + DiscussionContentView.prototype.setWmdContent = function(classIdentifier, text) { + return DiscussionUtil.setWmdContent(this.$el, $.proxy(this.$, this), classIdentifier, text); + }; + + DiscussionContentView.prototype.initialize = function() { + var self = this; + this.model.bind('change', this.renderPartialAttrs, this); + return this.listenTo(this.model, 'change:endorsed', function() { + if (self.model instanceof Comment) { + self.trigger('comment:endorse'); + } + }); + }; + + return DiscussionContentView; + }(Backbone.View)); + this.DiscussionContentShowView = (function(_super) { + __extends(DiscussionContentShowView, _super); + + function DiscussionContentShowView() { + var self = this; + this.toggleClose = function() { + return DiscussionContentShowView.prototype.toggleClose.apply(self, arguments); + }; + this.toggleReport = function() { + return DiscussionContentShowView.prototype.toggleReport.apply(self, arguments); + }; + this.togglePin = function() { + return DiscussionContentShowView.prototype.togglePin.apply(self, arguments); + }; + this.toggleVote = function() { + return DiscussionContentShowView.prototype.toggleVote.apply(self, arguments); + }; + this.toggleEndorse = function() { + return DiscussionContentShowView.prototype.toggleEndorse.apply(self, arguments); + }; + this.toggleFollow = function() { + return DiscussionContentShowView.prototype.toggleFollow.apply(self, arguments); + }; + this.handleSecondaryActionBlur = function() { + return DiscussionContentShowView.prototype.handleSecondaryActionBlur.apply(self, arguments); + }; + this.handleSecondaryActionEscape = function() { + return DiscussionContentShowView.prototype.handleSecondaryActionEscape.apply(self, arguments); + }; + this.toggleSecondaryActions = function() { + return DiscussionContentShowView.prototype.toggleSecondaryActions.apply(self, arguments); + }; + this.updateButtonState = function() { + return DiscussionContentShowView.prototype.updateButtonState.apply(self, arguments); + }; + return DiscussionContentShowView.__super__.constructor.apply(this, arguments); + } + + DiscussionContentShowView.prototype.events = _.reduce( + [ + ['.action-follow', 'toggleFollow'], + ['.action-answer', 'toggleEndorse'], + ['.action-endorse', 'toggleEndorse'], + ['.action-vote', 'toggleVote'], + ['.action-more', 'toggleSecondaryActions'], + ['.action-pin', 'togglePin'], + ['.action-edit', 'edit'], + ['.action-delete', '_delete'], + ['.action-report', 'toggleReport'], + ['.action-close', 'toggleClose'] + ], + function(obj, event) { + var funcName, selector; + selector = event[0]; + funcName = event[1]; + // eslint-disable-next-line no-shadow + obj['click ' + selector] = function(event) { + return this[funcName](event); + }; + // eslint-disable-next-line no-shadow + obj['keydown ' + selector] = function(event) { + return DiscussionUtil.activateOnSpace(event, this[funcName]); + }; + return obj; + }, + {} + ); + + DiscussionContentShowView.prototype.updateButtonState = function(selector, checked) { + var $button; + $button = this.$(selector); + $button.toggleClass('is-checked', checked); + return $button.attr('aria-checked', checked); + }; + + DiscussionContentShowView.prototype.attrRenderer = $.extend( + {}, + DiscussionContentView.prototype.attrRenderer, + { + subscribed: function(subscribed) { + return this.updateButtonState('.action-follow', subscribed); + }, + endorsed: function(endorsed) { + var $button, selector; + selector = this.model.get('thread').get('thread_type') === 'question' + ? '.action-answer' + : '.action-endorse'; + this.updateButtonState(selector, endorsed); + $button = this.$(selector); + $button.closest('.actions-item').toggleClass('is-hidden', !this.model.canBeEndorsed()); + return $button.toggleClass('is-checked', endorsed); + }, + votes: function(votes) { + var button, numVotes, selector, votesText, votesCountMsg; + selector = '.action-vote'; + this.updateButtonState(selector, window.user.voted(this.model)); + button = this.$el.find(selector); + numVotes = votes.up_count; + votesCountMsg = ngettext( + 'there is currently {numVotes} vote', 'there are currently {numVotes} votes', numVotes + ); + button.find('.js-sr-vote-count').empty().text( + edx.StringUtils.interpolate(votesCountMsg, {numVotes: numVotes}) + ); + votesText = edx.StringUtils.interpolate( + ngettext('{numVotes} Vote', '{numVotes} Votes', numVotes), + {numVotes: numVotes}); + button.find('.vote-count').empty().text(votesText); + this.$el.find('.display-vote .vote-count').empty().text(votesText); + }, + pinned: function(pinned) { + this.updateButtonState('.action-pin', pinned); + return this.$('.post-label-pinned').toggleClass('is-hidden', !pinned); + }, + abuse_flaggers: function() { + var flagged; + flagged = this.model.isFlagged(); + this.updateButtonState('.action-report', flagged); + return this.$('.post-label-reported').toggleClass('is-hidden', !flagged); + }, + closed: function(closed) { + this.updateButtonState('.action-close', closed); + this.$('.post-label-closed').toggleClass('is-hidden', !closed); + return this.$('.display-vote').toggle(closed); + } + } + ); + + DiscussionContentShowView.prototype.toggleSecondaryActions = function(event) { + event.preventDefault(); + event.stopPropagation(); + this.secondaryActionsExpanded = !this.secondaryActionsExpanded; + this.$('.action-more').toggleClass('is-expanded', this.secondaryActionsExpanded); + this.$('.actions-dropdown') + .toggleClass('is-expanded', this.secondaryActionsExpanded) + .attr('aria-expanded', this.secondaryActionsExpanded); + + if (this.secondaryActionsExpanded) { + if (event.type === 'keydown') { + this.$('.action-list-item:first').focus(); + } + $('body').on('click', this.toggleSecondaryActions); + $('body').on('keydown', this.handleSecondaryActionEscape); + return this.$('.action-list-item').on('blur', this.handleSecondaryActionBlur); + } else { + $('body').off('click', this.toggleSecondaryActions); + $('body').off('keydown', this.handleSecondaryActionEscape); + return this.$('.action-list-item').off('blur', this.handleSecondaryActionBlur); + } + }; + + DiscussionContentShowView.prototype.handleSecondaryActionEscape = function(event) { + if (event.keyCode === 27) { + this.toggleSecondaryActions(event); + this.$('.action-more').focus(); + } + }; + + DiscussionContentShowView.prototype.handleSecondaryActionBlur = function(event) { + var self = this; + return setTimeout(function() { + if (self.secondaryActionsExpanded && self.$('.actions-dropdown :focus').length === 0) { + self.toggleSecondaryActions(event); + } + }, 10); + }; + + DiscussionContentShowView.prototype.toggleFollow = function(event) { + var isSubscribing, msg, url; + event.preventDefault(); + isSubscribing = !this.model.get('subscribed'); + url = this.model.urlFor(isSubscribing ? 'follow' : 'unfollow'); + if (isSubscribing) { + msg = gettext('You could not be subscribed to this post. Refresh the page and try again.'); + } else { + msg = gettext('You could not be unsubscribed from this post. Refresh the page and try again.'); + } + return DiscussionUtil.updateWithUndo(this.model, { + subscribed: isSubscribing + }, { + url: url, + type: 'POST', + $elem: $(event.currentTarget) + }, msg); + }; + + DiscussionContentShowView.prototype.toggleEndorse = function(event) { + var isEndorsing, msg, updates, url, + self = this; + event.preventDefault(); + isEndorsing = !this.model.get('endorsed'); + url = this.model.urlFor('endorse'); + updates = { + endorsed: isEndorsing, + endorsement: isEndorsing ? { + username: DiscussionUtil.getUser().get('username'), + user_id: DiscussionUtil.getUser().id, + time: new Date().toISOString() + } : null + }; + if (this.model.get('thread').get('thread_type') === 'question') { + if (isEndorsing) { + msg = gettext('This response could not be marked as an answer. Refresh the page and try again.'); // eslint-disable-line max-len + } else { + msg = gettext('This response could not be unmarked as an answer. Refresh the page and try again.'); // eslint-disable-line max-len + } + } else { + if (isEndorsing) { + msg = gettext('This response could not be marked as endorsed. Refresh the page and try again.'); + } else { + msg = gettext('This response could not be unendorsed. Refresh the page and try again.'); + } + } + return DiscussionUtil.updateWithUndo( + this.model, + updates, + { + url: url, + type: 'POST', + data: {endorsed: isEndorsing}, + $elem: $(event.currentTarget) + }, + msg, + function() { return self.trigger('comment:endorse'); } + ).always(this.trigger('comment:endorse')); + }; + + DiscussionContentShowView.prototype.toggleVote = function(event) { + var isVoting, updates, url, user, + self = this; + event.preventDefault(); + user = DiscussionUtil.getUser(); + isVoting = !user.voted(this.model); + url = this.model.urlFor(isVoting ? 'upvote' : 'unvote'); + updates = { + upvoted_ids: (isVoting ? _.union : _.difference)(user.get('upvoted_ids'), [this.model.id]) + }; + if (!$(event.target.closest('.actions-item')).hasClass('is-disabled')) { + return DiscussionUtil.updateWithUndo(user, updates, { + url: url, + type: 'POST', + $elem: $(event.currentTarget) + }, gettext('This vote could not be processed. Refresh the page and try again.')).done(function() { + if (isVoting) { + return self.model.vote(); + } else { + return self.model.unvote(); + } + }); + } + }; + + DiscussionContentShowView.prototype.togglePin = function(event) { + var isPinning, msg, url; + event.preventDefault(); + isPinning = !this.model.get('pinned'); + url = this.model.urlFor(isPinning ? 'pinThread' : 'unPinThread'); + if (isPinning) { + msg = gettext('This post could not be pinned. Refresh the page and try again.'); + } else { + msg = gettext('This post could not be unpinned. Refresh the page and try again.'); + } + return DiscussionUtil.updateWithUndo(this.model, { + pinned: isPinning + }, { + url: url, + type: 'POST', + $elem: $(event.currentTarget) + }, msg); + }; + + DiscussionContentShowView.prototype.toggleReport = function(event) { + var isFlagging, msg, updates, url; + event.preventDefault(); + if (this.model.isFlagged()) { + isFlagging = false; + msg = gettext('This post could not be flagged for abuse. Refresh the page and try again.'); + } else { + isFlagging = true; + msg = gettext('This post could not be unflagged for abuse. Refresh the page and try again.'); + } + url = this.model.urlFor(isFlagging ? 'flagAbuse' : 'unFlagAbuse'); + updates = { + abuse_flaggers: (isFlagging ? _.union : _.difference)( + this.model.get('abuse_flaggers'), [DiscussionUtil.getUser().id] + ) + }; + return DiscussionUtil.updateWithUndo(this.model, updates, { + url: url, + type: 'POST', + $elem: $(event.currentTarget) + }, msg); + }; + + DiscussionContentShowView.prototype.toggleClose = function(event) { + var isClosing, msg, updates; + event.preventDefault(); + isClosing = !this.model.get('closed'); + if (isClosing) { + msg = gettext('This post could not be closed. Refresh the page and try again.'); + } else { + msg = gettext('This post could not be reopened. Refresh the page and try again.'); + } + updates = { + closed: isClosing + }; + return DiscussionUtil.updateWithUndo(this.model, updates, { + url: this.model.urlFor('close'), + type: 'POST', + data: updates, + $elem: $(event.currentTarget) + }, msg); + }; + + DiscussionContentShowView.prototype.getAuthorDisplay = function() { + return _.template($('#post-user-display-template').html())({ + username: this.model.get('username') || null, + user_url: this.model.get('user_url'), + is_community_ta: this.model.get('community_ta_authored'), + is_staff: this.model.get('staff_authored') + }); + }; + + DiscussionContentShowView.prototype.getEndorserDisplay = function() { + var endorsement; + endorsement = this.model.get('endorsement'); + if (endorsement && endorsement.username) { + return _.template($('#post-user-display-template').html())({ + username: endorsement.username, + user_url: DiscussionUtil.urlFor('user_profile', endorsement.user_id), + is_community_ta: DiscussionUtil.isTA(endorsement.user_id) + || DiscussionUtil.isGroupTA(endorsement.user_id), + is_staff: DiscussionUtil.isStaff(endorsement.user_id) + }); + } else { + return null; + } + }; + + return DiscussionContentShowView; + }).call(this, this.DiscussionContentView); + } +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/views/discussion_inline_view.js b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_inline_view.js new file mode 100644 index 00000000..7d87a69b --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_inline_view.js @@ -0,0 +1,256 @@ +/* globals + _, Backbone, Content, Discussion, DiscussionUtil, DiscussionUser, DiscussionCourseSettings, + DiscussionThreadListView, DiscussionThreadView, NewPostView + */ + +(function() { + 'use strict'; + + this.DiscussionInlineView = Backbone.View.extend({ + events: { + 'click .discussion-show': 'toggleDiscussion', + 'keydown .discussion-show': function(event) { + return DiscussionUtil.activateOnSpace(event, this.toggleDiscussion); + }, + 'click .new-post-btn': 'toggleNewPost', + 'click .all-posts-btn': 'navigateToAllPosts', + keydown: 'handleKeydown', + 'keydown .new-post-btn': function(event) { + return DiscussionUtil.activateOnSpace(event, this.toggleNewPost); + } + }, + + page_re: /\?discussion_page=(\d+)/, + + initialize: function(options) { + var match; + this.$el = options.el; + this.readOnly = options.readOnly; + this.toggleDiscussionBtn = this.$('.discussion-show'); + this.listenTo(this.model, 'change', this.render); + this.escKey = 27; + + if (options.startHeader !== undefined) { + this.startHeader = options.startHeader; + } else { + this.startHeader = 4; // Start the header levels at H + } + + match = this.page_re.exec(window.location.href); + if (match) { + this.page = parseInt(match[1], 10); + } else { + this.page = 1; + } + + this.defaultSortKey = 'activity'; + this.defaultSortOrder = 'desc'; + // discussions are open by default + this.toggleDiscussion(); + }, + + loadDiscussions: function($elem, error) { + var discussionId = this.$el.data('discussion-id'), + url = DiscussionUtil.urlFor('retrieve_discussion', discussionId) + ('?page=' + this.page) + + ('&sort_key=' + this.defaultSortKey) + ('&sort_order=' + this.defaultSortOrder), + self = this; + + DiscussionUtil.safeAjax({ + $elem: this.$el, + $loading: this.$el, + takeFocus: false, + url: url, + type: 'GET', + dataType: 'json', + success: function(response, textStatus) { + self.renderDiscussion(self.$el, response, textStatus, discussionId); + }, + error: error + }); + }, + + renderDiscussion: function($elem, response, textStatus, discussionId) { + var discussionHtml, + user = new DiscussionUser(response.user_info), + self = this; + $elem.focus(); + + window.user = user; + DiscussionUtil.setUser(user); + Content.loadContentInfos(response.annotated_content_info); + DiscussionUtil.loadRoles(response.roles); + + this.courseSettings = new DiscussionCourseSettings(response.course_settings); + this.is_commentable_divided = response.is_commentable_divided; + + this.discussion = new Discussion(undefined, {pages: response.num_pages}); + this.discussion.reset(response.discussion_data, { + silent: false + }); + + discussionHtml = edx.HtmlUtils.template($('#inline-discussion-template').html())({ + threads: response.discussion_data, + read_only: this.readOnly, + discussionId: discussionId + }); + + if (this.$('section.discussion').length) { + edx.HtmlUtils.setHtml(this.$el, discussionHtml); + this.$('section.discussion').replaceWith(edx.HtmlUtils.ensureHtml(discussionHtml).toString()); + } else { + edx.HtmlUtils.append(this.$el, discussionHtml); + } + + this.threadListView = new DiscussionThreadListView({ + el: this.$('.inline-threads'), + collection: self.discussion, + courseSettings: self.courseSettings + }); + + this.threadListView.render(); + + this.threadListView.on('thread:selected', _.bind(this.navigateToThread, this)); + + DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info); + + this.newPostForm = this.$el.find('.new-post-article'); + + this.newPostView = new NewPostView({ + el: this.newPostForm, + collection: this.discussion, + course_settings: this.courseSettings, + topicId: discussionId, + startHeader: this.startHeader, + is_commentable_divided: response.is_commentable_divided, + user_group_id: response.user_group_id + }); + + this.newPostView.render(); + + this.listenTo(this.newPostView, 'newPost:createPost', this.onNewPostCreated); + this.listenTo(this.newPostView, 'newPost:cancel', this.hideNewPost); + this.discussion.on('add', this.addThread); + + this.retrieved = true; + this.showed = true; + + if (this.isWaitingOnNewPost) { + this.newPostForm.removeClass('is-hidden').focus(); + } + + // Hide the thread view initially + this.$('.inline-thread').addClass('is-hidden'); + }, + + navigateToThread: function(threadId) { + var thread = this.discussion.get(threadId); + this.threadView = new DiscussionThreadView({ + el: this.$('.forum-content'), + model: thread, + mode: 'inline', + startHeader: this.startHeader, + courseSettings: this.courseSettings, + is_commentable_divided: this.is_commentable_divided + }); + this.threadView.render(); + this.listenTo(this.threadView.showView, 'thread:_delete', this.navigateToAllPosts); + this.$(".forum-nav-thread[data-id='" + threadId + "']").removeClass('never-read'); + this.threadListView.$el.addClass('is-hidden'); + this.$('.inline-thread').removeClass('is-hidden'); + }, + + navigateToAllPosts: function() { + // Hide the inline thread section + this.$('.inline-thread').addClass('is-hidden'); + + // Delete the thread view + if (this.threadView) { + this.threadView.$el.empty().off(); + this.threadView.stopListening(); + this.threadView = null; + } + + // Show the thread list view + this.threadListView.$el.removeClass('is-hidden'); + + // Set focus to thread list item that was saved as active + this.threadListView.$('.is-active').focus(); + }, + + hideDiscussion: function() { + this.$('section.discussion').addClass('is-hidden'); + this.toggleDiscussionBtn.removeClass('shown'); + this.toggleDiscussionBtn.find('.button-text').text(gettext('Show Discussion')); + this.showed = false; + }, + + toggleDiscussion: function() { + var self = this; + if (this.showed) { + this.hideDiscussion(); + } else { + this.toggleDiscussionBtn.addClass('shown'); + this.toggleDiscussionBtn.find('.button-text').text(gettext('Hide Discussion')); + if (this.retrieved) { + this.$('section.discussion').removeClass('is-hidden'); + this.showed = true; + } else { + this.loadDiscussions(this.$el, function(request) { + if (request.status === 403 && request.responseText) { + DiscussionUtil.discussionAlert( + gettext('Warning'), + request.responseText + ); + self.$el.text(request.responseText); + self.showed = true; + } else { + self.hideDiscussion(); + DiscussionUtil.discussionAlert( + gettext('Error'), + gettext('This discussion could not be loaded. Refresh the page and try again.') + ); + } + }); + } + } + }, + + toggleNewPost: function(event) { + event.preventDefault(); + if (!this.newPostForm) { + this.toggleDiscussion(); + this.isWaitingOnNewPost = true; + return; + } + if (this.showed) { + this.$('section.discussion').find('.inline-discussion-thread-container').addClass('is-hidden'); + this.$('section.discussion').find('.add_post_btn_container').addClass('is-hidden'); + this.newPostForm.removeClass('is-hidden'); + } + this.newPostView.$el.removeClass('is-hidden'); + this.toggleDiscussionBtn.addClass('shown'); + this.toggleDiscussionBtn.find('.button-text').text(gettext('Hide Discussion')); + this.showed = true; + }, + + onNewPostCreated: function() { + this.navigateToAllPosts(); + this.hideNewPost(); + }, + + hideNewPost: function() { + this.$('section.discussion').find('.inline-discussion-thread-container').removeClass('is-hidden'); + this.$('section.discussion').find('.add_post_btn_container') + .removeClass('is-hidden') + .focus(); + this.newPostForm.addClass('is-hidden'); + }, + + handleKeydown: function(event) { + var keyCode = event.keyCode; + if (keyCode === this.escKey) { + this.$('section.discussion').find('.cancel').trigger('click'); + } + } + }); +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_edit_view.js b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_edit_view.js new file mode 100644 index 00000000..29378548 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_edit_view.js @@ -0,0 +1,121 @@ +/* globals DiscussionTopicMenuView, DiscussionUtil */ +(function() { + 'use strict'; + + if (Backbone) { + this.DiscussionThreadEditView = Backbone.View.extend({ + tagName: 'form', + events: { + submit: 'updateHandler', + 'click .post-cancel': 'cancelHandler', + 'keypress input:not(.wmd-input)': function(event) { + return DiscussionUtil.ignoreEnterKey(event); + } + }, + + attributes: { + class: 'discussion-post edit-post-form' + }, + + initialize: function(options) { + this.container = options.container || $('.thread-content-wrapper'); + this.mode = options.mode || 'inline'; + this.startHeader = options.startHeader; + this.course_settings = options.course_settings; + this.threadType = this.model.get('thread_type'); + this.topicId = this.model.get('commentable_id'); + this.context = options.context || 'course'; + _.bindAll(this, 'updateHandler', 'cancelHandler'); + return this; + }, + + render: function() { + var formId = _.uniqueId('form-'), + threadTypeTemplate = edx.HtmlUtils.template($('#thread-type-template').html()), + $threadTypeSelector = $(threadTypeTemplate({form_id: formId}).toString()), + context, + mainTemplate = edx.HtmlUtils.template($('#thread-edit-template').html()); + context = $.extend({mode: this.mode, startHeader: this.startHeader}, this.model.attributes); + edx.HtmlUtils.setHtml(this.$el, mainTemplate(context)); + this.container.append(this.$el); + this.$submitBtn = this.$('.post-update'); + this.addField($threadTypeSelector); + this.$('#' + formId + '-post-type-' + this.threadType).attr('checked', true); + // Only allow the topic field for course threads, as standalone threads + // cannot be moved. + if (this.isTabMode()) { + this.topicView = new DiscussionTopicMenuView({ + topicId: this.topicId, + course_settings: this.course_settings + }); + this.addField(this.topicView.render()); + } + DiscussionUtil.makeWmdEditor(this.$el, $.proxy(this.$, this), 'edit-post-body'); + return this; + }, + + addField: function($fieldView) { + this.$('.forum-edit-post-form-wrapper').append($fieldView); + return this; + }, + + isTabMode: function() { + return this.mode === 'tab'; + }, + + save: function() { + var title = this.$('.edit-post-title').val(), + threadType = this.$('.input-radio:checked').val(), + body = this.$('.edit-post-body textarea').val(), + postData = { + title: title, + thread_type: threadType, + body: body + }; + if (this.topicView) { + postData.commentable_id = this.topicView.getCurrentTopicId(); + } + + return DiscussionUtil.safeAjax({ + $elem: this.$submitBtn, + $loading: this.$submitBtn, + url: DiscussionUtil.urlFor('update_thread', this.model.id), + type: 'POST', + dataType: 'json', + data: postData, + error: DiscussionUtil.formErrorHandler(this.$('.post-errors')), + success: function() { + this.$('.edit-post-title').val('').attr('prev-text', ''); + this.$('.edit-post-body textarea').val('').attr('prev-text', ''); + this.$('.wmd-preview p').html(''); + if (this.topicView) { + postData.courseware_title = this.topicView.getFullTopicName(); + } + this.model.set(postData).unset('abbreviatedBody'); + this.trigger('thread:updated'); + if (this.threadType !== threadType) { + this.model.set('thread_type', threadType); + this.model.trigger('thread:thread_type_updated'); + this.trigger('comment:endorse'); + } + }.bind(this) + }); + }, + + updateHandler: function(event) { + event.preventDefault(); + // this event is for the moment triggered and used nowhere. + this.trigger('thread:update', event); + this.save(); + return this; + }, + + cancelHandler: function(event) { + event.preventDefault(); + this.trigger('thread:cancel_edit', event); + this.remove(); + return this; + } + }); + } +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_list_view.js b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_list_view.js new file mode 100644 index 00000000..9202db53 --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_list_view.js @@ -0,0 +1,621 @@ +/* globals _, Backbone, Content, Discussion, DiscussionUtil, DiscussionThreadView, DiscussionThreadListView */ +(function() { + 'use strict'; + + /* eslint-disable */ + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + /* eslint-enable */ + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.DiscussionThreadListView = (function(_super) { + __extends(DiscussionThreadListView, _super); + + function DiscussionThreadListView() { + var self = this; + this.updateEmailNotifications = function() { + return DiscussionThreadListView.prototype.updateEmailNotifications.apply(self, arguments); + }; + this.retrieveFollowed = function() { + return DiscussionThreadListView.prototype.retrieveFollowed.apply(self, arguments); + }; + this.chooseGroup = function() { + return DiscussionThreadListView.prototype.chooseGroup.apply(self, arguments); + }; + this.chooseFilter = function() { + return DiscussionThreadListView.prototype.chooseFilter.apply(self, arguments); + }; + this.threadRemoved = function() { + return DiscussionThreadListView.prototype.threadRemoved.apply(self, arguments); + }; + this.threadSelected = function() { + return DiscussionThreadListView.prototype.threadSelected.apply(self, arguments); + }; + this.renderThread = function() { + return DiscussionThreadListView.prototype.renderThread.apply(self, arguments); + }; + this.loadMorePages = function() { + return DiscussionThreadListView.prototype.loadMorePages.apply(self, arguments); + }; + this.showMetadataAccordingToSort = function() { + return DiscussionThreadListView.prototype.showMetadataAccordingToSort.apply(self, arguments); + }; + this.renderThreads = function() { + return DiscussionThreadListView.prototype.renderThreads.apply(self, arguments); + }; + this.addAndSelectThread = function() { + return DiscussionThreadListView.prototype.addAndSelectThread.apply(self, arguments); + }; + this.reloadDisplayedCollection = function() { + return DiscussionThreadListView.prototype.reloadDisplayedCollection.apply(self, arguments); + }; + this.clearSearchAlerts = function() { + return DiscussionThreadListView.prototype.clearSearchAlerts.apply(self, arguments); + }; + this.removeSearchAlert = function() { + return DiscussionThreadListView.prototype.removeSearchAlert.apply(self, arguments); + }; + this.addSearchAlert = function() { + return DiscussionThreadListView.prototype.addSearchAlert.apply(self, arguments); + }; + this.performSearch = function() { + return DiscussionThreadListView.prototype.performSearch.apply(self, arguments); + }; + return DiscussionThreadListView.__super__.constructor.apply(this, arguments); // eslint-disable-line no-underscore-dangle, max-len + } + + DiscussionThreadListView.prototype.events = { + 'keypress .forum-nav-browse-filter-input': function(event) { + return DiscussionUtil.ignoreEnterKey(event); + }, + 'change .forum-nav-sort-control': 'sortThreads', + 'click .forum-nav-thread-link': 'threadSelected', + 'click .forum-nav-load-more-link': 'loadMorePages', + 'change .forum-nav-filter-main-control': 'chooseFilter', + 'change .forum-nav-filter-cohort-control': 'chooseGroup' + }; + + DiscussionThreadListView.prototype.initialize = function(options) { + var self = this; + this.courseSettings = options.courseSettings; + this.supportsActiveThread = options.supportsActiveThread; + this.hideReadState = options.hideReadState || false; + this.displayedCollection = new Discussion(this.collection.models, { + pages: this.collection.pages + }); + this.collection.on('change', this.reloadDisplayedCollection); + this.discussionIds = this.$el.data('discussion-id') || ''; + this.collection.on('reset', function(discussion) { + self.displayedCollection.current_page = discussion.current_page; + self.displayedCollection.pages = discussion.pages; + return self.displayedCollection.reset(discussion.models); + }); + this.collection.on('add', this.addAndSelectThread); + this.collection.on('thread:remove', this.threadRemoved); + this.sidebar_padding = 10; + this.boardName = null; + this.current_search = ''; + this.mode = options.mode || 'commentables'; + this.showThreadPreview = true; + this.searchAlertCollection = new Backbone.Collection([], { + model: Backbone.Model + }); + this.searchAlertCollection.on('add', function(searchAlert) { + var content; + content = edx.HtmlUtils.template($('#search-alert-template').html())({ + messageHtml: searchAlert.attributes.message, + cid: searchAlert.cid, + css_class: searchAlert.attributes.css_class + }); + edx.HtmlUtils.append(self.$('.search-alerts'), content); + return self.$('#search-alert-' + searchAlert.cid + ' .dismiss') + .bind('click', searchAlert, function(event) { + return self.removeSearchAlert(event.data.cid); + }); + }); + this.searchAlertCollection.on('remove', function(searchAlert) { + return self.$('#search-alert-' + searchAlert.cid).remove(); + }); + this.searchAlertCollection.on('reset', function() { + return self.$('.search-alerts').empty(); + }); + this.template = edx.HtmlUtils.template($('#thread-list-template').html()); + this.threadListItemTemplate = edx.HtmlUtils.template($('#thread-list-item-template').html()); + }; + + /** + * Creates search alert model and adds it to collection + * @param message - alert message + * @param cssClass - Allows setting custom css class for a message. This can be used to style messages + * of different types differently (i.e. other background, completely hide, etc.) + * @returns {Backbone.Model} + */ + DiscussionThreadListView.prototype.addSearchAlert = function(message, cssClass) { + var searchAlertModel = new Backbone.Model({message: message, css_class: cssClass || ''}); + this.searchAlertCollection.add(searchAlertModel); + return searchAlertModel; + }; + + DiscussionThreadListView.prototype.removeSearchAlert = function(searchAlert) { + return this.searchAlertCollection.remove(searchAlert); + }; + + DiscussionThreadListView.prototype.clearSearchAlerts = function() { + return this.searchAlertCollection.reset(); + }; + + DiscussionThreadListView.prototype.reloadDisplayedCollection = function(thread) { + var active, $content, $currentElement, threadId; + this.clearSearchAlerts(); + threadId = thread.get('id'); + $content = this.renderThread(thread); + $currentElement = this.$('.forum-nav-thread[data-id=' + threadId + ']'); + active = $currentElement.has('.forum-nav-thread-link.is-active').length !== 0; + $currentElement.replaceWith($content); + this.showMetadataAccordingToSort(); + if (this.supportsActiveThread && active) { + this.setActiveThread(threadId); + } + }; + + /* + TODO fix this entire chain of events + */ + + DiscussionThreadListView.prototype.addAndSelectThread = function(thread) { + var commentableId = thread.get('commentable_id'), + self = this; + return this.retrieveDiscussion(commentableId, function() { + return self.trigger('thread:created', thread.get('id')); + }); + }; + + DiscussionThreadListView.prototype.ignoreClick = function(event) { + return event.stopPropagation(); + }; + + DiscussionThreadListView.prototype.render = function() { + var self = this; + this.timer = 0; + this.$el.empty(); + edx.HtmlUtils.append( + this.$el, + this.template({ + isDiscussionDivisionEnabled: this.courseSettings.get('is_discussion_division_enabled'), + isPrivilegedUser: DiscussionUtil.isPrivilegedUser() + }) + ); + if (this.hideReadState) { + this.$('.forum-nav-filter-main').addClass('is-hidden'); + } + this.$('.forum-nav-sort-control option').removeProp('selected'); + this.$('.forum-nav-sort-control option[value=' + this.collection.sort_preference + ']') + .prop('selected', true); + this.displayedCollection.on('reset', this.renderThreads); + this.displayedCollection.on('thread:remove', this.renderThreads); + this.displayedCollection.on('change:commentable_id', function() { + if (self.mode === 'commentables') { + self.retrieveDiscussions(self.discussionIds.split(',')); + } + }); + this.renderThreads(); + return this; + }; + + DiscussionThreadListView.prototype.renderThreads = function() { + var $content, thread, i, len; + this.$('.forum-nav-thread-list').empty(); + for (i = 0, len = this.displayedCollection.models.length; i < len; i++) { + thread = this.displayedCollection.models[i]; + $content = this.renderThread(thread); + this.$('.forum-nav-thread-list').append($content); + } + if (this.$('.forum-nav-thread-list li').length === 0) { + this.clearSearchAlerts(); + this.addSearchAlert(gettext('There are no posts in this topic yet.')); + } + this.showMetadataAccordingToSort(); + this.renderMorePages(); + this.trigger('threads:rendered'); + }; + + DiscussionThreadListView.prototype.showMetadataAccordingToSort = function() { + var voteCounts = this.$('.forum-nav-thread-votes-count'), + unreadCommentCounts = this.$('.forum-nav-thread-unread-comments-count'), + commentCounts = this.$('.forum-nav-thread-comments-count'); + voteCounts.hide(); + commentCounts.hide(); + unreadCommentCounts.hide(); + switch (this.$('.forum-nav-sort-control').val()) { + case 'votes': + voteCounts.show(); + break; + default: + unreadCommentCounts.show(); + commentCounts.show(); + } + }; + + DiscussionThreadListView.prototype.renderMorePages = function() { + if (this.displayedCollection.hasMorePages()) { + edx.HtmlUtils.append( + this.$('.forum-nav-thread-list'), + edx.HtmlUtils.template($('#nav-load-more-link').html())({}) + ); + } + }; + + DiscussionThreadListView.prototype.getLoadingContent = function(srText) { + return edx.HtmlUtils.template($('#nav-loading-template').html())({srText: srText}); + }; + + DiscussionThreadListView.prototype.loadMorePages = function(event) { + var error, lastThread, loadMoreElem, loadingElem, options, ref, + self = this; + if (event) { + event.preventDefault(); + } + loadMoreElem = this.$('.forum-nav-load-more'); + loadMoreElem.empty(); + edx.HtmlUtils.append(loadMoreElem, this.getLoadingContent(gettext('Loading more threads'))); + loadingElem = loadMoreElem.find('.forum-nav-loading'); + DiscussionUtil.makeFocusTrap(loadingElem); + loadingElem.focus(); + options = { + filter: this.filter + }; + switch (this.mode) { + case 'search': + options.search_text = this.current_search; + if (this.group_id) { + options.group_id = this.group_id; + } + break; + case 'followed': + options.user_id = window.user.id; + break; + case 'user': + options.user_id = this.$el.parent().data('user-id'); + break; + case 'commentables': + options.commentable_ids = this.discussionIds; + if (this.group_id) { + options.group_id = this.group_id; + } + break; + case 'all': + if (this.group_id) { + options.group_id = this.group_id; + } + break; + default: + } + ref = this.collection.last(); + // eslint-disable-next-line no-void + lastThread = ref ? ref.get('id') : void 0; + if (lastThread) { + this.once('threads:rendered', function() { + var classSelector = ".forum-nav-thread[data-id='" + lastThread + "'] + .forum-nav-thread " + + '.forum-nav-thread-link'; + return $(classSelector).focus(); + }); + } else { + this.once('threads:rendered', function() { + var ref1 = $('.forum-nav-thread-link').first(); + // eslint-disable-next-line no-void + return ref1 ? ref1.focus() : void 0; + }); + } + error = function() { + self.renderThreads(); + DiscussionUtil.discussionAlert( + gettext('Error'), + gettext('Additional posts could not be loaded. Refresh the page and try again.') + ); + }; + /* + The options object is being passed to the function below from discussion/discussion.js + which correspondingly forms the ajax url based on the mode via the DiscussionUtil.urlFor + from discussion/utils.js + */ + return this.collection.retrieveAnotherPage(this.mode, options, { + sort_key: this.$('.forum-nav-sort-control').val() + }, error); + }; + + DiscussionThreadListView.prototype.containsMarkup = function(threadBody) { + var imagePostSearchString = '![', + mathJaxSearchString = /\$/g, + containsImages = threadBody.indexOf(imagePostSearchString) !== -1, + // mathJax has to have at least 2 dollar signs + containsMathJax = (threadBody.match(mathJaxSearchString) || []).length > 1; + return containsImages || containsMathJax; + }; + + DiscussionThreadListView.prototype.renderThread = function(thread) { + var threadCommentCount = thread.get('comments_count'), + threadUnreadCommentCount = thread.get('unread_comments_count'), + neverRead = !thread.get('read') && threadUnreadCommentCount === threadCommentCount, + threadPreview = this.containsMarkup(thread.get('body')) ? '' : thread.get('body'), + context = _.extend( + { + neverRead: neverRead, + threadUrl: thread.urlFor('retrieve'), + threadPreview: threadPreview, + showThreadPreview: this.showThreadPreview, + hideReadState: this.hideReadState + }, + thread.toJSON() + ); + var $threadHTML = $(this.threadListItemTemplate(context).toString()); + var previewBody = $threadHTML.find('.thread-preview-body').text(); + previewBody = new DOMParser().parseFromString(previewBody, 'text/html').documentElement.textContent; + $threadHTML.find('.thread-preview-body').text(previewBody); + return $threadHTML; + }; + + DiscussionThreadListView.prototype.threadSelected = function(e) { + var threadId; + threadId = $(e.target).closest('.forum-nav-thread').attr('data-id'); + if (this.supportsActiveThread) { + this.setActiveThread(threadId); + } + this.trigger('thread:selected', threadId); + return false; + }; + + DiscussionThreadListView.prototype.threadRemoved = function(thread) { + this.trigger('thread:removed', thread); + }; + + DiscussionThreadListView.prototype.setActiveThread = function(threadId) { + var $srElem; + this.$('.forum-nav-thread-link').find('.sr').remove(); + this.$(".forum-nav-thread[data-id!='" + threadId + "'] .forum-nav-thread-link") + .removeClass('is-active'); + $srElem = edx.HtmlUtils.joinHtml( + edx.HtmlUtils.HTML(''), + edx.HtmlUtils.ensureHtml(gettext('Current conversation')), + edx.HtmlUtils.HTML('') + ).toString(); + this.$(".forum-nav-thread[data-id='" + threadId + "'] .forum-nav-thread-link") + .addClass('is-active').find('.forum-nav-thread-wrapper-1') + .prepend($srElem); + }; + + DiscussionThreadListView.prototype.selectTopic = function($target) { + var allItems, discussionIds, $item; + $item = $target.closest('.forum-nav-browse-menu-item'); + + if ($item.hasClass('forum-nav-browse-menu-all')) { + this.discussionIds = ''; + this.$('.forum-nav-filter-cohort').show(); + return this.retrieveAllThreads(); + } else if ($item.hasClass('forum-nav-browse-menu-following')) { + this.retrieveFollowed(); + return this.$('.forum-nav-filter-cohort').hide(); + } else { + allItems = $item.find('.forum-nav-browse-menu-item').andSelf(); + discussionIds = allItems.filter('[data-discussion-id]').map(function(i, elem) { + return $(elem).data('discussion-id'); + }).get(); + this.retrieveDiscussions(discussionIds); + return this.$('.forum-nav-filter-cohort').toggle($item.data('divided') === true); + } + }; + + DiscussionThreadListView.prototype.chooseFilter = function() { + this.filter = $('.forum-nav-filter-main-control :selected').val(); + this.clearSearchAlerts(); + return this.retrieveFirstPage(); + }; + + DiscussionThreadListView.prototype.chooseGroup = function() { + this.group_id = this.$('.forum-nav-filter-cohort-control :selected').val(); + return this.retrieveFirstPage(); + }; + + DiscussionThreadListView.prototype.retrieveDiscussion = function(discussionId, callback) { + var url = DiscussionUtil.urlFor('retrieve_discussion', discussionId), + self = this; + return DiscussionUtil.safeAjax({ + url: url, + type: 'GET', + success: function(response) { + self.collection.current_page = response.page; + self.collection.pages = response.num_pages; + self.collection.reset(response.discussion_data); + Content.loadContentInfos(response.annotated_content_info); + self.displayedCollection.reset(self.collection.models); + if (callback) { + callback(); + } + } + }); + }; + + DiscussionThreadListView.prototype.retrieveDiscussions = function(discussionIds) { + this.discussionIds = discussionIds.join(','); + this.mode = 'commentables'; + return this.retrieveFirstPage(); + }; + + DiscussionThreadListView.prototype.retrieveAllThreads = function() { + this.mode = 'all'; + return this.retrieveFirstPage(); + }; + + DiscussionThreadListView.prototype.retrieveFirstPage = function(event) { + this.collection.current_page = 0; + this.$('.forum-nav-thread-list').empty(); + this.collection.models = []; + return this.loadMorePages(event); + }; + + DiscussionThreadListView.prototype.sortThreads = function(event) { + this.displayedCollection.setSortComparator(this.$('.forum-nav-sort-control').val()); + return this.retrieveFirstPage(event); + }; + + DiscussionThreadListView.prototype.performSearch = function($searchInput) { + // trigger this event so the breadcrumbs can update as well + this.trigger('search:initiated'); + this.searchFor($searchInput.val(), $searchInput); + }; + + DiscussionThreadListView.prototype.searchFor = function(text, $searchInput) { + var url = DiscussionUtil.urlFor('search'), + self = this; + this.clearSearchAlerts(); + this.clearFilters(); + this.mode = 'search'; + this.current_search = text; + /* + TODO: This might be better done by setting discussion.current_page=0 and + calling discussion.loadMorePages + Mainly because this currently does not reset any pagination variables which could cause problems. + This doesn't use pagination either. + */ + + return DiscussionUtil.safeAjax({ + $elem: $searchInput, + data: { + text: text + }, + url: url, + type: 'GET', + dataType: 'json', + $loading: $, + loadingCallback: function() { + var element = self.$('.forum-nav-thread-list'); + element.empty(); + edx.HtmlUtils.append( + element, + edx.HtmlUtils.joinHtml( + edx.HtmlUtils.HTML("
  • "), + self.getLoadingContent(gettext('Loading posts list')), + edx.HtmlUtils.HTML('
  • ') + ) + ); + }, + loadedCallback: function() { + return self.$('.forum-nav-thread-list .forum-nav-load-more').remove(); + }, + success: function(response, textStatus) { + var message, noResponseMsg; + if (textStatus === 'success') { + self.collection.reset(response.discussion_data); + self.clearSearchAlerts(); + Content.loadContentInfos(response.annotated_content_info); + self.collection.current_page = response.page; + self.collection.pages = response.num_pages; + if (!_.isNull(response.corrected_text)) { + noResponseMsg = _.escape( + gettext( + 'No results found for {original_query}. ' + + 'Showing results for {suggested_query}.' + ) + ); + message = edx.HtmlUtils.interpolateHtml( + noResponseMsg, + { + original_query: edx.HtmlUtils.joinHtml( + edx.HtmlUtils.HTML(''), text, edx.HtmlUtils.HTML('') + ), + suggested_query: edx.HtmlUtils.joinHtml( + edx.HtmlUtils.HTML(''), + response.corrected_text, + edx.HtmlUtils.HTML('') + ) + } + ); + self.addSearchAlert(message); + } else if (response.discussion_data.length === 0) { + self.addSearchAlert(gettext('No posts matched your query.')); + self.displayedCollection.models = []; + } + if (self.collection.models.length !== 0) { + self.displayedCollection.reset(self.collection.models); + } + if (text) { + return self.searchForUser(text); + } + } + return response; + } + }); + }; + + DiscussionThreadListView.prototype.searchForUser = function(text) { + var self = this; + return DiscussionUtil.safeAjax({ + data: { + username: text + }, + url: DiscussionUtil.urlFor('users'), + type: 'GET', + dataType: 'json', + error: function() {}, + success: function(response) { + var message, username; + if (response.users.length > 0) { + username = edx.HtmlUtils.joinHtml( + edx.HtmlUtils.interpolateHtml( + edx.HtmlUtils.HTML('
    '), + {url: DiscussionUtil.urlFor('user_profile', response.users[0].id)} + ), + response.users[0].username, + edx.HtmlUtils.HTML('') + ); + + message = edx.HtmlUtils.interpolateHtml( + gettext('Show posts by {username}.'), {username: username} + ); + self.addSearchAlert(message, 'search-by-user'); + } + } + }); + }; + + DiscussionThreadListView.prototype.clearFilters = function() { + this.$('.forum-nav-filter-main-control').val('all'); + return this.$('.forum-nav-filter-cohort-control').val('all'); + }; + + DiscussionThreadListView.prototype.retrieveFollowed = function() { + this.mode = 'followed'; + return this.retrieveFirstPage(); + }; + + DiscussionThreadListView.prototype.updateEmailNotifications = function() { + var $checkbox, checked, urlName; + $checkbox = $('input.email-setting'); + checked = $checkbox.prop('checked'); + urlName = (checked) ? 'enable_notifications' : 'disable_notifications'; + DiscussionUtil.safeAjax({ + url: DiscussionUtil.urlFor(urlName), + type: 'POST', + error: function() { + $checkbox.prop('checked', !checked); + } + }); + }; + + return DiscussionThreadListView; + }).call(this, Backbone.View); + } +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_profile_view.js b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_profile_view.js new file mode 100644 index 00000000..113196eb --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_profile_view.js @@ -0,0 +1,68 @@ +/* globals DiscussionUtil, MathJax */ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.DiscussionThreadProfileView = (function(_super) { + __extends(DiscussionThreadProfileView, _super); + + function DiscussionThreadProfileView() { + return DiscussionThreadProfileView.__super__.constructor.apply(this, arguments); + } + + DiscussionThreadProfileView.prototype.render = function() { + var params; + this.convertMath(); + this.abbreviateBody(); + params = $.extend(this.model.toJSON(), { + permalink: this.model.urlFor('retrieve') + }); + if (!this.model.get('anonymous')) { + params = $.extend(params, { + user: { + username: this.model.username, + user_url: this.model.user_url + } + }); + } + edx.HtmlUtils.setHtml( + this.$el, + edx.HtmlUtils.template($('#profile-thread-template').html())(params) + ); + this.$('span.timeago').timeago(); + DiscussionUtil.typesetMathJax(this.$('.post-body')); + return this; + }; + + DiscussionThreadProfileView.prototype.convertMath = function() { + var htmlSnippet = DiscussionUtil.markdownWithHighlight(this.model.get('body')); + this.model.set('markdownBody', htmlSnippet); + }; + + DiscussionThreadProfileView.prototype.abbreviateBody = function() { + var abbreviated; + abbreviated = DiscussionUtil.abbreviateHTML(this.model.get('markdownBody'), 140); + this.model.set('abbreviatedBody', abbreviated); + }; + + return DiscussionThreadProfileView; + }(Backbone.View)); + } +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_show_view.js b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_show_view.js new file mode 100644 index 00000000..536f6cfa --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_show_view.js @@ -0,0 +1,83 @@ +/* globals DiscussionUtil, DiscussionContentShowView, MathJax */ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.DiscussionThreadShowView = (function(_super) { + __extends(DiscussionThreadShowView, _super); + + function DiscussionThreadShowView() { + return DiscussionThreadShowView.__super__.constructor.apply(this, arguments); + } + + DiscussionThreadShowView.prototype.initialize = function(options) { + var _ref; + DiscussionThreadShowView.__super__.initialize.call(this); + this.mode = options.mode || 'inline'; + this.startHeader = options.startHeader; + this.is_commentable_divided = options.is_commentable_divided; + // eslint-disable-next-line no-cond-assign + if ((_ref = this.mode) !== 'tab' && _ref !== 'inline') { + throw new Error('invalid mode: ' + this.mode); + } + }; + + DiscussionThreadShowView.prototype.renderTemplate = function() { + var context = $.extend({ + mode: this.mode, + startHeader: this.startHeader, + flagged: this.model.isFlagged(), + is_commentable_divided: this.is_commentable_divided, + author_display: this.getAuthorDisplay(), + cid: this.model.cid, + readOnly: $('.discussion-module').data('read-only') + }, this.model.attributes); + return edx.HtmlUtils.template($('#thread-show-template').html())(context); + }; + + DiscussionThreadShowView.prototype.render = function() { + edx.HtmlUtils.setHtml( + this.$el, + this.renderTemplate() + ); + this.delegateEvents(); + this.renderAttrs(); + this.$('span.timeago').timeago(); + this.convertMath(); + return this; + }; + + DiscussionThreadShowView.prototype.convertMath = function() { + DiscussionUtil.convertMath(this.$('.post-body')); + DiscussionUtil.typesetMathJax(this.$('.post-body')); + }; + + DiscussionThreadShowView.prototype.edit = function(event) { + return this.trigger('thread:edit', event); + }; + + DiscussionThreadShowView.prototype._delete = function(event) { + return this.trigger('thread:_delete', event); + }; + + return DiscussionThreadShowView; + }(DiscussionContentShowView)); + } +}).call(window); diff --git a/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_view.js b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_view.js new file mode 100644 index 00000000..0deb418a --- /dev/null +++ b/xblocks_contrib/discussion/assets/static/js/common/views/discussion_thread_view.js @@ -0,0 +1,478 @@ +/* globals + Comments, Content, DiscussionContentView, DiscussionThreadEditView, + DiscussionThreadShowView, DiscussionUtil, ThreadResponseView +*/ +(function() { + 'use strict'; + + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for (var key in parent) { + if (__hasProp.call(parent, key)) { + child[key] = parent[key]; + } + } + function ctor() { + this.constructor = child; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + if (typeof Backbone !== 'undefined' && Backbone !== null) { + this.DiscussionThreadView = (function(_super) { + var INITIAL_RESPONSE_PAGE_SIZE, SUBSEQUENT_RESPONSE_PAGE_SIZE; + + __extends(DiscussionThreadView, _super); + + function DiscussionThreadView() { + var self = this; + this._delete = function() { + return DiscussionThreadView.prototype._delete.apply(self, arguments); + }; + this.closeEditView = function() { + return DiscussionThreadView.prototype.closeEditView.apply(self, arguments); + }; + this.edit = function() { + return DiscussionThreadView.prototype.edit.apply(self, arguments); + }; + this.endorseThread = function() { + return DiscussionThreadView.prototype.endorseThread.apply(self, arguments); + }; + this.addComment = function() { + return DiscussionThreadView.prototype.addComment.apply(self, arguments); + }; + this.renderAddResponseButton = function() { + return DiscussionThreadView.prototype.renderAddResponseButton.apply(self, arguments); + }; + this.renderResponseToList = function() { + return DiscussionThreadView.prototype.renderResponseToList.apply(self, arguments); + }; + this.renderResponseCountAndPagination = function() { + return DiscussionThreadView.prototype.renderResponseCountAndPagination.apply(self, arguments); + }; + return DiscussionThreadView.__super__.constructor.apply(this, arguments); + } + + INITIAL_RESPONSE_PAGE_SIZE = 25; + + SUBSEQUENT_RESPONSE_PAGE_SIZE = 100; + + DiscussionThreadView.prototype.events = { + 'click .discussion-submit-post': 'submitComment', + 'click .add-response-btn': 'scrollToAddResponse', + 'keydown .wmd-button': function(event) { + return DiscussionUtil.handleKeypressInToolbar(event); + } + }; + + DiscussionThreadView.prototype.$ = function(selector) { + return this.$el.find(selector); + }; + + DiscussionThreadView.prototype.isQuestion = function() { + return this.model.get('thread_type') === 'question'; + }; + + DiscussionThreadView.prototype.initialize = function(options) { + var _ref, + self = this; + DiscussionThreadView.__super__.initialize.call(this); + this.mode = options.mode || 'inline'; + this.context = options.context || 'course'; + this.options = _.extend({}, options); + this.startHeader = options.startHeader; + // eslint-disable-next-line no-cond-assign + if ((_ref = this.mode) !== 'tab' && _ref !== 'inline') { + throw new Error('invalid mode: ' + this.mode); + } + this.readOnly = $('.discussion-module').data('read-only'); + this.model.collection.on('reset', function(collection) { + var id; + id = self.model.get('id'); + if (collection.get(id)) { + self.model = collection.get(id); + } + }); + this.is_commentable_divided = options.is_commentable_divided; + this.createShowView(); + this.responses = new Comments(); + this.loadedResponses = false; + if (this.isQuestion()) { + this.markedAnswers = new Comments(); + } + }; + + DiscussionThreadView.prototype.rerender = function() { + if (this.showView) { + this.showView.undelegateEvents(); + } + this.undelegateEvents(); + this.$el.empty(); + this.initialize({ + mode: this.mode, + model: this.model, + el: this.el, + courseSettings: this.options.courseSettings, + topicId: this.topicId + }); + return this.render(); + }; + + DiscussionThreadView.prototype.renderTemplate = function() { + var $container, + templateData; + this.template = _.template($('#thread-template').html()); + $container = $('#discussion-container'); + if (!$container.length) { + $container = $('.discussion-module'); + } + templateData = _.extend(this.model.toJSON(), { + readOnly: this.readOnly, + startHeader: this.startHeader + 1, // this is a child so headers should be increased + can_create_comment: $container.data('user-create-comment') + }); + return this.template(templateData); + }; + + DiscussionThreadView.prototype.render = function() { + var self = this; + var $element = $(this.renderTemplate()); + this.$el.empty(); + this.$el.append($element); + this.delegateEvents(); + this.renderShowView(); + this.renderAttrs(); + this.$('span.timeago').timeago(); + this.makeWmdEditor('reply-body'); + this.renderAddResponseButton(); + this.responses.on('add', function(response) { + return self.renderResponseToList(response, '.js-response-list', {}); + }); + if (this.isQuestion()) { + this.markedAnswers.on('add', function(response) { + return self.renderResponseToList(response, '.js-marked-answer-list', { + collapseComments: true + }); + }); + } + this.loadInitialResponses(); + }; + + DiscussionThreadView.prototype.attrRenderer = $.extend({}, DiscussionContentView.prototype.attrRenderer, { + closed: function(closed) { + this.$('.discussion-reply-new').toggle(!closed); + this.$('.comment-form').closest('li').toggle(!closed); + this.$('.action-vote').toggle(!closed); + this.$('.display-vote').toggle(closed); + return this.renderAddResponseButton(); + } + }); + + DiscussionThreadView.prototype.cleanup = function() { + // jQuery.ajax after 1.5 returns a jqXHR which doesn't implement .abort + // but I don't feel confident enough about what's going on here to remove this code + // so just check to make sure we can abort before we try to + if (this.responsesRequest && this.responsesRequest.abort) { + return this.responsesRequest.abort(); + } + }; + + DiscussionThreadView.prototype.loadResponses = function(responseLimit, $elem, firstLoad) { + var self = this; + this.responsesRequest = DiscussionUtil.safeAjax({ + url: DiscussionUtil.urlFor( + 'retrieve_single_thread', this.model.get('commentable_id'), this.model.id + ), + data: { + resp_skip: this.responses.size(), + // eslint-disable-next-line no-void + resp_limit: responseLimit || void 0 + }, + $elem: $elem, + $loading: $elem, + takeFocus: false, + complete: function() { + self.responsesRequest = null; + }, + success: function(data) { + Content.loadContentInfos(data.annotated_content_info); + if (self.isQuestion()) { + self.markedAnswers.add(data.content.endorsed_responses); + } + self.responses.add( + self.isQuestion() ? data.content.non_endorsed_responses : data.content.children + ); + self.renderResponseCountAndPagination( + self.isQuestion() + ? data.content.non_endorsed_resp_total + : data.content.resp_total + ); + self.trigger('thread:responses:rendered'); + self.loadedResponses = true; + }, + error: function(xhr, textStatus) { + if (textStatus === 'abort') { + return; + } + if (xhr.status === 404) { + DiscussionUtil.discussionAlert( + gettext('Error'), + gettext('The post you selected has been deleted.') + ); + } else if (firstLoad) { + DiscussionUtil.discussionAlert( + gettext('Error'), + gettext('Responses could not be loaded. Refresh the page and try again.') + ); + } else { + DiscussionUtil.discussionAlert( + gettext('Error'), + gettext('Additional responses could not be loaded. Refresh the page and try again.') + ); + } + } + }); + }; + + DiscussionThreadView.prototype.loadInitialResponses = function() { + return this.loadResponses(INITIAL_RESPONSE_PAGE_SIZE, this.$el.find('.js-response-list'), true); + }; + + DiscussionThreadView.prototype.renderResponseCountAndPagination = function(responseTotal) { + var buttonText, $loadMoreButton, responseCountFormat, responseLimit, responsePagination, + responsesRemaining, showingResponsesText, + self = this; + if (this.isQuestion() && this.markedAnswers.length !== 0) { + responseCountFormat = ngettext( + '{numResponses} other response', '{numResponses} other responses', responseTotal + ); + if (responseTotal === 0) { + this.$el.find('.response-count').hide(); + } + } else { + responseCountFormat = ngettext( + '{numResponses} response', '{numResponses} responses', responseTotal + ); + } + this.$el.find('.response-count').text( + edx.StringUtils.interpolate(responseCountFormat, {numResponses: responseTotal}, true) + ); + + responsePagination = this.$el.find('.response-pagination'); + responsePagination.empty(); + if (responseTotal > 0) { + responsesRemaining = responseTotal - this.responses.size(); + if (responsesRemaining === 0) { + showingResponsesText = gettext('Showing all responses'); + } else { + showingResponsesText = edx.StringUtils.interpolate( + ngettext( + 'Showing first response', 'Showing first {numResponses} responses', + this.responses.size() + ), + {numResponses: this.responses.size()}, + true + ); + } + + responsePagination.append($('') + .addClass('response-display-count').text(showingResponsesText)); + if (responsesRemaining > 0) { + if (responsesRemaining < SUBSEQUENT_RESPONSE_PAGE_SIZE) { + responseLimit = null; + buttonText = gettext('Load all responses'); + } else { + responseLimit = SUBSEQUENT_RESPONSE_PAGE_SIZE; + buttonText = edx.StringUtils.interpolate(gettext('Load next {numResponses} responses'), { + numResponses: responseLimit + }, true); + } + $loadMoreButton = $(' + +
    + diff --git a/xblocks_contrib/discussion/templates/discussion_templates/_thread_list_template.html b/xblocks_contrib/discussion/templates/discussion_templates/_thread_list_template.html new file mode 100644 index 00000000..f26180c8 --- /dev/null +++ b/xblocks_contrib/discussion/templates/discussion_templates/_thread_list_template.html @@ -0,0 +1,55 @@ +{% load i18n %} + + diff --git a/xblocks_contrib/discussion/templates/discussion_templates/_underscore_templates.html b/xblocks_contrib/discussion/templates/discussion_templates/_underscore_templates.html new file mode 100644 index 00000000..3cdb6fed --- /dev/null +++ b/xblocks_contrib/discussion/templates/discussion_templates/_underscore_templates.html @@ -0,0 +1,19 @@ +{% load static %} + + + +{% include "discussion_templates/templates.underscore" %} diff --git a/xblocks_contrib/discussion/templates/discussion_templates/templates.underscore b/xblocks_contrib/discussion/templates/discussion_templates/templates.underscore new file mode 100644 index 00000000..22204f4b --- /dev/null +++ b/xblocks_contrib/discussion/templates/discussion_templates/templates.underscore @@ -0,0 +1,889 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xblocks_contrib/discussion/tests/test_discussion.py b/xblocks_contrib/discussion/tests/test_discussion.py index be914768..67073684 100644 --- a/xblocks_contrib/discussion/tests/test_discussion.py +++ b/xblocks_contrib/discussion/tests/test_discussion.py @@ -1,26 +1,185 @@ -""" -Tests for DiscussionXBlock -""" - -from django.test import TestCase -from xblock.fields import ScopeIds -from xblock.test.toy_runtime import ToyRuntime - -from xblocks_contrib import DiscussionXBlock - - -class TestDiscussionXBlock(TestCase): - """Tests for DiscussionXBlock""" - - def test_my_student_view(self): - """Test the basic view loads.""" - scope_ids = ScopeIds("1", "2", "3", "4") - block = DiscussionXBlock(ToyRuntime(), scope_ids=scope_ids) - frag = block.student_view() - as_dict = frag.to_dict() - content = as_dict["content"] - self.assertIn( - "DiscussionXBlock: count is now", - content, - "XBlock did not render correct student view", +""" Tests for DiscussionXBLock""" + + +import itertools +import random +import string +from collections import namedtuple +from unittest import TestCase, mock + +import ddt +from lxml import etree +from xblock.field_data import DictFieldData +from xblock.fields import NO_CACHE_VALUE, UNIQUE_ID, ScopeIds +from xblock.runtime import Runtime + +from xblocks_contrib.discussion import DiscussionXBlock + + +def attribute_pair_repr(self): + """ + Custom string representation for the AttributePair namedtuple which is + consistent between test runs. + """ + return f'' + + +AttributePair = namedtuple("AttributePair", ["name", "value"]) +AttributePair.__repr__ = attribute_pair_repr + + +ID_ATTR_NAMES = ("discussion_id",) +CATEGORY_ATTR_NAMES = ("discussion_category",) +TARGET_ATTR_NAMES = ("discussion_target",) + + +def _random_string(): + """ + Generates random string + """ + return ''.join(random.choice(string.ascii_lowercase, ) for _ in range(12)) + + +def _make_attribute_test_cases(): + """ + Builds test cases for attribute-dependent tests + """ + attribute_names = itertools.product(ID_ATTR_NAMES, CATEGORY_ATTR_NAMES, TARGET_ATTR_NAMES) + for id_attr, category_attr, target_attr in attribute_names: + yield ( + AttributePair(id_attr, _random_string()), + AttributePair(category_attr, _random_string()), + AttributePair(target_attr, _random_string()) ) + + +@ddt.ddt +class DiscussionXBlockImportExportTests(TestCase): + """ + Import and export tests + """ + DISCUSSION_XBLOCK_LOCATION = "xblocks_contrib.discussion.DiscussionXBlock" + + def setUp(self): + """ + Set up method + """ + super().setUp() + self.keys = ScopeIds("any_user", "discussion", "def_id", "usage_id") + self.runtime_mock = mock.Mock(spec=Runtime) + self.runtime_mock.construct_xblock_from_class = mock.Mock(side_effect=self._construct_xblock_mock) + self.runtime_mock.get_policy = mock.Mock(return_value={}) + + def _construct_xblock_mock(self, cls, keys): # pylint: disable=unused-argument + """ + Builds target xblock instance (DiscussionXBlock) + + Signature-compatible with runtime.construct_xblock_from_class - can be used as a mock side-effect + """ + return DiscussionXBlock(self.runtime_mock, scope_ids=keys, field_data=DictFieldData({})) + + @mock.patch(DISCUSSION_XBLOCK_LOCATION + ".load_definition_xml") + @ddt.unpack + @ddt.data(*list(_make_attribute_test_cases())) + def test_xblock_export_format(self, id_pair, category_pair, target_pair, patched_load_definition_xml): + """ + Test that xblock export XML format can be parsed preserving field values + """ + xblock_xml = """ + + """.format( + id_attr=id_pair.name, id_value=id_pair.value, + category_attr=category_pair.name, category_value=category_pair.value, + target_attr=target_pair.name, target_value=target_pair.value, + ) + node = etree.fromstring(xblock_xml) + + patched_load_definition_xml.side_effect = Exception("Irrelevant") + + block = DiscussionXBlock.parse_xml(node, self.runtime_mock, self.keys) + try: + assert block.discussion_id == id_pair.value + assert block.discussion_category == category_pair.value + assert block.discussion_target == target_pair.value + except AssertionError: + print(xblock_xml) + raise + + @mock.patch(DISCUSSION_XBLOCK_LOCATION + ".load_definition_xml") + @ddt.unpack + @ddt.data(*(_make_attribute_test_cases())) + def test_legacy_export_format(self, id_pair, category_pair, target_pair, patched_load_definition_xml): + """ + Test that legacy export XML format can be parsed preserving field values + """ + xblock_xml = """""" + xblock_definition_xml = """ + """.format( + id_attr=id_pair.name, id_value=id_pair.value, + category_attr=category_pair.name, category_value=category_pair.value, + target_attr=target_pair.name, target_value=target_pair.value, + ) + node = etree.fromstring(xblock_xml) + definition_node = etree.fromstring(xblock_definition_xml) + + patched_load_definition_xml.return_value = (definition_node, "irrelevant") + + block = DiscussionXBlock.parse_xml(node, self.runtime_mock, self.keys) + try: + assert block.discussion_id == id_pair.value + assert block.discussion_category == category_pair.value + assert block.discussion_target == target_pair.value + except AssertionError: + print(xblock_xml, xblock_definition_xml) + raise + + def test_export_default_discussion_id(self): + """ + Test that default discussion_id values are not exported. + + Historically, the OLX format allowed omitting discussion ID values; in such case, the IDs are generated + deterministically based on the course ID and the usage ID. Moreover, Studio does not allow course authors + to edit discussion_id, so all courses authored in Studio have discussion_id omitted in OLX. + + Forcing Studio to always export discussion_id can cause data loss when switching between an older and newer + export, in a course with a course ID different from the one from which the export was created - because the + discussion ID would be different. + """ + target_node = etree.Element('dummy') + + block = DiscussionXBlock(self.runtime_mock, scope_ids=self.keys, field_data=DictFieldData({})) + discussion_id_field = block.fields['discussion_id'] # pylint: disable=unsubscriptable-object + + # precondition checks - discussion_id does not have a value and uses UNIQUE_ID + assert discussion_id_field._get_cached_value(block) == NO_CACHE_VALUE # pylint: disable=W0212 + assert discussion_id_field.default == UNIQUE_ID + + block.add_xml_to_node(target_node) + assert target_node.tag == 'discussion' # pylint: disable=W0212 + assert 'discussion_id' not in target_node.attrib + + @ddt.data("jediwannabe", "iddqd", "itisagooddaytodie") + def test_export_custom_discussion_id(self, discussion_id): + """ + Test that custom discussion_id values are exported + """ + target_node = etree.Element('dummy') + + block = DiscussionXBlock(self.runtime_mock, scope_ids=self.keys, field_data=DictFieldData({})) + block.discussion_id = discussion_id + + # precondition check + assert block.discussion_id == discussion_id + + block.add_xml_to_node(target_node) + assert target_node.tag == 'discussion' + assert target_node.attrib['discussion_id'], discussion_id